Loading modules/ai_ckeditor/js/build/ai_balloon_menu.js 0 → 100644 +1 −0 Changes for modules/ai_ckeditor/js/build/ai_balloon_menu.js: 1 added line, 0 removed lines. Original line number Diff line number Diff line !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.ai_balloon_menu=t())}(self,(()=>(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(o){var l=t[o];if(void 0!==l)return l.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,i),n.exports}i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};return(()=>{"use strict";i.d(o,{default:()=>s});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/ui.js");var l=i("ckeditor5/src/utils.js");class n extends e.Plugin{static get requires(){return[t.ContextualBalloon]}init(){this.editor.config.get("ai_ckeditor_ai")&&(this._balloon=this.editor.plugins.get(t.ContextualBalloon),this._createMenuView(),this._enableBalloonMenuOnSelection())}_createMenuView(){const e=this.editor,i=this.editor.config.get("ai_ckeditor_ai"),o=e.locale,n=new l.Collection;void 0!==i.plugins&&Object.keys(i.plugins).forEach((function(e){i.plugins[e].enabled&&n.add({type:"button",model:{isEnabled:i.plugins[e].enabled,label:i.plugins[e].meta.label,withText:!0,command:"AiDrupalDialog",group:"ai_ckeditor_ai",plugin_id:e}})})),this.menuView=(0,t.createDropdown)(o),this.menuView.buttonView.set({label:"AI Assistant",withText:!0,tooltip:!1,icon:'<svg viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">\n <g fill="#000000">\n <path d="m121.59 60.83-13.93-4.49c-8.91-2.94-14.13-10.15-16.58-19.21l-6.13-29.86c-.16-.59-.55-1.38-1.75-1.38-1.01 0-1.59.79-1.75 1.38l-6.13 29.87c-2.46 9.06-7.67 16.27-16.58 19.21l-13.93 4.49c-1.97.64-2 3.42-.04 4.09l14.03 4.83c8.88 2.95 14.06 10.15 16.52 19.17l6.14 29.53c.16.59.49 1.65 1.75 1.65 1.33 0 1.59-1.06 1.75-1.65l6.14-29.53c2.46-9.03 7.64-16.23 16.52-19.17l14.03-4.83c1.94-.68 1.91-3.46-.06-4.1z"/>\n <path d="m41.81 86.81c-8.33-2.75-9.09-5.85-10.49-11.08l-3.49-12.24c-.21-.79-2.27-.79-2.49 0l-2.37 11.31c-1.41 5.21-4.41 9.35-9.53 11.04l-8.16 3.54c-1.13.37-1.15 1.97-.02 2.35l8.22 2.91c5.1 1.69 8.08 5.83 9.5 11.02l2.37 10.82c.22.79 2.27.79 2.48 0l2.78-10.77c1.41-5.22 3.57-9.37 10.5-11.07l7.72-2.91c1.13-.39 1.12-1.99-.02-2.36z"/>\n <path d="m59.74 28.14c.56-.19.54-.99-.03-1.15l-7.72-2.08c-1.62-.44-2.88-1.69-3.34-3.3l-3.04-12.55c-.15-.61-1.02-.61-1.17.01l-2.86 12.5c-.44 1.66-1.74 2.94-3.4 3.37l-7.67 1.99c-.57.15-.61.95-.05 1.15l8.09 2.8c1.45.5 2.57 1.68 3.01 3.15l2.89 11.59c.15.6 1.01.61 1.16 0l2.99-11.63c.45-1.47 1.58-2.64 3.04-3.13z"/>\n </g>\n</svg>\n'}),(0,t.addListToDropdown)(this.menuView,n),this.listenTo(this.menuView,"execute",(e=>{this.editor.execute(e.source.command,e.source.group,e.source.plugin_id,e.source.label),this._hideMenu()})),(0,t.clickOutsideHandler)({emitter:this.menuView,activator:()=>this._balloon.visibleView===this.menuView,contextElements:[this._balloon.view.element],callback:()=>this._hideMenu()})}_enableBalloonMenuOnSelection(){const e=this.editor,t=e.model.document.selection;this.listenTo(t,"change:range",(()=>{const i=e.commands.get("AiDrupalDialog");t.hasOwnRange&&!t.isCollapsed&&i.isEnabled?setTimeout((()=>{t.hasOwnRange&&!t.isCollapsed&&this._showMenu()}),200):this._hideMenu()}))}_showMenu(){if(this._balloon.hasView(this.menuView))return;const e=this.editor.model.document.selection;e.hasOwnRange&&!e.isCollapsed&&this._balloon.add({view:this.menuView,position:this._getBalloonPositionData()})}_hideMenu(){this._balloon.hasView(this.menuView)&&this._balloon.remove(this.menuView)}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document;return{target:e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}const s={AiBalloonMenu:n}})(),o=o.default})())); No newline at end of file modules/ai_ckeditor/js/build/aickeditor.js 0 → 100644 +1 −0 Changes for modules/ai_ckeditor/js/build/aickeditor.js: 1 added line, 0 removed lines. Original line number Diff line number Diff line !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.CKEditor5=e():(t.CKEditor5=t.CKEditor5||{},t.CKEditor5.aickeditor=e())}(self,(()=>(()=>{var t={"ckeditor5/src/core.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(s){var o=e[s];if(void 0!==o)return o.exports;var r=e[s]={exports:{}};return t[s](r,r.exports,i),r.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var s={};return(()=>{"use strict";i.d(s,{default:()=>u});var t=i("ckeditor5/src/core.js"),e=i("ckeditor5/src/ui.js");const o='<svg viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">\n <g fill="#000000">\n <path d="m121.59 60.83-13.93-4.49c-8.91-2.94-14.13-10.15-16.58-19.21l-6.13-29.86c-.16-.59-.55-1.38-1.75-1.38-1.01 0-1.59.79-1.75 1.38l-6.13 29.87c-2.46 9.06-7.67 16.27-16.58 19.21l-13.93 4.49c-1.97.64-2 3.42-.04 4.09l14.03 4.83c8.88 2.95 14.06 10.15 16.52 19.17l6.14 29.53c.16.59.49 1.65 1.75 1.65 1.33 0 1.59-1.06 1.75-1.65l6.14-29.53c2.46-9.03 7.64-16.23 16.52-19.17l14.03-4.83c1.94-.68 1.91-3.46-.06-4.1z"/>\n <path d="m41.81 86.81c-8.33-2.75-9.09-5.85-10.49-11.08l-3.49-12.24c-.21-.79-2.27-.79-2.49 0l-2.37 11.31c-1.41 5.21-4.41 9.35-9.53 11.04l-8.16 3.54c-1.13.37-1.15 1.97-.02 2.35l8.22 2.91c5.1 1.69 8.08 5.83 9.5 11.02l2.37 10.82c.22.79 2.27.79 2.48 0l2.78-10.77c1.41-5.22 3.57-9.37 10.5-11.07l7.72-2.91c1.13-.39 1.12-1.99-.02-2.36z"/>\n <path d="m59.74 28.14c.56-.19.54-.99-.03-1.15l-7.72-2.08c-1.62-.44-2.88-1.69-3.34-3.3l-3.04-12.55c-.15-.61-1.02-.61-1.17.01l-2.86 12.5c-.44 1.66-1.74 2.94-3.4 3.37l-7.67 1.99c-.57.15-.61.95-.05 1.15l8.09 2.8c1.45.5 2.57 1.68 3.01 3.15l2.89 11.59c.15.6 1.01.61 1.16 0l2.99-11.63c.45-1.47 1.58-2.64 3.04-3.13z"/>\n </g>\n</svg>\n';var r=i("ckeditor5/src/utils.js");class a extends t.Command{constructor(t){super(t)}execute(t,e,i){const s=this.editor.config.get("ai_ckeditor_ai"),{dialogURL:o,openDialog:r,dialogSettings:a={}}=s;if(!o||"function"!=typeof r)return;const n=this.editor.editing.model.getSelectedContent(this.editor.model.document.selection),d=this.editor.data.stringify(n)??"";a.title=a.title+" - "+i;r(new URL(o,document.baseURI).toString(),(({attributes:t})=>{const e=this.editor.model;e.change((i=>{const s=e.document.selection;s.getFirstPosition();if(s.hasOwnRange){const t=s.getFirstRange();i.remove(t)}if(void 0!==t.returnsHtml&&t.returnsHtml){const e=this.editor.data.processor.toView(t.value),i=this.editor.data.toModel(e);this.editor.model.insertContent(i)}else this.editor.model.insertContent(i.createText(t.value))}))}),a,{selected_text:d,editor_id:this.editor.sourceElement.dataset.editorActiveTextFormat,plugin_id:e})}refresh(){const t=document.getElementsByClassName("ckeditor5-ai-ckeditor-dialog-form");this.isEnabled=0===t.length,this.isOn=this.isEnabled,this.isReadOnly=this.isEnabled}}class n extends t.Plugin{constructor(t){super(t),this.set("status",Drupal.t("Idle"))}init(){this.editor.sourceElement.parentElement.appendChild(this.statusContainer()),this.on("ai_status",((t,e)=>{this._setStatus(e)}))}statusContainer(){this.editor.t;const t=e.Template.bind(this,this),i=[];return this._outputView||(this._outputView=new e.View,this.bind("_ai_status").to(this,"status",(t=>Drupal.t("AI Writer: @status",{"@status":t}))),i.push({tag:"div",children:[{text:[t.to("_ai_status")]}],attributes:{class:"ck-ai-status__activity"}}),this._outputView.setTemplate({tag:"div",attributes:{class:["ck","ck-ai-status"]},children:i}),this._outputView.render()),this._outputView.element}destroy(){this._outputView&&(this._outputView.element.remove(),this._outputView.destroy()),super.destroy()}_setStatus(t){this.set("status",t.status)}}class d extends t.Command{constructor(t){super(t),this._status=this.editor.plugins.get(n)}execute(t){const e=this._status;e.fire("ai_status",{status:"Waiting for response..."});const i=this.editor,s=i.plugins.get("SourceEditing");i.enableReadOnlyMode("ai_ckeditor"),s.set("isSourceEditingMode",!0),s.isEnabled=!1;const o=i.editing.view.getDomRoot()?.nextSibling?.firstChild;o&&(o.value=""),i.model.change((async r=>{const a=await fetch(drupalSettings.path.baseUrl+"api/ai-ckeditor/request/"+t.editor_id+"/"+t.plugin_id,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});a.ok||(e.fire("ai_status",{status:"An error occurred. Check the logs for details."}),setTimeout((()=>{e.fire("ai_status",{status:"Idle"})}),3e3)),e.fire("ai_status",{status:"Receiving response..."});const n=a.body.getReader();for(;;){const{value:t,done:r}=await n.read(),a=(new TextDecoder).decode(t);if(r){e.fire("ai_status",{status:"All done!"}),setTimeout((()=>{e.fire("ai_status",{status:"Idle"})}),1e3);break}e.fire("ai_status",{status:"Writing..."});let d=o.value;o.value=d+a,i.setData(o.value),s.updateEditorData()}s.set("isSourceEditingMode",!1),s.isEnabled=!0,i.disableReadOnlyMode("ai_ckeditor")}))}}class l extends t.Plugin{init(){const t=this.editor,i=this.editor.config.get("ai_ckeditor_ai");return i?!1===i.hasAccess?e.ViewModel:(t.commands.add("AiDrupalDialog",new a(t)),t.commands.add("AiWriter",new d(t)),void t.ui.componentFactory.add("aickeditor",(i=>{const s=new r.Collection,a=new e.ButtonView(i),n=this.editor.config.get("ai_ckeditor_ai");void 0!==n.plugins&&Object.keys(n.plugins).forEach((function(t){n.plugins[t].enabled&&s.add({type:"button",model:{isEnabled:n.plugins[t].enabled,label:n.plugins[t].meta.label,withText:!0,command:"AiDrupalDialog",group:"ai_ckeditor_ai",plugin_id:t}})}));const d=(0,e.createDropdown)(i,e.DropdownButtonView);return(0,e.addListToDropdown)(d,s),d.buttonView.set({label:"AI Assistant",class:"ai-dropdown",icon:o,tooltip:!0,withText:!0}),a.set({label:Drupal.t("AI Assistant"),icon:o,tooltip:!0,class:"ai-dropdown",withText:!0}),d.bind("isOn","isEnabled").to(t.commands.get("AiDrupalDialog"),"value","isEnabled"),a.bind("isOn","isEnabled").to(t.commands.get("AiDrupalDialog"),"value","isEnabled"),this.listenTo(d,"execute",(t=>{this.editor.execute(t.source.command,t.source.group,t.source.plugin_id,t.source.label)})),d}))):e.ViewModel}}class c extends t.Plugin{static get requires(){return[l,n]}}const u={AiCKEditor:c}})(),s=s.default})())); No newline at end of file modules/ai_ckeditor/package-lock.json +2 −2 Changes for modules/ai_ckeditor/package-lock.json: 2 added lines, 2 removed lines. Original line number Diff line number Diff line { "name": "ai-ckeditor", "version": "0.0.0", "version": "1.4.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ai-ckeditor", "version": "0.0.0", "version": "1.4.11", "license": "GPL-2.0-or-later", "devDependencies": { "@ckeditor/ckeditor5-dev-utils": "^30.0.0", Loading modules/ai_ckeditor/package.json +1 −1 Changes for modules/ai_ckeditor/package.json: 1 added line, 1 removed line. Original line number Diff line number Diff line { "name": "ai-ckeditor", "version": "0.0.0", "version": "1.4.11", "description": "AI CKEditor integration", "author": "Kevin Quillen", "license": "GPL-2.0-or-later", Loading ui/default-tools-editor/dist/assets/index.css 0 → 100644 +1 −0 Changes for ui/default-tools-editor/dist/assets/index.css: 1 added line, 0 removed lines. Original line number Diff line number Diff line .form-item--default-information-tools{padding:1rem;border:1px solid var(--gin-border-color, var(--color-gray-100));margin-bottom:1rem;border-radius:.5rem}.tools-editor{margin:1rem 0}.tools-editor .claro-details__summary{display:flex;align-items:center;gap:1rem}.tools-editor__toggle{padding:.375rem .75rem 1.0625rem;border:none;background:transparent;cursor:pointer;font-size:var(--ai-font-size-s);color:var(--gin-color-text, var(--color-text));font-weight:700;border-bottom:1px solid var(--gin-border-color, var(--color-gray-100));margin-bottom:1rem}.tools-editor__toggle--active,.tools-editor__toggle:is(:hover,:focus){padding-bottom:1rem;border-bottom:2px solid var(--gin-color-primary, var(--color-absolutezero));color:var(--gin-color-primary, var(--color-absolutezero));box-shadow:none!important}.tools-editor__add{padding:1.125rem .875rem;border:1px dashed var(--gin-border-color, var(--color-gray-200));border-radius:.5rem;background:transparent;color:var(--gin-status-text, var(--color-gray-700));width:100%;text-align:left;cursor:pointer;font-weight:700}.tools-editor__add:hover{color:var(--gin-color-primary, var(--color-absolutezero));background-color:var(--gin-bg-item-hover);border-color:var(--gin-color-primary, var(--color-gray-100))}.tool-item{border:1px solid var(--gin-border-color, var(--color-gray-100));border-radius:.5rem;padding:1rem;margin-bottom:.75rem;background:var(--gin-bg-layer)}.tool-item--collapsed{padding:.5rem .75rem}.tool-item__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.tool-item__summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}.tool-item__description{font-size:var(--ai-font-size-xs);color:var(--gin-color-text-light);max-width:420px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool-item__actions{display:flex;align-items:center;gap:.25rem}.tool-item__remove{margin-left:auto;box-sizing:content-box}.tool-item__fields{display:grid;grid-template-columns:1fr 1fr;column-gap:.5rem;margin-bottom:.875rem}.tool-item__field--full{grid-column:1 / -1}.tool-item__params-heading{display:flex;flex-direction:column;gap:.125rem}.tool-item__token-hint{font-size:var(--ai-font-size-xs);font-weight:400;color:var(--gin-color-text-light)}.tool-item__field{display:flex;flex-direction:column;gap:.125rem;font-size:var(--ai-font-size-xs);color:var(--gin-color-text-light)}.tool-item__params{border-top:1px solid var(--gin-border-color,var(--color-gray-100));padding-top:.5rem}.tool-item__params-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:var(--ai-font-size-xs);font-weight:600}.tool-item__param-row{display:flex;gap:.5rem;align-items:flex-start;margin-bottom:.5rem}.tool-item__param-label{flex:1;display:flex;flex-direction:column;gap:.25rem}.tool-item__param-label .form-item__label{font-size:var(--ai-font-size-xs);font-weight:400}.tool-item__param-key,.tool-item__param-value{width:100%;padding:.375rem .5rem;border:1px solid var(--gin-border-color, var(--color-gray-100));border-radius:.375rem;font-size:var(--ai-font-size-s);color:var(--gin-color-text);background:var(--gin-bg-app)}.tool-item__param-key:focus,.tool-item__param-value:focus{outline:none;border-color:var(--gin-color-primary, var(--color-absolutezero));box-shadow:0 0 0 2px #003cc526}.tool-item__param-remove{background:none;border:none;cursor:pointer;align-self:center;padding-bottom:.375rem;margin-bottom:.5rem}.tool-item__field--error input{border-color:var(--gin-status-danger-text, var(--color-red))}.tool-item__field-error{color:var(--gin-status-danger-text, var(--color-red));font-size:var(--ai-font-size-xs)}.tools-editor__error{color:var(--gin-status-danger-text, var(--color-red))} Loading
modules/ai_ckeditor/js/build/ai_balloon_menu.js 0 → 100644 +1 −0 Changes for modules/ai_ckeditor/js/build/ai_balloon_menu.js: 1 added line, 0 removed lines. Original line number Diff line number Diff line !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.ai_balloon_menu=t())}(self,(()=>(()=>{var e={"ckeditor5/src/core.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(e,t,i)=>{e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(o){var l=t[o];if(void 0!==l)return l.exports;var n=t[o]={exports:{}};return e[o](n,n.exports,i),n.exports}i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var o={};return(()=>{"use strict";i.d(o,{default:()=>s});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/ui.js");var l=i("ckeditor5/src/utils.js");class n extends e.Plugin{static get requires(){return[t.ContextualBalloon]}init(){this.editor.config.get("ai_ckeditor_ai")&&(this._balloon=this.editor.plugins.get(t.ContextualBalloon),this._createMenuView(),this._enableBalloonMenuOnSelection())}_createMenuView(){const e=this.editor,i=this.editor.config.get("ai_ckeditor_ai"),o=e.locale,n=new l.Collection;void 0!==i.plugins&&Object.keys(i.plugins).forEach((function(e){i.plugins[e].enabled&&n.add({type:"button",model:{isEnabled:i.plugins[e].enabled,label:i.plugins[e].meta.label,withText:!0,command:"AiDrupalDialog",group:"ai_ckeditor_ai",plugin_id:e}})})),this.menuView=(0,t.createDropdown)(o),this.menuView.buttonView.set({label:"AI Assistant",withText:!0,tooltip:!1,icon:'<svg viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">\n <g fill="#000000">\n <path d="m121.59 60.83-13.93-4.49c-8.91-2.94-14.13-10.15-16.58-19.21l-6.13-29.86c-.16-.59-.55-1.38-1.75-1.38-1.01 0-1.59.79-1.75 1.38l-6.13 29.87c-2.46 9.06-7.67 16.27-16.58 19.21l-13.93 4.49c-1.97.64-2 3.42-.04 4.09l14.03 4.83c8.88 2.95 14.06 10.15 16.52 19.17l6.14 29.53c.16.59.49 1.65 1.75 1.65 1.33 0 1.59-1.06 1.75-1.65l6.14-29.53c2.46-9.03 7.64-16.23 16.52-19.17l14.03-4.83c1.94-.68 1.91-3.46-.06-4.1z"/>\n <path d="m41.81 86.81c-8.33-2.75-9.09-5.85-10.49-11.08l-3.49-12.24c-.21-.79-2.27-.79-2.49 0l-2.37 11.31c-1.41 5.21-4.41 9.35-9.53 11.04l-8.16 3.54c-1.13.37-1.15 1.97-.02 2.35l8.22 2.91c5.1 1.69 8.08 5.83 9.5 11.02l2.37 10.82c.22.79 2.27.79 2.48 0l2.78-10.77c1.41-5.22 3.57-9.37 10.5-11.07l7.72-2.91c1.13-.39 1.12-1.99-.02-2.36z"/>\n <path d="m59.74 28.14c.56-.19.54-.99-.03-1.15l-7.72-2.08c-1.62-.44-2.88-1.69-3.34-3.3l-3.04-12.55c-.15-.61-1.02-.61-1.17.01l-2.86 12.5c-.44 1.66-1.74 2.94-3.4 3.37l-7.67 1.99c-.57.15-.61.95-.05 1.15l8.09 2.8c1.45.5 2.57 1.68 3.01 3.15l2.89 11.59c.15.6 1.01.61 1.16 0l2.99-11.63c.45-1.47 1.58-2.64 3.04-3.13z"/>\n </g>\n</svg>\n'}),(0,t.addListToDropdown)(this.menuView,n),this.listenTo(this.menuView,"execute",(e=>{this.editor.execute(e.source.command,e.source.group,e.source.plugin_id,e.source.label),this._hideMenu()})),(0,t.clickOutsideHandler)({emitter:this.menuView,activator:()=>this._balloon.visibleView===this.menuView,contextElements:[this._balloon.view.element],callback:()=>this._hideMenu()})}_enableBalloonMenuOnSelection(){const e=this.editor,t=e.model.document.selection;this.listenTo(t,"change:range",(()=>{const i=e.commands.get("AiDrupalDialog");t.hasOwnRange&&!t.isCollapsed&&i.isEnabled?setTimeout((()=>{t.hasOwnRange&&!t.isCollapsed&&this._showMenu()}),200):this._hideMenu()}))}_showMenu(){if(this._balloon.hasView(this.menuView))return;const e=this.editor.model.document.selection;e.hasOwnRange&&!e.isCollapsed&&this._balloon.add({view:this.menuView,position:this._getBalloonPositionData()})}_hideMenu(){this._balloon.hasView(this.menuView)&&this._balloon.remove(this.menuView)}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document;return{target:e.domConverter.viewRangeToDom(t.selection.getFirstRange())}}}const s={AiBalloonMenu:n}})(),o=o.default})())); No newline at end of file
modules/ai_ckeditor/js/build/aickeditor.js 0 → 100644 +1 −0 Changes for modules/ai_ckeditor/js/build/aickeditor.js: 1 added line, 0 removed lines. Original line number Diff line number Diff line !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.CKEditor5=e():(t.CKEditor5=t.CKEditor5||{},t.CKEditor5.aickeditor=e())}(self,(()=>(()=>{var t={"ckeditor5/src/core.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":(t,e,i)=>{t.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(s){var o=e[s];if(void 0!==o)return o.exports;var r=e[s]={exports:{}};return t[s](r,r.exports,i),r.exports}i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var s={};return(()=>{"use strict";i.d(s,{default:()=>u});var t=i("ckeditor5/src/core.js"),e=i("ckeditor5/src/ui.js");const o='<svg viewBox="0 0 128 128" xmlns="http://www.w3.org/2000/svg">\n <g fill="#000000">\n <path d="m121.59 60.83-13.93-4.49c-8.91-2.94-14.13-10.15-16.58-19.21l-6.13-29.86c-.16-.59-.55-1.38-1.75-1.38-1.01 0-1.59.79-1.75 1.38l-6.13 29.87c-2.46 9.06-7.67 16.27-16.58 19.21l-13.93 4.49c-1.97.64-2 3.42-.04 4.09l14.03 4.83c8.88 2.95 14.06 10.15 16.52 19.17l6.14 29.53c.16.59.49 1.65 1.75 1.65 1.33 0 1.59-1.06 1.75-1.65l6.14-29.53c2.46-9.03 7.64-16.23 16.52-19.17l14.03-4.83c1.94-.68 1.91-3.46-.06-4.1z"/>\n <path d="m41.81 86.81c-8.33-2.75-9.09-5.85-10.49-11.08l-3.49-12.24c-.21-.79-2.27-.79-2.49 0l-2.37 11.31c-1.41 5.21-4.41 9.35-9.53 11.04l-8.16 3.54c-1.13.37-1.15 1.97-.02 2.35l8.22 2.91c5.1 1.69 8.08 5.83 9.5 11.02l2.37 10.82c.22.79 2.27.79 2.48 0l2.78-10.77c1.41-5.22 3.57-9.37 10.5-11.07l7.72-2.91c1.13-.39 1.12-1.99-.02-2.36z"/>\n <path d="m59.74 28.14c.56-.19.54-.99-.03-1.15l-7.72-2.08c-1.62-.44-2.88-1.69-3.34-3.3l-3.04-12.55c-.15-.61-1.02-.61-1.17.01l-2.86 12.5c-.44 1.66-1.74 2.94-3.4 3.37l-7.67 1.99c-.57.15-.61.95-.05 1.15l8.09 2.8c1.45.5 2.57 1.68 3.01 3.15l2.89 11.59c.15.6 1.01.61 1.16 0l2.99-11.63c.45-1.47 1.58-2.64 3.04-3.13z"/>\n </g>\n</svg>\n';var r=i("ckeditor5/src/utils.js");class a extends t.Command{constructor(t){super(t)}execute(t,e,i){const s=this.editor.config.get("ai_ckeditor_ai"),{dialogURL:o,openDialog:r,dialogSettings:a={}}=s;if(!o||"function"!=typeof r)return;const n=this.editor.editing.model.getSelectedContent(this.editor.model.document.selection),d=this.editor.data.stringify(n)??"";a.title=a.title+" - "+i;r(new URL(o,document.baseURI).toString(),(({attributes:t})=>{const e=this.editor.model;e.change((i=>{const s=e.document.selection;s.getFirstPosition();if(s.hasOwnRange){const t=s.getFirstRange();i.remove(t)}if(void 0!==t.returnsHtml&&t.returnsHtml){const e=this.editor.data.processor.toView(t.value),i=this.editor.data.toModel(e);this.editor.model.insertContent(i)}else this.editor.model.insertContent(i.createText(t.value))}))}),a,{selected_text:d,editor_id:this.editor.sourceElement.dataset.editorActiveTextFormat,plugin_id:e})}refresh(){const t=document.getElementsByClassName("ckeditor5-ai-ckeditor-dialog-form");this.isEnabled=0===t.length,this.isOn=this.isEnabled,this.isReadOnly=this.isEnabled}}class n extends t.Plugin{constructor(t){super(t),this.set("status",Drupal.t("Idle"))}init(){this.editor.sourceElement.parentElement.appendChild(this.statusContainer()),this.on("ai_status",((t,e)=>{this._setStatus(e)}))}statusContainer(){this.editor.t;const t=e.Template.bind(this,this),i=[];return this._outputView||(this._outputView=new e.View,this.bind("_ai_status").to(this,"status",(t=>Drupal.t("AI Writer: @status",{"@status":t}))),i.push({tag:"div",children:[{text:[t.to("_ai_status")]}],attributes:{class:"ck-ai-status__activity"}}),this._outputView.setTemplate({tag:"div",attributes:{class:["ck","ck-ai-status"]},children:i}),this._outputView.render()),this._outputView.element}destroy(){this._outputView&&(this._outputView.element.remove(),this._outputView.destroy()),super.destroy()}_setStatus(t){this.set("status",t.status)}}class d extends t.Command{constructor(t){super(t),this._status=this.editor.plugins.get(n)}execute(t){const e=this._status;e.fire("ai_status",{status:"Waiting for response..."});const i=this.editor,s=i.plugins.get("SourceEditing");i.enableReadOnlyMode("ai_ckeditor"),s.set("isSourceEditingMode",!0),s.isEnabled=!1;const o=i.editing.view.getDomRoot()?.nextSibling?.firstChild;o&&(o.value=""),i.model.change((async r=>{const a=await fetch(drupalSettings.path.baseUrl+"api/ai-ckeditor/request/"+t.editor_id+"/"+t.plugin_id,{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});a.ok||(e.fire("ai_status",{status:"An error occurred. Check the logs for details."}),setTimeout((()=>{e.fire("ai_status",{status:"Idle"})}),3e3)),e.fire("ai_status",{status:"Receiving response..."});const n=a.body.getReader();for(;;){const{value:t,done:r}=await n.read(),a=(new TextDecoder).decode(t);if(r){e.fire("ai_status",{status:"All done!"}),setTimeout((()=>{e.fire("ai_status",{status:"Idle"})}),1e3);break}e.fire("ai_status",{status:"Writing..."});let d=o.value;o.value=d+a,i.setData(o.value),s.updateEditorData()}s.set("isSourceEditingMode",!1),s.isEnabled=!0,i.disableReadOnlyMode("ai_ckeditor")}))}}class l extends t.Plugin{init(){const t=this.editor,i=this.editor.config.get("ai_ckeditor_ai");return i?!1===i.hasAccess?e.ViewModel:(t.commands.add("AiDrupalDialog",new a(t)),t.commands.add("AiWriter",new d(t)),void t.ui.componentFactory.add("aickeditor",(i=>{const s=new r.Collection,a=new e.ButtonView(i),n=this.editor.config.get("ai_ckeditor_ai");void 0!==n.plugins&&Object.keys(n.plugins).forEach((function(t){n.plugins[t].enabled&&s.add({type:"button",model:{isEnabled:n.plugins[t].enabled,label:n.plugins[t].meta.label,withText:!0,command:"AiDrupalDialog",group:"ai_ckeditor_ai",plugin_id:t}})}));const d=(0,e.createDropdown)(i,e.DropdownButtonView);return(0,e.addListToDropdown)(d,s),d.buttonView.set({label:"AI Assistant",class:"ai-dropdown",icon:o,tooltip:!0,withText:!0}),a.set({label:Drupal.t("AI Assistant"),icon:o,tooltip:!0,class:"ai-dropdown",withText:!0}),d.bind("isOn","isEnabled").to(t.commands.get("AiDrupalDialog"),"value","isEnabled"),a.bind("isOn","isEnabled").to(t.commands.get("AiDrupalDialog"),"value","isEnabled"),this.listenTo(d,"execute",(t=>{this.editor.execute(t.source.command,t.source.group,t.source.plugin_id,t.source.label)})),d}))):e.ViewModel}}class c extends t.Plugin{static get requires(){return[l,n]}}const u={AiCKEditor:c}})(),s=s.default})())); No newline at end of file
modules/ai_ckeditor/package-lock.json +2 −2 Changes for modules/ai_ckeditor/package-lock.json: 2 added lines, 2 removed lines. Original line number Diff line number Diff line { "name": "ai-ckeditor", "version": "0.0.0", "version": "1.4.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ai-ckeditor", "version": "0.0.0", "version": "1.4.11", "license": "GPL-2.0-or-later", "devDependencies": { "@ckeditor/ckeditor5-dev-utils": "^30.0.0", Loading
modules/ai_ckeditor/package.json +1 −1 Changes for modules/ai_ckeditor/package.json: 1 added line, 1 removed line. Original line number Diff line number Diff line { "name": "ai-ckeditor", "version": "0.0.0", "version": "1.4.11", "description": "AI CKEditor integration", "author": "Kevin Quillen", "license": "GPL-2.0-or-later", Loading
ui/default-tools-editor/dist/assets/index.css 0 → 100644 +1 −0 Changes for ui/default-tools-editor/dist/assets/index.css: 1 added line, 0 removed lines. Original line number Diff line number Diff line .form-item--default-information-tools{padding:1rem;border:1px solid var(--gin-border-color, var(--color-gray-100));margin-bottom:1rem;border-radius:.5rem}.tools-editor{margin:1rem 0}.tools-editor .claro-details__summary{display:flex;align-items:center;gap:1rem}.tools-editor__toggle{padding:.375rem .75rem 1.0625rem;border:none;background:transparent;cursor:pointer;font-size:var(--ai-font-size-s);color:var(--gin-color-text, var(--color-text));font-weight:700;border-bottom:1px solid var(--gin-border-color, var(--color-gray-100));margin-bottom:1rem}.tools-editor__toggle--active,.tools-editor__toggle:is(:hover,:focus){padding-bottom:1rem;border-bottom:2px solid var(--gin-color-primary, var(--color-absolutezero));color:var(--gin-color-primary, var(--color-absolutezero));box-shadow:none!important}.tools-editor__add{padding:1.125rem .875rem;border:1px dashed var(--gin-border-color, var(--color-gray-200));border-radius:.5rem;background:transparent;color:var(--gin-status-text, var(--color-gray-700));width:100%;text-align:left;cursor:pointer;font-weight:700}.tools-editor__add:hover{color:var(--gin-color-primary, var(--color-absolutezero));background-color:var(--gin-bg-item-hover);border-color:var(--gin-color-primary, var(--color-gray-100))}.tool-item{border:1px solid var(--gin-border-color, var(--color-gray-100));border-radius:.5rem;padding:1rem;margin-bottom:.75rem;background:var(--gin-bg-layer)}.tool-item--collapsed{padding:.5rem .75rem}.tool-item__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.tool-item__summary{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem}.tool-item__description{font-size:var(--ai-font-size-xs);color:var(--gin-color-text-light);max-width:420px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tool-item__actions{display:flex;align-items:center;gap:.25rem}.tool-item__remove{margin-left:auto;box-sizing:content-box}.tool-item__fields{display:grid;grid-template-columns:1fr 1fr;column-gap:.5rem;margin-bottom:.875rem}.tool-item__field--full{grid-column:1 / -1}.tool-item__params-heading{display:flex;flex-direction:column;gap:.125rem}.tool-item__token-hint{font-size:var(--ai-font-size-xs);font-weight:400;color:var(--gin-color-text-light)}.tool-item__field{display:flex;flex-direction:column;gap:.125rem;font-size:var(--ai-font-size-xs);color:var(--gin-color-text-light)}.tool-item__params{border-top:1px solid var(--gin-border-color,var(--color-gray-100));padding-top:.5rem}.tool-item__params-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:var(--ai-font-size-xs);font-weight:600}.tool-item__param-row{display:flex;gap:.5rem;align-items:flex-start;margin-bottom:.5rem}.tool-item__param-label{flex:1;display:flex;flex-direction:column;gap:.25rem}.tool-item__param-label .form-item__label{font-size:var(--ai-font-size-xs);font-weight:400}.tool-item__param-key,.tool-item__param-value{width:100%;padding:.375rem .5rem;border:1px solid var(--gin-border-color, var(--color-gray-100));border-radius:.375rem;font-size:var(--ai-font-size-s);color:var(--gin-color-text);background:var(--gin-bg-app)}.tool-item__param-key:focus,.tool-item__param-value:focus{outline:none;border-color:var(--gin-color-primary, var(--color-absolutezero));box-shadow:0 0 0 2px #003cc526}.tool-item__param-remove{background:none;border:none;cursor:pointer;align-self:center;padding-bottom:.375rem;margin-bottom:.5rem}.tool-item__field--error input{border-color:var(--gin-status-danger-text, var(--color-red))}.tool-item__field-error{color:var(--gin-status-danger-text, var(--color-red));font-size:var(--ai-font-size-xs)}.tools-editor__error{color:var(--gin-status-danger-text, var(--color-red))}