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

535 lines (534 loc) 18.4 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 */ 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); import { FieldBuilder as s } from "./FieldBuilder.mjs"; class u { constructor(e) { i(this, "templates", []); i(this, "fieldBuilder"); this.fieldBuilder = new s(); } /** * Initialize the template manager */ initialize() { this.initializeTemplates(); } /** * Initialize default templates */ 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() ]; } /** * Get all templates */ getTemplates() { return this.templates; } /** * Get categories */ getCategories() { return ["contact", "survey", "registration", "payment", "custom"]; } /** * Get category names in English */ getCategoryNames() { return { contact: "Contact", survey: "Survey", registration: "Registration", payment: "Payment", custom: "Custom" }; } /** * Create contact form template */ 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 }) ] } }; } /** * Create registration form template */ 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 }) ] } }; } /** * Create survey form template */ 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 }) ] } }; } /** * Create payment form template */ 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: 0.01 }) ] } }; } /** * Create order form template */ 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") ] } }; } /** * Create feedback form template */ 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") ] } }; } /** * Create resume form template */ 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 } ) ] } }; } /** * Create booking form template */ 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 } ) ] } }; } /** * Create newsletter subscription form template */ 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 } ) ] } }; } /** * Create satisfaction survey template */ 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") ] } }; } /** * Create job application form template */ 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 } ) ] } }; } /** * Create support ticket form template */ 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 } ) ] } }; } /** * Получает шаблон по ID */ getTemplate(e) { return this.templates.find((t) => t.id === e); } /** * Экспортирует шаблон в JSON */ exportTemplate(e) { const t = this.getTemplate(e); return t ? JSON.stringify(t, null, 2) : null; } } export { u as TemplateManager };