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) • 12.5 kB
JavaScript
/*! 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 l=Object.defineProperty;var d=(r,e,t)=>e in r?l(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var i=(r,e,t)=>d(r,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./FieldBuilder.cjs");class a{constructor(e){i(this,"templates",[]);i(this,"fieldBuilder");this.fieldBuilder=new s.FieldBuilder}initialize(){this.initializeTemplates()}initializeTemplates(){this.templates=[this.createContactFormTemplate(),this.createRegistrationFormTemplate(),this.createSurveyFormTemplate(),this.createPaymentFormTemplate(),this.createOrderFormTemplate(),this.createFeedbackFormTemplate(),this.createResumeFormTemplate(),this.createBookingFormTemplate(),this.createNewsletterFormTemplate(),this.createSatisfactionSurveyTemplate(),this.createJobApplicationTemplate(),this.createSupportTicketTemplate()]}getTemplates(){return this.templates}getCategories(){return["contact","survey","registration","payment","custom"]}getCategoryNames(){return{contact:"Contact",survey:"Survey",registration:"Registration",payment:"Payment",custom:"Custom"}}createContactFormTemplate(){return{id:"contact-form",name:"Contact Form",description:"Simple form for user contact",category:"contact",config:{id:"contact-form-template",method:"POST",action:"/contact",className:"contact-form",fields:[this.fieldBuilder.createPresetField("text","Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0}),this.fieldBuilder.createPresetField("tel","Phone"),this.fieldBuilder.createPresetField("textarea","Message",{},{required:!0})]}}}createRegistrationFormTemplate(){return{id:"registration-form",name:"Registration Form",description:"Form for new user registration",category:"registration",config:{id:"registration-form-template",method:"POST",action:"/register",className:"registration-form",fields:[this.fieldBuilder.createPresetField("text","Username",{},{required:!0,minLength:3}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("password","Password",{},{required:!0,minLength:6}),this.fieldBuilder.createPresetField("password","Confirm Password",{},{required:!0}),this.fieldBuilder.createPresetField("checkbox","Agree to Terms",{},{required:!0})]}}}createSurveyFormTemplate(){return{id:"survey-form",name:"Survey Form",description:"Form for conducting surveys",category:"survey",config:{id:"survey-form-template",method:"POST",action:"/survey",className:"survey-form",fields:[this.fieldBuilder.createPresetField("text","Your Name",{},{required:!0}),this.fieldBuilder.createPresetField("select","Age Group",{options:["18-25","26-35","36-45","46-55","55+"]},{required:!0}),this.fieldBuilder.createPresetField("radio","Gender",{options:["Male","Female","Other"]},{required:!0}),this.fieldBuilder.createPresetField("textarea","Your Suggestions"),this.fieldBuilder.createPresetField("range","Service Rating",{},{required:!0})]}}}createPaymentFormTemplate(){return{id:"payment-form",name:"Payment Form",description:"Form for processing payments",category:"payment",config:{id:"payment-form-template",method:"POST",action:"/payment",className:"payment-form",fields:[this.fieldBuilder.createPresetField("text","Card Number",{},{required:!0,pattern:"^[0-9]{13,19}$"}),this.fieldBuilder.createPresetField("text","Cardholder Name",{},{required:!0}),this.fieldBuilder.createPresetField("text","Expiry Date",{},{required:!0,pattern:"^(0[1-9]|1[0-2])/([0-9]{2})$"}),this.fieldBuilder.createPresetField("text","CVV",{},{required:!0,pattern:"^[0-9]{3,4}$"}),this.fieldBuilder.createPresetField("number","Amount",{},{required:!0,min:.01})]}}}createOrderFormTemplate(){return{id:"order-form",name:"Order Form",description:"Form for product orders and delivery",category:"custom",config:{id:"order-form-template",method:"POST",action:"/order",className:"order-form",fields:[this.fieldBuilder.createPresetField("text","Product Name",{},{required:!0}),this.fieldBuilder.createPresetField("number","Quantity",{},{required:!0,min:1}),this.fieldBuilder.createPresetField("text","Customer Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("tel","Phone",{},{required:!0}),this.fieldBuilder.createPresetField("textarea","Delivery Address",{},{required:!0}),this.fieldBuilder.createPresetField("select","Delivery Method",{options:["Standard Delivery","Express Delivery","Pickup"]},{required:!0}),this.fieldBuilder.createPresetField("textarea","Special Instructions")]}}}createFeedbackFormTemplate(){return{id:"feedback-form",name:"Feedback Form",description:"Form for collecting user feedback and suggestions",category:"survey",config:{id:"feedback-form-template",method:"POST",action:"/feedback",className:"feedback-form",fields:[this.fieldBuilder.createPresetField("text","Your Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("select","Feedback Type",{options:["Bug Report","Feature Request","General Feedback","Complaint","Praise"]},{required:!0}),this.fieldBuilder.createPresetField("text","Subject",{},{required:!0}),this.fieldBuilder.createPresetField("textarea","Your Feedback",{},{required:!0}),this.fieldBuilder.createPresetField("range","Rating",{},{required:!0}),this.fieldBuilder.createPresetField("checkbox","Allow us to contact you")]}}}createResumeFormTemplate(){return{id:"resume-form",name:"Resume Form",description:"Form for job applications and resume submission",category:"custom",config:{id:"resume-form-template",method:"POST",action:"/resume",className:"resume-form",fields:[this.fieldBuilder.createPresetField("text","Full Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("tel","Phone",{},{required:!0}),this.fieldBuilder.createPresetField("text","Position Applied For",{},{required:!0}),this.fieldBuilder.createPresetField("textarea","Work Experience",{},{required:!0}),this.fieldBuilder.createPresetField("textarea","Education"),this.fieldBuilder.createPresetField("textarea","Skills"),this.fieldBuilder.createPresetField("file","Resume/CV",{},{required:!0}),this.fieldBuilder.createPresetField("textarea","Cover Letter"),this.fieldBuilder.createPresetField("checkbox","I agree to the terms",{},{required:!0})]}}}createBookingFormTemplate(){return{id:"booking-form",name:"Booking Form",description:"Form for scheduling appointments and bookings",category:"custom",config:{id:"booking-form-template",method:"POST",action:"/booking",className:"booking-form",fields:[this.fieldBuilder.createPresetField("text","Full Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("tel","Phone",{},{required:!0}),this.fieldBuilder.createPresetField("date","Booking Date",{},{required:!0}),this.fieldBuilder.createPresetField("time","Preferred Time",{},{required:!0}),this.fieldBuilder.createPresetField("select","Service Type",{options:["Consultation","Appointment","Meeting","Event","Other"]},{required:!0}),this.fieldBuilder.createPresetField("number","Number of People",{},{required:!0,min:1}),this.fieldBuilder.createPresetField("textarea","Special Requirements"),this.fieldBuilder.createPresetField("checkbox","I confirm my booking",{},{required:!0})]}}}createNewsletterFormTemplate(){return{id:"newsletter-form",name:"Newsletter Subscription",description:"Form for newsletter and email subscription",category:"contact",config:{id:"newsletter-form-template",method:"POST",action:"/newsletter",className:"newsletter-form",fields:[this.fieldBuilder.createPresetField("text","First Name",{},{required:!0}),this.fieldBuilder.createPresetField("text","Last Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email Address",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("select","Newsletter Type",{options:["General","Technology","Business","Lifestyle","All"]}),this.fieldBuilder.createPresetField("checkbox","Weekly Newsletter"),this.fieldBuilder.createPresetField("checkbox","Monthly Newsletter"),this.fieldBuilder.createPresetField("checkbox","Special Offers"),this.fieldBuilder.createPresetField("checkbox","I agree to receive emails",{},{required:!0})]}}}createSatisfactionSurveyTemplate(){return{id:"satisfaction-survey",name:"Satisfaction Survey",description:"Form for measuring customer satisfaction",category:"survey",config:{id:"satisfaction-survey-template",method:"POST",action:"/satisfaction-survey",className:"satisfaction-survey",fields:[this.fieldBuilder.createPresetField("text","Customer Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("select","Product/Service Used",{},{required:!0}),this.fieldBuilder.createPresetField("radio","Overall Satisfaction",{options:["Very Satisfied","Satisfied","Neutral","Dissatisfied","Very Dissatisfied"]},{required:!0}),this.fieldBuilder.createPresetField("radio","Would you recommend us?",{options:["Definitely","Probably","Not Sure","Probably Not","Definitely Not"]},{required:!0}),this.fieldBuilder.createPresetField("radio","Value for Money",{options:["Excellent","Good","Fair","Poor","Very Poor"]},{required:!0}),this.fieldBuilder.createPresetField("textarea","What did you like most?"),this.fieldBuilder.createPresetField("textarea","What could we improve?"),this.fieldBuilder.createPresetField("checkbox","Allow us to use your feedback")]}}}createJobApplicationTemplate(){return{id:"job-application",name:"Job Application",description:"Form for job applications and recruitment",category:"custom",config:{id:"job-application-template",method:"POST",action:"/job-application",className:"job-application",fields:[this.fieldBuilder.createPresetField("text","First Name",{},{required:!0}),this.fieldBuilder.createPresetField("text","Last Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("tel","Phone",{},{required:!0}),this.fieldBuilder.createPresetField("text","Position",{},{required:!0}),this.fieldBuilder.createPresetField("select","Experience Level",{options:["Entry Level","Mid Level","Senior Level","Executive"]},{required:!0}),this.fieldBuilder.createPresetField("textarea","Why should we hire you?",{},{required:!0}),this.fieldBuilder.createPresetField("textarea","Previous Experience",{},{required:!0}),this.fieldBuilder.createPresetField("file","Resume",{},{required:!0}),this.fieldBuilder.createPresetField("file","Cover Letter"),this.fieldBuilder.createPresetField("checkbox","I am available for interview"),this.fieldBuilder.createPresetField("checkbox","I agree to the terms",{},{required:!0})]}}}createSupportTicketTemplate(){return{id:"support-ticket",name:"Support Ticket",description:"Form for creating support tickets and technical issues",category:"custom",config:{id:"support-ticket-template",method:"POST",action:"/support-ticket",className:"support-ticket",fields:[this.fieldBuilder.createPresetField("text","Full Name",{},{required:!0}),this.fieldBuilder.createPresetField("email","Email",{},{required:!0,email:!0}),this.fieldBuilder.createPresetField("tel","Phone",{},{required:!0}),this.fieldBuilder.createPresetField("select","Issue Category",{options:["Technical Issue","Billing Question","Feature Request","Bug Report","General Inquiry"]},{required:!0}),this.fieldBuilder.createPresetField("select","Priority Level",{options:["Low","Medium","High","Critical"]},{required:!0}),this.fieldBuilder.createPresetField("text","Subject",{},{required:!0}),this.fieldBuilder.createPresetField("textarea","Description of Issue",{},{required:!0}),this.fieldBuilder.createPresetField("file","Screenshots/Attachments"),this.fieldBuilder.createPresetField("textarea","Steps to Reproduce"),this.fieldBuilder.createPresetField("checkbox","I agree to the support terms",{},{required:!0})]}}}getTemplate(e){return this.templates.find(t=>t.id===e)}exportTemplate(e){const t=this.getTemplate(e);return t?JSON.stringify(t,null,2):null}}exports.TemplateManager=a;