UNPKG

on-codemerge

Version:

A WYSIWYG editor for on-codemerge is a user-friendly interface that allows users to edit and view their code in real time, exactly as it will appear in the final product

3 lines (2 loc) 4.22 kB
/*! on-codemerge v1.3.1 @author Pavel Kuzmin @license MIT @homepage https://s00d.github.io/on-codemerge/ @repository git+https://github.com/s00d/on-codemerge.git Copyright (c) 2026 Pavel Kuzmin - Built on 2026-07-02T13:39:17.947Z */ "use strict";var C=Object.defineProperty;var y=(l,e,t)=>e in l?C(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t;var r=(l,e,t)=>y(l,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../../utils/helpers.cjs");class L{constructor(e,t,d){r(this,"editor");r(this,"onSubmit");r(this,"timer");r(this,"titleField");r(this,"descriptionField");r(this,"dateField");r(this,"timeField");r(this,"colorField");r(this,"categoryField");r(this,"tagsField");this.editor=e,this.onSubmit=t,this.timer=d}getElement(){var m,F,p,u,g,b,T,f;const e=i.createContainer("timer-form-container"),t=i.createForm("timer-form"),d=i.createLabel(this.editor.t("Title"),"title");this.titleField=i.createInputField("text",this.editor.t("Enter timer title"),((m=this.timer)==null?void 0:m.title)||""),this.titleField.id="title",this.titleField.required=!0;const s=i.createLabel(this.editor.t("Description"),"description");this.descriptionField=i.createTextarea(this.editor.t("Enter timer description"),((F=this.timer)==null?void 0:F.description)||""),this.descriptionField.id="description";const o=i.createLabel(this.editor.t("Target Date"),"targetDate");this.dateField=i.createInputField("date","",(p=this.timer)!=null&&p.targetDate?this.formatDateForInput(this.timer.targetDate):""),this.dateField.id="targetDate",this.dateField.required=!0;const h=i.createLabel(this.editor.t("Target Time"),"targetTime");this.timeField=i.createInputField("time","",((u=this.timer)==null?void 0:u.targetTime)||""),this.timeField.id="targetTime",this.timeField.required=!0;const n=i.createLabel(this.editor.t("Color"),"color");this.colorField=i.createInputField("color","",((g=this.timer)==null?void 0:g.color)||"#3b82f6"),this.colorField.id="color";const c=i.createLabel(this.editor.t("Category"),"category");this.categoryField=i.createInputField("text",this.editor.t("Enter category"),((b=this.timer)==null?void 0:b.category)||""),this.categoryField.id="category";const a=i.createLabel(this.editor.t("Tags (comma separated)"),"tags");return this.tagsField=i.createInputField("text",this.editor.t("Enter tags separated by commas"),((f=(T=this.timer)==null?void 0:T.tags)==null?void 0:f.join(", "))||""),this.tagsField.id="tags",t.appendChild(d),t.appendChild(this.titleField),t.appendChild(s),t.appendChild(this.descriptionField),t.appendChild(o),t.appendChild(this.dateField),t.appendChild(h),t.appendChild(this.timeField),t.appendChild(n),t.appendChild(this.colorField),t.appendChild(c),t.appendChild(this.categoryField),t.appendChild(a),t.appendChild(this.tagsField),e.appendChild(t),e}formatDateForInput(e){return e.toISOString().split("T")[0]}submit(){var o,h,n,c;if(!this.titleField||!this.dateField||!this.timeField)return;const e=this.dateField.value,t=this.timeField.value;let d;if(e&&t){const a=`${e}T${t}`;d=new Date(a)}else d=new Date;const s={title:this.titleField.value||"",description:((o=this.descriptionField)==null?void 0:o.value)||"",targetDate:d,targetTime:this.timeField.value||"",color:((h=this.colorField)==null?void 0:h.value)||"#3b82f6",category:((n=this.categoryField)==null?void 0:n.value)||"",tags:(((c=this.tagsField)==null?void 0:c.value)||"").split(",").map(a=>a.trim()).filter(Boolean)};if(!s.title.trim()){this.editor.showErrorNotification(this.editor.t("Title is required")||"Title is required");return}if(!e){this.editor.showErrorNotification(this.editor.t("Target date is required")||"Target date is required");return}if(!t){this.editor.showErrorNotification(this.editor.t("Target time is required")||"Target time is required");return}if(isNaN(d.getTime())){this.editor.showErrorNotification(this.editor.t("Invalid date/time format")||"Invalid date/time format");return}this.onSubmit(s)}destroy(){this.titleField=null,this.descriptionField=null,this.dateField=null,this.timeField=null,this.colorField=null,this.categoryField=null,this.tagsField=null,this.editor=null,this.onSubmit=null,this.timer=null}}exports.TimerForm=L;