Archived
1 parent
565aa348f9
commit
705e6f20e9
8 files changed
+485
No files matched your search
@@ -0,0 +1,62 @@
|
||||
/* =======================================================================
|
||||
Custom Print Styles for ERPNext + Summernote
|
||||
======================================================================= */
|
||||
|
||||
/* Pastikan hanya berlaku saat print */
|
||||
@media print {
|
||||
|
||||
/* Umum */
|
||||
body {
|
||||
font-size: 12pt;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/* Table dasar */
|
||||
table {
|
||||
border-collapse: collapse !important;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Semua tabel Summernote / Bootstrap */
|
||||
table.table,
|
||||
table.table-bordered,
|
||||
table.table td,
|
||||
table.table th {
|
||||
border: 2px solid #000 !important; /* tebal dan jelas */
|
||||
}
|
||||
|
||||
/* Header tabel lebih tegas */
|
||||
table.table thead th {
|
||||
border: 3px solid #000 !important;
|
||||
background: #f2f2f2 !important; /* sedikit abu untuk cetak */
|
||||
-webkit-print-color-adjust: exact;
|
||||
print-color-adjust: exact;
|
||||
}
|
||||
|
||||
/* Sel tabel */
|
||||
table.table td {
|
||||
padding: 6px 8px !important;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
/* Hapus warna background lain agar hemat tinta */
|
||||
* {
|
||||
background: transparent !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
/* Hilangkan elemen yang tidak perlu saat print (toolbar, tombol, dsb) */
|
||||
.note-toolbar,
|
||||
.note-statusbar,
|
||||
.btn,
|
||||
.form-control {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Pastikan konten Summernote tampil penuh */
|
||||
.note-editable {
|
||||
border: none !important;
|
||||
min-height: auto !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
@font-face{font-display:auto;font-family:summernote;font-style:normal;font-weight:400;src:url(font/summernote.eot?#iefix) format("embedded-opentype"),url(font/summernote.woff2) format("woff2"),url(font/summernote.woff) format("woff"),url(font/summernote.ttf) format("truetype")}[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-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%,.Line truncated
|
||||
@@ -0,0 +1,61 @@
|
||||
frappe.provide("frappe.ui.form");
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
console.log("[editor_override] ✅ 3 Patch Summernote aktif (field message & custom_note_kwitansi di Payment Request)");
|
||||
|
||||
// Helper: ganti Quill → Summernote
|
||||
function replaceWithSummernote(field) {
|
||||
if (!field || !field.$wrapper) return;
|
||||
|
||||
// Cek kalau Summernote sudah ada
|
||||
if (field.$wrapper.find(".note-editor").length) {
|
||||
console.log("[editor_override] Summernote sudah ada di:", field.df.fieldname);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("[editor_override] 🚀 Ganti Quill → Summernote di field:", field.df.fieldname);
|
||||
|
||||
// Hapus editor lama
|
||||
field.$wrapper.empty();
|
||||
|
||||
// Tambah textarea
|
||||
let $textarea = $('<textarea></textarea>').appendTo(field.$wrapper);
|
||||
|
||||
// Init Summernote
|
||||
$textarea.summernote({
|
||||
height: 200,
|
||||
toolbar: [
|
||||
["style", ["bold", "italic", "underline", "clear"]],
|
||||
["font", ["fontsize", "color"]],
|
||||
["para", ["ul", "ol", "paragraph"]],
|
||||
["table", ["table"]],
|
||||
["insert", ["link", "picture", "video"]],
|
||||
["view", ["codeview"]]
|
||||
],
|
||||
callbacks: {
|
||||
onChange: function (contents) {
|
||||
field.set_value(contents || "");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Isi value awal (kalau ada)
|
||||
if (field.value) {
|
||||
$textarea.summernote("code", field.value);
|
||||
}
|
||||
}
|
||||
|
||||
// Override hanya untuk Payment Request (field message & custom_note_kwitansi)
|
||||
frappe.ui.form.on("Payment Request", {
|
||||
onload_post_render: function (frm) {
|
||||
["message", "custom_note_kwitansi"].forEach((fname) => {
|
||||
let field = frm.fields_dict[fname];
|
||||
if (field) {
|
||||
setTimeout(() => {
|
||||
replaceWithSummernote(field);
|
||||
}, 500);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,213 @@
|
||||
// helper: format currency (Indonesia style) - untuk fallback client-side rendering
|
||||
function fmtMoney(n) {
|
||||
n = Number(n) || 0;
|
||||
var parts = n.toFixed(2).split('.');
|
||||
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ".");
|
||||
return parts[0] + ',' + parts[1];
|
||||
}
|
||||
|
||||
// Function: build HTML client-side (same logic as template) - dipakai ketika doc belum disimpan
|
||||
function build_message_html_client(doc, ref_doc) {
|
||||
var amount = Number(doc.grand_total || doc.amount || 0);
|
||||
var netto = amount ? (amount / 1.11) : 0;
|
||||
var ppn = amount - netto;
|
||||
|
||||
var qty = 0;
|
||||
if (ref_doc) {
|
||||
qty = Number(ref_doc.total_qty || 0);
|
||||
if (!qty && ref_doc.items) {
|
||||
for (var i = 0; i < ref_doc.items.length; i++) {
|
||||
qty += Number(ref_doc.items[i].qty || 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!qty) qty = 1;
|
||||
|
||||
var per_unit = netto / qty;
|
||||
|
||||
var html = '';
|
||||
html += '<div style="font-family: Arial, sans-serif; font-size: 13px; line-height: 1.6;">';
|
||||
html += '<table border="1" cellspacing="0" cellpadding="6" width="100%" style="border-collapse: collapse;">';
|
||||
html += '<thead style="background:#f2f2f2;"><tr><th style="width:5%">No</th><th style="width:55%">Nama Barang</th><th style="width:10%;text-align:center">Banyaknya</th><th style="text-align:right;width:15%">Harga Satuan</th><th style="text-align:right;width:15%">Jumlah Satuan</th></tr></thead>';
|
||||
html += '<tbody>';
|
||||
html += '<tr>';
|
||||
html += '<td style="text-align:center;">1</td>';
|
||||
var name = (ref_doc && ref_doc.items && ref_doc.items.length>0) ? (ref_doc.items[0].item_name || "Nama Barang / Uraian") : "Nama Barang / Uraian";
|
||||
html += '<td>' + name + '</td>';
|
||||
html += '<td style="text-align:center;">' + (qty.toFixed(2)) + '</td>';
|
||||
html += '<td style="text-align:right;">Rp ' + fmtMoney(per_unit) + '</td>';
|
||||
html += '<td style="text-align:right;">Rp ' + fmtMoney(netto) + '</td>';
|
||||
html += '</tr>';
|
||||
|
||||
html += '<tr><td colspan="4" style="text-align:right;">Diskon</td><td style="text-align:right;">Rp ' + fmtMoney(0) + '</td></tr>';
|
||||
html += '<tr><td colspan="4" style="text-align:right;">PPN 11%</td><td style="text-align:right;">Rp ' + fmtMoney(ppn) + '</td></tr>';
|
||||
html += '<tr><td colspan="4" style="text-align:right;font-weight:bold;">Total</td><td style="text-align:right;font-weight:bold;">Rp ' + fmtMoney(amount) + '</td></tr>';
|
||||
|
||||
html += '</tbody></table>';
|
||||
|
||||
html += '<p style="margin-top:10px;">Terbilang : <b>' + ( (typeof frappe !== 'undefined' && frappe.utils && frappe.utils.money_in_words) ? frappe.utils.money_in_words(amount, (doc.currency || "IDR")) : "") + '</b></p>';
|
||||
|
||||
html += '<p style="margin-top:30px; text-align:right;">Jakarta, ' + ((doc.transaction_date) ? doc.transaction_date : ( (typeof frappe !== 'undefined' && frappe.utils && frappe.utils.nowdate) ? frappe.utils.nowdate() : "" )) + '<br>Hormat kami,</p>';
|
||||
|
||||
html += '</div>';
|
||||
return html;
|
||||
}
|
||||
|
||||
// Function: update message - uses server render if docname exists, otherwise client-side render
|
||||
function update_message(frm) {
|
||||
// If there's a reference document, fetch it (for client-side rendering)
|
||||
var ref_doctype = frm.doc.reference_doctype;
|
||||
var ref_name = frm.doc.reference_name;
|
||||
|
||||
var do_server_render = !!frm.doc.name; // prefer server render when doc saved (has name)
|
||||
|
||||
if (ref_doctype && ref_name) {
|
||||
frappe.call({
|
||||
method: "frappe.client.get",
|
||||
args: { doctype: ref_doctype, name: ref_name },
|
||||
callback: function(r) {
|
||||
var ref_doc = r.message || null;
|
||||
if (do_server_render) {
|
||||
// server render (uses api.get_payment_message)
|
||||
frappe.call({
|
||||
method: "editor_override.api.get_payment_message",
|
||||
args: { docname: frm.doc.name },
|
||||
callback: function(res) {
|
||||
if (res.message) {
|
||||
frm.set_value("message", res.message);
|
||||
frm.refresh_field("message");
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// client-side render for unsaved doc
|
||||
var html = build_message_html_client(frm.doc, ref_doc);
|
||||
frm.set_value("message", html);
|
||||
frm.refresh_field("message");
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// no reference doc
|
||||
if (do_server_render) {
|
||||
frappe.call({
|
||||
method: "editor_override.api.get_payment_message",
|
||||
args: { docname: frm.doc.name },
|
||||
callback: function(res) {
|
||||
if (res.message) {
|
||||
frm.set_value("message", res.message);
|
||||
frm.refresh_field("message");
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
var html = build_message_html_client(frm.doc, null);
|
||||
frm.set_value("message", html);
|
||||
frm.refresh_field("message");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================
|
||||
// Payment Term logic (existing) + tie to update_message
|
||||
// ===========================
|
||||
frappe.ui.form.on("Payment Request", {
|
||||
onload: function(frm) {
|
||||
// set default or initial behaviours if needed
|
||||
// e.g. df property toggles, default percent, etc. (adapt from your original code)
|
||||
if (!frm.doc.custom_payment_term_percentage) {
|
||||
frm.set_value("custom_payment_term_percentage", 100);
|
||||
}
|
||||
},
|
||||
|
||||
refresh: function(frm) {
|
||||
// always update message UI on refresh (safe)
|
||||
update_message(frm);
|
||||
},
|
||||
|
||||
reference_name: function(frm) {
|
||||
// when reference changes, fetch base amount and refresh message
|
||||
if (frm.doc.reference_doctype === "Sales Order" && frm.doc.reference_name) {
|
||||
// fetch SO grand_total and set as amount (default 100% portion)
|
||||
frappe.call({
|
||||
method: "frappe.client.get",
|
||||
args: { doctype: "Sales Order", name: frm.doc.reference_name },
|
||||
callback: function(r) {
|
||||
if (r.message && r.message.grand_total) {
|
||||
// if no custom percent set, set amount to full SO
|
||||
var portion = frm.doc.custom_payment_term_percentage || 100;
|
||||
var final_amount = (r.message.grand_total * portion) / 100;
|
||||
frm.set_value("grand_total", final_amount);
|
||||
frm.refresh_field("grand_total");
|
||||
// now update message
|
||||
update_message(frm);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
update_message(frm);
|
||||
}
|
||||
},
|
||||
|
||||
custom_payment_term: function(frm) {
|
||||
var value = frm.doc.custom_payment_term;
|
||||
if (!value) {
|
||||
frm.set_value("custom_payment_term_percentage", 100);
|
||||
// get original amount from SO and refresh message
|
||||
if (frm.doc.reference_doctype === "Sales Order" && frm.doc.reference_name) {
|
||||
frappe.call({
|
||||
method: "frappe.client.get",
|
||||
args: { doctype: "Sales Order", name: frm.doc.reference_name },
|
||||
callback: function(r) {
|
||||
if (r.message && r.message.grand_total) {
|
||||
frm.set_value("grand_total", r.message.grand_total);
|
||||
frm.refresh_field("grand_total");
|
||||
update_message(frm);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
update_message(frm);
|
||||
}
|
||||
} else {
|
||||
// fetch selected Payment Term invoice_portion
|
||||
frappe.call({
|
||||
method: "frappe.client.get",
|
||||
args: {
|
||||
doctype: "Payment Term",
|
||||
name: value
|
||||
},
|
||||
callback: function(r) {
|
||||
if (r.message && r.message.invoice_portion !== undefined) {
|
||||
var portion = r.message.invoice_portion;
|
||||
frm.set_value("custom_payment_term_percentage", portion);
|
||||
// calc final amount based on sales order base
|
||||
if (frm.doc.reference_doctype === "Sales Order" && frm.doc.reference_name) {
|
||||
frappe.call({
|
||||
method: "frappe.client.get",
|
||||
args: { doctype: "Sales Order", name: frm.doc.reference_name },
|
||||
callback: function(rr) {
|
||||
if (rr.message && rr.message.grand_total) {
|
||||
var final_amount = (rr.message.grand_total * portion) / 100;
|
||||
frm.set_value("grand_total", final_amount);
|
||||
frm.refresh_field("grand_total");
|
||||
// Immediately update message to reflect new grand_total
|
||||
update_message(frm);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
update_message(frm);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
// in case grand_total is edited manually
|
||||
grand_total: function(frm) {
|
||||
update_message(frm);
|
||||
}
|
||||
|
||||
});
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
/*! Summernote v0.9.0 | (c) 2013~ Hackerwins and contributors | MIT license */
|
||||
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],e);else{var o="object"==typeof exports?e(require("jquery")):e(t.jQuery);for(var n in o)("object"==typeof exports?exports:t)[n]=o[n]}}(self,(t=>(()=>{"use strict";var e={7e3:(t,e,o)=>{var n=o(8938),i=o.n(n);i().summernote=i().summernote||{lang:{}},i().extend(!0,i().summernote.lang,{"en-US":{font:{bold:"Bold",italic:"Italic",underline:"Underline",clear:"Remove Font Style",height:"Line Height",name:"Font Family",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript",size:"Font Size",sizeunit:"Font Size Unit"},image:{image:"Picture",insert:"Insert Image",resizeFull:"Resize full",resizeHalf:"Resize half",resizeQuarter:"Resize quarter",resizeNone:"Original size",floatLeft:"Float Left",floatRight:"Float Right",floatNone:"Remove float",shapeRounded:"Shape: Rounded",shapeCircle:"Shape: Circle",shapeThumbnail:"Shape: Thumbnail",shapeNone:"Shape: None",dragImageHere:"Drag image or text here",dropImage:"Drop image or Text",selectFromFiles:"Select from files",maximumFileSize:"Maximum file size",maximumFileSizeError:"Maximum file size exceeded.",url:"Image URL",remove:"Remove Image",original:"Original"},video:{video:"Video",videoLink:"Video Link",insert:"Insert Video",url:"Video URL",providers:"(YouTube, Google Drive, Vimeo, Vine, Instagram, DailyMotion, Youku, Peertube)"},link:{link:"Link",insert:"Insert Link",unlink:"Unlink",edit:"Edit",textToDisplay:"Text to display",url:"To what URL should this link go?",openInNewWindow:"Open in new window"},table:{table:"Table",addRowAbove:"Add row above",addRowBelow:"Add row below",addColLeft:"Add column left",addColRight:"Add column right",delRow:"Delete row",delCol:"Delete column",delTable:"Delete table"},hr:{insert:"Insert Horizontal Rule"},style:{style:"Style",p:"Normal",blockquote:"Quote",pre:"Code",h1:"Header 1",h2:"Header 2",h3:"Header 3",h4:"Header 4",h5:"Header 5",h6:"Header 6"},lists:{unordered:"Unordered list",ordered:"Ordered list"},options:{help:"Help",fullscreen:"Full Screen",codeview:"Code View"},paragraph:{paragraph:"Paragraph",outdent:"Outdent",indent:"Indent",left:"Align left",center:"Align center",right:"Align right",justify:"Justify full"},color:{recent:"Recent Color",more:"More Color",background:"Background Color",foreground:"Text Color",transparent:"Transparent",setTransparent:"Set transparent",reset:"Reset",resetToDefault:"Reset to default",cpSelect:"Select"},shortcut:{shortcuts:"Keyboard shortcuts",close:"Close",textFormatting:"Text formatting",action:"Action",paragraphFormatting:"Paragraph formatting",documentStyle:"Document Style",extraKeys:"Extra keys"},help:{escape:"Escape",insertParagraph:"Insert Paragraph",undo:"Undo the last command",redo:"Redo the last command",tab:"Tab",untab:"Untab",bold:"Set a bold style",italic:"Set a italic style",underline:"Set a underline style",strikethrough:"Set a strikethrough style",removeFormat:"Clean a style",justifyLeft:"Set left align",justifyCenter:"Set center align",justifyRight:"Set right align",justifyFull:"Set full align",insertUnorderedList:"Toggle unordered list",insertOrderedList:"Toggle ordered list",outdent:"Outdent on current paragraph",indent:"Indent on current paragraph",formatPara:"Change current block's format as a paragraph(P tag)",formatH1:"Change current block's format as H1",formatH2:"Change current block's format as H2",formatH3:"Change current block's format as H3",formatH4:"Change current block's format as H4",formatH5:"Change current block's format as H5",formatH6:"Change current block's format as H6",insertHorizontalRule:"Insert horizontal rule","linkDialog.show":"Show Link Dialog"},history:{undo:"Undo",redo:"Redo"},specialChar:{specialChar:"SPECIAL CHARACTERS",select:"Select Special characters"},output:{noSelection:"No Selection Made!"}}})},8938:e=>{e.exports=t}},o={};function n(t){var i=o[t];if(void 0!==i)return i.exports;var r=o[t]={exports:{}};return e[t](r,r.exports,n),r.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var i=n(8938),r=n.n(i),a=(n(7e3),["sans-serif","serif","monospace","cursive","fantasy"]);function s(t){return-1===r().inArray(t.toLowerCase(),a)?"'".concat(t,"'"):t}var l,c=navigator.userAgent,u=/MSIE|Trident/i.test(c);if(u){var d=/MSIE (\d+[.]\d+)/.exec(c);d&&(l=parseFloat(d[1])),(d=/Trident\/.*rv:([0-9]{1,}[.0-9]{0,})/.exec(c))&&(l=parseFloat(d[1]))}var f=/Edge\/\d+/.test(c),h="ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0,p=u?"DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted":"input";const m={isMac:navigator.appVersion.indexOf("Mac")>-1,isMSIE:u,isEdge:f,isFF:!f&&/firefox/i.test(c),isPhantom:/PhantomJS/i.test(c),isWebkit:!f&&/webkit/i.test(c),isChrome:!f&&/Line truncated
|
||||
Reference in new issue
Block a user