From 1250c6e664ee1fc4bfdc9fae064deb8c311fec98 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Wed, 4 Sep 2019 17:55:43 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=BD=9C=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_commons_controller.rb | 2 ++ app/controllers/shixuns_controller.rb | 1 + app/controllers/subjects_controller.rb | 1 + app/services/homeworks_service.rb | 1 - 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 8c8d121d1..b62840200 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -930,6 +930,7 @@ class HomeworkCommonsController < ApplicationController shixuns.each do |shixun| homework = HomeworksService.new.create_homework shixun, @course, @category, current_user @homework_ids << homework.id + CreateStudentWorkJob.perform_later(homework.id) end rescue Exception => e uid_logger(e.message) @@ -1031,6 +1032,7 @@ class HomeworkCommonsController < ApplicationController stage.shixuns.where.not(shixuns: {id: none_shixun_ids}).unhidden.each do |shixun| homework = HomeworksService.new.create_homework shixun, @course, category, current_user @homework_ids << homework.id + CreateStudentWorkJob.perform_later(homework.id) end end end diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index e910db8cc..b47a9a346 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -909,6 +909,7 @@ class ShixunsController < ApplicationController def send_to_course @course = Course.find(params[:course_id]) homework = HomeworksService.new.create_homework @shixun, @course, nil, current_user + CreateStudentWorkJob.perform_later(homework.id) end # 二维码扫描下载 diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index d97b7172c..7c76748b1 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -214,6 +214,7 @@ class SubjectsController < ApplicationController stage.shixuns.where(id: params[:shixun_ids], status: 2).each do |shixun| homework = HomeworksService.new.create_homework shixun, @course, category, current_user + CreateStudentWorkJob.perform_later(homework.id) end end rescue Exception => e diff --git a/app/services/homeworks_service.rb b/app/services/homeworks_service.rb index f6868afba..0dc814c89 100644 --- a/app/services/homeworks_service.rb +++ b/app/services/homeworks_service.rb @@ -15,7 +15,6 @@ class HomeworksService homework_detail_manual.save! if homework_detail_manual HomeworkCommonsShixun.create!(homework_common_id: homework.id, shixun_id: shixun.id) HomeworksService.new.create_shixun_homework_cha_setting(homework, shixun) - CreateStudentWorkJob.perform_later(homework.id) # HomeworksService.new.create_works_list(homework, course) end homework From 6cf21f155f493be62e719fa5d6b7930c6e32a113 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Wed, 4 Sep 2019 18:27:00 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E9=83=A8=E9=97=A8=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E5=92=8C=E5=8D=95=E4=BD=8D=E5=AE=A1=E6=89=B9=E7=9A=84=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admins/department_applies/index.js | 22 ---- .../modals/admin-merge-department-modal.js | 3 +- .../admins/department_applies_controller.rb | 78 +++++++---- .../admins/unit_applies_controller.rb | 122 ++++++++++++++++++ app/models/apply_add_school.rb | 7 + app/models/school.rb | 2 + app/queries/admins/unit_apply_query.rb | 24 ++++ .../admins/delete_unit_apply_service.rb | 56 ++++++++ .../admins/department_applies/agree.js.erb | 2 - .../admins/department_applies/index.html.erb | 2 +- .../shared/_edit_modal.html.erb | 26 ---- .../department_applies/shared/_list.html.erb | 19 ++- .../shared/_department_item.html.erb | 3 +- .../shared/_merge_department_modal.html.erb | 1 - app/views/admins/shared/_sidebar.html.erb | 3 +- app/views/admins/unit_applies/edit.js.erb | 56 ++++++++ app/views/admins/unit_applies/index.html.erb | 17 +++ app/views/admins/unit_applies/index.js.erb | 1 + .../unit_applies/shared/_apply_item.html.erb | 17 +++ .../unit_applies/shared/_edit_modal.html.erb | 43 ++++++ .../admins/unit_applies/shared/_list.html.erb | 26 ++++ app/views/admins/unit_applies/update.js.erb | 6 + config/routes.rb | 10 +- 23 files changed, 457 insertions(+), 89 deletions(-) delete mode 100644 app/assets/javascripts/admins/department_applies/index.js create mode 100644 app/controllers/admins/unit_applies_controller.rb create mode 100644 app/queries/admins/unit_apply_query.rb create mode 100644 app/services/admins/delete_unit_apply_service.rb delete mode 100644 app/views/admins/department_applies/agree.js.erb delete mode 100644 app/views/admins/department_applies/shared/_edit_modal.html.erb create mode 100644 app/views/admins/unit_applies/edit.js.erb create mode 100644 app/views/admins/unit_applies/index.html.erb create mode 100644 app/views/admins/unit_applies/index.js.erb create mode 100644 app/views/admins/unit_applies/shared/_apply_item.html.erb create mode 100644 app/views/admins/unit_applies/shared/_edit_modal.html.erb create mode 100644 app/views/admins/unit_applies/shared/_list.html.erb create mode 100644 app/views/admins/unit_applies/update.js.erb diff --git a/app/assets/javascripts/admins/department_applies/index.js b/app/assets/javascripts/admins/department_applies/index.js deleted file mode 100644 index 7ecf0be75..000000000 --- a/app/assets/javascripts/admins/department_applies/index.js +++ /dev/null @@ -1,22 +0,0 @@ -$(document).on('turbolinks:load', function() { - var $editModal = $('.department-apply-edit-modal'); - if($editModal.length > 0){ - var $form = $editModal.find('form.department-apply-form'); - var $applyIdInput = $form.find('input[name="id"]'); - $editModal.on('show.bs.modal', function (event) { - var $link = $(event.relatedTarget); - var applyId = $link.data('id'); - $applyIdInput.val(applyId); - }); - $editModal.on('click', '.submit-btn', function(){ - $.ajax({ - method: "PUT", - dataType: 'script', - url: "/admins/department_applies/"+ $applyIdInput.val(), - data: $form.serialize(), - }).done(function(){ - $editModal.modal('hide'); - }); - }); - } -}); \ No newline at end of file diff --git a/app/assets/javascripts/admins/modals/admin-merge-department-modal.js b/app/assets/javascripts/admins/modals/admin-merge-department-modal.js index aead3f485..f5f2dceeb 100644 --- a/app/assets/javascripts/admins/modals/admin-merge-department-modal.js +++ b/app/assets/javascripts/admins/modals/admin-merge-department-modal.js @@ -66,10 +66,11 @@ $(document).on('turbolinks:load', function() { var $link = $(event.relatedTarget); var schoolId = $link.data('schoolId'); + var url = $link.data('url'); $schoolIdInput.val(schoolId); $originDepartmentIdInput.val($link.data('departmentId')); - + $form.data('url', url); $.ajax({ url: '/api/schools/' + schoolId + '/departments/for_option.json', dataType: 'json', diff --git a/app/controllers/admins/department_applies_controller.rb b/app/controllers/admins/department_applies_controller.rb index 6c26e67af..b6dece1de 100644 --- a/app/controllers/admins/department_applies_controller.rb +++ b/app/controllers/admins/department_applies_controller.rb @@ -1,6 +1,7 @@ class Admins::DepartmentAppliesController < Admins::BaseController - before_action :get_apply,only:[:agree,:edit,:update,:destroy] + before_action :get_apply,only:[:agree,:destroy] + def index params[:status] ||= 0 params[:sort_by] = params[:sort_by].presence || 'created_at' @@ -19,46 +20,77 @@ class Admins::DepartmentAppliesController < Admins::BaseController end end - def update - depart_name = params[:name] + def merge + apply_id = params[:origin_department_id] + apply_add =ApplyAddDepartment.find(apply_id) + origin_id = apply_add&.department_id + new_id = params[:department_id] + + return render_error('请选择其它部门') if origin_id.to_s == new_id.to_s + + origin_department = apply_add&.department + to_department = Department.find(new_id) + + return render_error('部门所属单位不相同') if origin_department&.school_id != to_department&.school_id + ActiveRecord::Base.transaction do - @depart_apply.update_attribute("name",depart_name) - @depart_apply&.department&.update_attribute("name",depart_name) - extra = depart_name + "(#{@depart_apply&.department&.school&.try(:name)})" + applied_message = AppliedMessage.where(applied_id: origin_id, applied_type: "ApplyAddDepartment") + + applied_message.update_all(:status => 4) + apply_add.update_attribute(:status, 2) + apply_add.tidings.update_all(:status => 1) + + extra = to_department&.name + "(#{apply_add&.department&.school&.try(:name)})" tiding_params = { - user_id: @depart_apply.user_id, + user_id: apply_add.user_id, trigger_user_id: 0, - container_id: @depart_apply.id, + container_id: apply_add.id, container_type: 'ApplyAddDepartment', - belong_container_id: @depart_apply.department.school_id, + belong_container_id: apply_add&.department&.school_id, belong_container_type: "School", tiding_type: "System", status: 3, extra: extra } Tiding.create(tiding_params) - render_success_js + + origin_department.apply_add_departments.delete_all + + origin_department.user_extensions.update_all(department_id: new_id) + + if to_department.identifier.blank? && origin_department.identifier.present? + to_department.update!(identifier: origin_department.identifier) + end + + origin_department.destroy! + apply_add.destroy! end + render_ok end def destroy ActiveRecord::Base.transaction do @depart_apply.update_attribute("status",3) @depart_apply&.applied_messages&.update_all(status:3) + + if params[:tip] == 'unapplied' #未审批时候删除 + UserExtension.where(department_id: @depart_apply.department_id).update_all(department_id:nil) + tiding_params = { + user_id: @depart_apply.user_id, + trigger_user_id: 0, + container_id: @depart_apply.id, + container_type: 'ApplyAddDepartment', + belong_container_id: @depart_apply&.department&.school_id, + belong_container_type: "School", + tiding_type: "System", + status: 2, + extra: params[:reason] + } + Tiding.create(tiding_params) + end + @depart_apply&.department&.destroy - @depart_apply&.user&.user_extension&.update_attribute("department_id", nil) - tiding_params = { - user_id: @depart_apply.user_id, - trigger_user_id: 0, - container_id: @depart_apply.id, - container_type: 'ApplyAddDepartment', - belong_container_id: @depart_apply.department.school_id, - belong_container_type: "School", - tiding_type: "System", - status: 2, - extra: params[:reason] - } - Tiding.create(tiding_params) + @depart_apply.destroy render_success_js end end diff --git a/app/controllers/admins/unit_applies_controller.rb b/app/controllers/admins/unit_applies_controller.rb new file mode 100644 index 000000000..deb231f16 --- /dev/null +++ b/app/controllers/admins/unit_applies_controller.rb @@ -0,0 +1,122 @@ +class Admins::UnitAppliesController < Admins::BaseController + before_action :get_apply,only: [:agree,:destroy,:edit,:update] + + def index + params[:sort_by] ||= 'created_at' + params[:sort_direction] ||= 'desc' + unit_applies = Admins::UnitApplyQuery.call(params) + @unit_applies = paginate unit_applies.preload(:school, :user) + end + + def agree + ActiveRecord::Base.transaction do + begin + @unit_apply.update_attribute("status",1) + @unit_apply&.applied_messages&.update_all(status:1) + @unit_apply&.school&.update_attribute("province",@unit_apply.province) + + # #申请信息的创建 + apply_message_params = { + user_id: @unit_apply&.user_id, + status: 1, + viewed: 0, + applied_id: @unit_apply.school_id, + applied_type: "ApplyAddSchools", + name: @unit_apply.name, + } + AppliedMessage.new(apply_message_params).save(validate: false) + + Tiding.where(user_id: 1, trigger_user_id: @unit_apply.user_id, container_id: @unit_apply.id, + container_type: 'ApplyAddSchools', status: 0, tiding_type: "Apply").update_all(status: 1) + #消息的创建 + tiding_params = { + user_id: @unit_apply.user_id, + trigger_user_id: 0, + container_id: @unit_apply.id, + container_type: 'ApplyAddSchools', + belong_container_id: @unit_apply.school_id, + belong_container_type: "School", + tiding_type: "System", + status: 1 + } + Tiding.create(tiding_params) + render_success_js + rescue Exception => e + Rails.logger.info("############_________________#########{e}") + end + end + end + + def destroy + Admins::DeleteUnitApplyService.call(@unit_apply, params) + render_success_js + end + + def edit + @all_schools = School.where.not(id: @unit_apply.school_id).pluck("name","id") + + end + + def update + school = School.find_by(id: params[:school_id]) + ActiveRecord::Base.transaction do + @unit_apply&.applied_messages&.update_all(status:4) + Tiding.where(user_id: 1, trigger_user_id: @unit_apply.user_id, container_id: @unit_apply.id, + container_type: 'ApplyAddSchools', status: 0, tiding_type: "Apply").update_all(status: 1) + + #消息的创建 + tiding_params = { + user_id: @unit_apply.user_id, + trigger_user_id: 0, + container_id: @unit_apply.id, + container_type: 'ApplyAddSchools', + belong_container_id: params[:school_id], + belong_container_type: "School", + tiding_type: "System", + status: 3, + extra: school.try(:name).to_s + } + Tiding.create(tiding_params) + + UserExtension.where(school_id: @unit_apply.school_id).update_all(school_id: params[:school_id].to_i) + ApplyAddDepartment.where(:school_id => @unit_apply.school_id).update_all(school_id: params[:school_id].to_i) + + # 判断重复 + before_apply_departments = Department.where(school_id: @unit_apply.school_id) + before_apply_departments.each do |department| + after_dep = Department.where(school_id: params[:school_id].to_i, name: department.name)&.first + if after_dep.present? + UserExtension.where(school_id: @unit_apply.school_id, department_id: department.id).update_all(department_id: after_dep.id) + department.destroy + department.apply_add_departments.destroy_all + else + department.apply_add_departments.update_all(school_id: school.id) + department.update_attribute(:school_id, school.id) + end + end + + @unit_apply&.school&.destroy + apply_params = { + status: 2, + name: school&.name.to_s, + school_id: params[:school_id], + province: params[:province], + city: params[:city], + address: params[:address] + } + @unit_apply.update_attributes(apply_params) + # render_success_js + end + end + + private + + def get_apply + @unit_apply = ApplyAddSchool.find_by(id:params[:id]) + end + + def disk_auth_filename(source_type, source_id, type) + File.join(storage_path, "#{source_type}", "#{source_id}#{type}") + end +end + diff --git a/app/models/apply_add_school.rb b/app/models/apply_add_school.rb index c303283ca..ac7c880cd 100644 --- a/app/models/apply_add_school.rb +++ b/app/models/apply_add_school.rb @@ -1,10 +1,12 @@ class ApplyAddSchool < ApplicationRecord belongs_to :school + belongs_to :user has_many :applied_messages, as: :applied has_many :tidings, as: :container, dependent: :destroy after_create :send_notify + # after_destroy :after_delete_apply private @@ -12,4 +14,9 @@ class ApplyAddSchool < ApplicationRecord Tiding.create!(user_id: 1, status: 0, container_id: id, container_type: 'ApplyAddSchools', trigger_user_id: user_id, belong_container: school, tiding_type: 'Apply') end + + # def after_delete_apply + # + # end + end \ No newline at end of file diff --git a/app/models/school.rb b/app/models/school.rb index 1034fd997..24de02496 100644 --- a/app/models/school.rb +++ b/app/models/school.rb @@ -16,6 +16,8 @@ class School < ApplicationRecord has_many :customers, dependent: :destroy has_many :partners, dependent: :destroy + has_many :apply_add_departments, dependent: :destroy + # 学校管理员 def manager?(user) ec_school_users.exists?(user_id: user.id) diff --git a/app/queries/admins/unit_apply_query.rb b/app/queries/admins/unit_apply_query.rb new file mode 100644 index 000000000..5df9c8ebb --- /dev/null +++ b/app/queries/admins/unit_apply_query.rb @@ -0,0 +1,24 @@ +class Admins::UnitApplyQuery < ApplicationQuery + include CustomSortable + + attr_reader :params + + sort_columns :created_at, default_by: :created_at, default_direction: :desc + + def initialize(params) + @params = params + end + + def call + unit_applies = ApplyAddSchool.where(status:0) + + # 关键字模糊查询 + keyword = params[:keyword].to_s.strip + if keyword.present? + unit_applies = unit_applies.where("name like ?","%#{keyword}%") + end + + custom_sort(unit_applies, params[:sort_by], params[:sort_direction]) + end +end + diff --git a/app/services/admins/delete_unit_apply_service.rb b/app/services/admins/delete_unit_apply_service.rb new file mode 100644 index 000000000..a64c8d64d --- /dev/null +++ b/app/services/admins/delete_unit_apply_service.rb @@ -0,0 +1,56 @@ +class Admins::DeleteUnitApplyService < ApplicationService + + attr_reader :department, :params + + def initialize(unit_apply, params) + @unit_apply = unit_apply + @params = params + end + + def call + ActiveRecord::Base.transaction do + @unit_apply.update_attribute("status",3) + @unit_apply&.applied_messages&.update_all(status:3) + @unit_apply&.school&.apply_add_departments&.update_all(status:3) + + applied_departments = ApplyAddDepartment.where(school_id: @unit_apply.school_id) + applied_departments.update_all(status: 3) + + use_extensions = UserExtension&.where(school_id: @unit_apply.school_id) + user_ids = UserExtension&.where(school_id: @unit_apply.school_id)&.pluck(:user_id) + User.where(id: user_ids).update_all(profile_completed: false) + use_extensions.update_all(school_id: nil,department_id: nil) + + @unit_apply&.user&.user_extension&.update_attribute("department_id", nil) + + # 申请了职业认证的用户撤销申请 + apply_user_auth = ApplyUserAuthentication.where(user_id: user_ids, auth_type: 2, status: 0) + apply_user_auth.each do |apply| + apply.tidings.destroy_all + apply.update_attribute('status', 3) + diskfile2 = disk_auth_filename('UserAuthentication', apply.user_id, 'PRO') + diskfilePRO = diskfile2 + 'temp' + File.delete(diskfilePRO) if File.exist?(diskfilePRO) + File.delete(diskfile2) if File.exist?(diskfile2) + end + + # 未审批删除 + if params[:tip] == "unapplied" + Tiding.where(:user_id => 1, :trigger_user_id => @unit_apply.user_id, :container_id => @unit_apply.id, :container_type => 'ApplyAddSchools', :status => 0, :tiding_type => "Apply").update_all(status: 1) + Tiding.create(:user_id => @unit_apply.user_id, :trigger_user_id => 0, :container_id => @unit_apply.id, :container_type =>'ApplyAddSchools', :belong_container_id => @unit_apply.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 2, :extra => params[:reason]) + + Tiding.where(:user_id => 1, :container_id => applied_departments.pluck(:id), :container_type => 'ApplyAddDepartment', :status => 0, :tiding_type => "Apply").update_all(status: 1) + if applied_departments&.first.present? + Tiding.create(:user_id => applied_departments.first.user_id, :trigger_user_id => 0, :container_id => applied_departments.first.id, :container_type =>'ApplyAddDepartment', :belong_container_id => @unit_apply.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 2) + AppliedMessage.create(:user_id => applied_departments.first.user_id, :status => 3, :viewed => 0, :applied_id => applied_departments.first.id, :applied_type => "ApplyAddDepartment", :name => applied_departments.first.name ) + end + @unit_apply&.school&.destroy + @unit_apply&.school&.departments&.destroy_all + elsif params[:tip] == "applied" + applied_departments.destroy_all + @unit_apply.destroy + end + end + + end +end \ No newline at end of file diff --git a/app/views/admins/department_applies/agree.js.erb b/app/views/admins/department_applies/agree.js.erb deleted file mode 100644 index d6a9f078a..000000000 --- a/app/views/admins/department_applies/agree.js.erb +++ /dev/null @@ -1,2 +0,0 @@ -//$("#apply-id-<%= @depart_apply.id %>").remove() -//pop_box_new("批准成功", 400, 248); \ No newline at end of file diff --git a/app/views/admins/department_applies/index.html.erb b/app/views/admins/department_applies/index.html.erb index 72e0e42fc..49b38e31a 100644 --- a/app/views/admins/department_applies/index.html.erb +++ b/app/views/admins/department_applies/index.html.erb @@ -15,4 +15,4 @@ <%= render(partial: 'admins/shared/admin_common_refuse_modal') %> -<%= render partial: 'admins/department_applies/shared/edit_modal' %> \ No newline at end of file +<%= render 'admins/departments/shared/merge_department_modal' %> \ No newline at end of file diff --git a/app/views/admins/department_applies/shared/_edit_modal.html.erb b/app/views/admins/department_applies/shared/_edit_modal.html.erb deleted file mode 100644 index 44c38ac28..000000000 --- a/app/views/admins/department_applies/shared/_edit_modal.html.erb +++ /dev/null @@ -1,26 +0,0 @@ - \ No newline at end of file diff --git a/app/views/admins/department_applies/shared/_list.html.erb b/app/views/admins/department_applies/shared/_list.html.erb index a31e39a37..bdd518a8f 100644 --- a/app/views/admins/department_applies/shared/_list.html.erb +++ b/app/views/admins/department_applies/shared/_list.html.erb @@ -1,12 +1,12 @@ - - - + + + - + @@ -14,8 +14,8 @@ <% applies.each do |apply| %> - - + + <% end %> <% else %> <%= render 'admins/shared/no_data_for_table' %> <% end %> -
ID部门名称单位名称ID部门名称单位名称 创建者 <%= sort_tag('创建于', name: 'created_at', path: admins_department_applies_path) %>操作操作
<%= apply.id %> <%= apply.name %> <%= apply.school.try(:name) %> <%= apply.name %> <%= apply.school.try(:name) %> <%= apply.user.show_real_name %> <%= format_time apply.created_at %> @@ -23,17 +23,16 @@ <%= javascript_void_link('删除', class: 'action refuse-action', data: { toggle: 'modal', target: '.admin-common-refuse-modal', id: apply.id, title: "删除原因", type: "delete", - url: admins_department_apply_path(apply, element: ".department-apply-#{apply.id}") + url: admins_department_apply_path(apply,tip:"unapplied", element: ".department-apply-#{apply.id}") }) %> - - <%= javascript_void_link('修改', class: 'action department-apply-action', data: { toggle: 'modal', target: '.department-apply-edit-modal', id: apply.id }) %> + <%= javascript_void_link '更改', class: 'action', data: { school_id: apply.school_id, department_id: apply.id, + toggle: 'modal', target: '.admin-merge-department-modal', url: merge_admins_department_applies_path } %>
diff --git a/app/views/admins/departments/shared/_department_item.html.erb b/app/views/admins/departments/shared/_department_item.html.erb index 11584909d..64b4ee70b 100644 --- a/app/views/admins/departments/shared/_department_item.html.erb +++ b/app/views/admins/departments/shared/_department_item.html.erb @@ -28,7 +28,8 @@ <%= javascript_void_link '添加管理员', class: 'action', data: { department_id: department.id, toggle: 'modal', target: '.admin-add-department-member-modal' } %> - <%= javascript_void_link '更改', class: 'action', data: { school_id: department.school_id, department_id: department.id, toggle: 'modal', target: '.admin-merge-department-modal' } %> + <%= javascript_void_link '更改', class: 'action', data: { school_id: department.school_id, department_id: department.id, + toggle: 'modal', target: '.admin-merge-department-modal', url: merge_admins_departments_path } %> <%= delete_link '删除', admins_department_path(department, element: ".department-item-#{department.id}"), class: 'delete-department-action' %> \ No newline at end of file diff --git a/app/views/admins/departments/shared/_merge_department_modal.html.erb b/app/views/admins/departments/shared/_merge_department_modal.html.erb index 200e75ccd..5c1ca6892 100644 --- a/app/views/admins/departments/shared/_merge_department_modal.html.erb +++ b/app/views/admins/departments/shared/_merge_department_modal.html.erb @@ -18,7 +18,6 @@ -
diff --git a/app/views/admins/shared/_sidebar.html.erb b/app/views/admins/shared/_sidebar.html.erb index 96d67b52a..9a7c696b8 100644 --- a/app/views/admins/shared/_sidebar.html.erb +++ b/app/views/admins/shared/_sidebar.html.erb @@ -56,7 +56,8 @@ <%= sidebar_item_group('#apply-review-submenu', '审核', icon: 'gavel') do %>
  • <%= sidebar_item(admins_identity_authentications_path, '实名认证', icon: 'id-card-o', controller: 'admins-identity_authentications') %>
  • <%= sidebar_item(admins_professional_authentications_path, '职业认证', icon: 'drivers-license', controller: 'admins-professional_authentications') %>
  • -
  • <%= sidebar_item(admins_department_applies_path, '部门审批', icon: 'building', controller: 'admins-department_applies') %>
  • +
  • <%= sidebar_item(admins_department_applies_path, '部门审批', icon: 'newspaper-o', controller: 'admins-department_applies') %>
  • +
  • <%= sidebar_item(admins_unit_applies_path, '单位审批', icon: 'building-o', controller: 'admins-unit_applies') %>
  • <%= sidebar_item(admins_shixun_authorizations_path, '实训发布', icon: 'object-ungroup', controller: 'admins-shixun_authorizations') %>
  • <%= sidebar_item(admins_subject_authorizations_path, '实践课程发布', icon: 'object-group', controller: 'admins-subject_authorizations') %>
  • <%= sidebar_item(admins_library_applies_path, '教学案例发布', icon: 'language', controller: 'admins-library_applies') %>
  • diff --git a/app/views/admins/unit_applies/edit.js.erb b/app/views/admins/unit_applies/edit.js.erb new file mode 100644 index 000000000..15fc1f4c2 --- /dev/null +++ b/app/views/admins/unit_applies/edit.js.erb @@ -0,0 +1,56 @@ +$("body").append("<%= j render partial: "admins/unit_applies/shared/edit_modal",locals: {apply: @unit_apply, schools: @all_schools} %>") +var uni_edit_modal = $(".admin-unit-edit-modal") +uni_edit_modal.modal("show") + +uni_edit_modal.on("hidden.bs.modal",function () { + $(".admin-unit-edit-modal").remove() + $("body").removeClass("modal-open") +}) + +// 初始化学校选择器 +var matcherFunc = function(params, data){ + if ($.trim(params.term) === '') { + return data; + } + if (typeof data.text === 'undefined') { + return null; + } + if (data.name && data.name.indexOf(params.term) > -1) { + var modifiedData = $.extend({}, data, true); + return modifiedData; + } + + // Return `null` if the term should not be displayed + return null; +} +$.ajax({ + url: '/api/schools/for_option.json', + dataType: 'json', + type: 'GET', + success: function(data) { + $("#all-schools").select2({ + theme: 'bootstrap4', + placeholder: '查询学校/单位', + minimumInputLength: 1, + data: data.schools, + templateResult: function (item) { + if(!item.id || item.id === '') return item.text; + return item.name; + }, + templateSelection: function(item){ + return item.name || item.text; + }, + matcher: matcherFunc + }) + } +}); + +$("#all-schools").select2({}) +$("#show-province-<%= @unit_apply.id %>").select2() +$("#schoolCity_<%= @unit_apply.id %>").select2() + +// **************** 地区选择 **************** +$('.province-city-select').cxSelect({ + url: '/javascripts/educoder/province-data.json', + selects: ['province-select', 'city-select'] +}); \ No newline at end of file diff --git a/app/views/admins/unit_applies/index.html.erb b/app/views/admins/unit_applies/index.html.erb new file mode 100644 index 000000000..2b715b87c --- /dev/null +++ b/app/views/admins/unit_applies/index.html.erb @@ -0,0 +1,17 @@ +<% define_admin_breadcrumbs do %> + <% add_admin_breadcrumb('单位审批') %> +<% end %> + +
    + <%= form_tag(admins_unit_applies_path(unsafe_params), method: :get, class: 'form-inline search-form mt-3', remote: true) do %> + <%= text_field_tag(:keyword, params[:keyword], class: 'form-control col-sm-2 ml-3', placeholder: '单位名称检索') %> + <%= submit_tag('搜索', class: 'btn btn-primary ml-3','data-disable-with':"搜索中...") %> + <%= link_to "清除",admins_unit_applies_path(keyword:nil),class:"btn btn-default",remote:true %> + <% end %> +
    + +
    + <%= render(partial: 'admins/unit_applies/shared/list', locals: { applies: @unit_applies }) %> +
    + +<%= render(partial: 'admins/shared/admin_common_refuse_modal') %> diff --git a/app/views/admins/unit_applies/index.js.erb b/app/views/admins/unit_applies/index.js.erb new file mode 100644 index 000000000..d9297d51a --- /dev/null +++ b/app/views/admins/unit_applies/index.js.erb @@ -0,0 +1 @@ +$(".unit-applies-list-container").html("<%= j render partial: "admins/unit_applies/shared/list", locals: {applies: @unit_applies} %>") diff --git a/app/views/admins/unit_applies/shared/_apply_item.html.erb b/app/views/admins/unit_applies/shared/_apply_item.html.erb new file mode 100644 index 000000000..d8a2bdcc4 --- /dev/null +++ b/app/views/admins/unit_applies/shared/_apply_item.html.erb @@ -0,0 +1,17 @@ +<%= apply.id %> +<%= overflow_hidden_span apply.name %> + + <%= "#{apply&.province.to_s}"+"#{apply&.city.to_s}" %> + +<%= overflow_hidden_span apply.address %> +<%= apply.user.try(:show_real_name) %> +<%= format_time apply.created_at %> + + <%= agree_link '批准', agree_admins_unit_apply_path(apply, element: ".unit-apply-#{apply.id}"), 'data-confirm': '确认批准通过?' %> + <%= javascript_void_link('删除', class: 'action refuse-action', + data: { + toggle: 'modal', target: '.admin-common-refuse-modal', id: apply.id, title: "删除原因", type: "delete", + url: admins_unit_apply_path(apply, tip: "unapplied", element: ".unit-apply-#{apply.id}") + }) %> + <%= link_to "更改",edit_admins_unit_apply_path(apply), remote: true, class:"action",'data-disable-with': '打开中...' %> + \ No newline at end of file diff --git a/app/views/admins/unit_applies/shared/_edit_modal.html.erb b/app/views/admins/unit_applies/shared/_edit_modal.html.erb new file mode 100644 index 000000000..6f8995ae0 --- /dev/null +++ b/app/views/admins/unit_applies/shared/_edit_modal.html.erb @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/app/views/admins/unit_applies/shared/_list.html.erb b/app/views/admins/unit_applies/shared/_list.html.erb new file mode 100644 index 000000000..c28ce7967 --- /dev/null +++ b/app/views/admins/unit_applies/shared/_list.html.erb @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + <% if applies.present? %> + <% applies.each do |apply| %> + + <%= render partial: "admins/unit_applies/shared/apply_item", locals: {apply: apply} %> + + <% end %> + <% else %> + <%= render 'admins/shared/no_data_for_table' %> + <% end %> + +
    ID单位名称地区详细地址申请者<%= sort_tag('创建于', name: 'created_at', path: admins_unit_applies_path) %>操作
    + +<%= render partial: 'admins/shared/paginate', locals: { objects: applies } %> \ No newline at end of file diff --git a/app/views/admins/unit_applies/update.js.erb b/app/views/admins/unit_applies/update.js.erb new file mode 100644 index 000000000..725f926d0 --- /dev/null +++ b/app/views/admins/unit_applies/update.js.erb @@ -0,0 +1,6 @@ +$('.modal.admin-unit-edit-modal').modal('hide'); +//$(".modal.admin-unit-edit-modal").remove() +//$("body").removeClass("modal-open") +$('.unit-applies-list-table .unit-apply-<%= @unit_apply.id %>').remove() +//$('.unit-applies-list-table .unit-apply-<%= @unit_apply.id %>').html("<%= j render partial: "admins/unit_applies/shared/apply_item", locals: {apply: @unit_apply} %>") +$.notify({ message: '操作成功' }); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 36d4bcfab..108630366 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -850,7 +850,15 @@ Rails.application.routes.draw do end resources :shixuns, only: [:index,:destroy] resources :shixun_settings, only: [:index,:update] - resources :department_applies,only: [:index,:edit,:update,:destroy] do + resources :department_applies,only: [:index,:destroy] do + collection do + post :merge + end + member do + post :agree + end + end + resources :unit_applies,only: [:index,:destroy,:edit,:update] do member do post :agree end From 66e2c3a61ac3fdb1a847add13531cddb93a614ff Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Thu, 5 Sep 2019 08:53:20 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E5=8D=95=E4=BD=8D=E5=AE=A1=E6=89=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admins/unit_applies/update.js.erb | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/views/admins/unit_applies/update.js.erb b/app/views/admins/unit_applies/update.js.erb index 725f926d0..c710f46b5 100644 --- a/app/views/admins/unit_applies/update.js.erb +++ b/app/views/admins/unit_applies/update.js.erb @@ -1,6 +1,3 @@ $('.modal.admin-unit-edit-modal').modal('hide'); -//$(".modal.admin-unit-edit-modal").remove() -//$("body").removeClass("modal-open") $('.unit-applies-list-table .unit-apply-<%= @unit_apply.id %>').remove() -//$('.unit-applies-list-table .unit-apply-<%= @unit_apply.id %>').html("<%= j render partial: "admins/unit_applies/shared/apply_item", locals: {apply: @unit_apply} %>") $.notify({ message: '操作成功' }); \ No newline at end of file From f8309986736182dfa91a1dfe4bde709c363fcb63 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Thu, 5 Sep 2019 09:01:05 +0800 Subject: [PATCH 04/17] =?UTF-8?q?$$=E5=86=85=E6=9C=89=20=5F=20=20=5F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/editormd/lib/marked.min.js | 5 ++++- public/react/public/js/editormd/editormd.min.js | 6 +++--- public/react/public/js/js_min_all.js | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/public/editormd/lib/marked.min.js b/public/editormd/lib/marked.min.js index 519296797..fd5c74a59 100644 --- a/public/editormd/lib/marked.min.js +++ b/public/editormd/lib/marked.min.js @@ -6,8 +6,11 @@ 备注,这个改动没启用,只是做个记录: br不转成br 加了个 if (cap[0] != '
    ' && cap[0] != '
    ') { out+=this.options.sanitize?escape(cap[0]):cap[0]; } + + out+=this.renderer.em(this.output(cap[2]||cap[1])) --> + out+=this.renderer.em(this.output(cap[2]||cap[1]), cap.input) */ (function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,paragraph:/^/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose){loose=next}}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq); -this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:cap[1]==="pre"||cap[1]==="script"||cap[1]==="style",text:cap[0]});continue}if((!bq&&top)&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else{if(this.options.pedantic){this.rules=inline.pedantic}}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^/i.test(cap[0])){this.inLink=false}}src=src.substring(cap[0].length);out+=this.options.sanitize?escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue +this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:cap[1]==="pre"||cap[1]==="script"||cap[1]==="style",text:cap[0]});continue}if((!bq&&top)&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else{if(this.options.pedantic){this.rules=inline.pedantic}}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^/i.test(cap[0])){this.inLink=false}}src=src.substring(cap[0].length);out+=this.options.sanitize?escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]), cap.input);continue }if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.codespan(escape(cap[2],true));continue}if(cap=this.rules.br.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.br();continue}if(cap=this.rules.del.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.del(this.output(cap[1]));continue}if(cap=this.rules.text.exec(src)){src=src.substring(cap[0].length);out+=escape(this.smartypants(cap[0]));continue}if(src){throw new Error("Infinite loop on byte: "+src.charCodeAt(0))}}return out};InlineLexer.prototype.outputLink=function(cap,link){var href=escape(link.href),title=link.title?escape(link.title):null;return cap[0].charAt(0)!=="!"?this.renderer.link(href,title,this.output(cap[1])):this.renderer.image(href,title,escape(cap[1]))};InlineLexer.prototype.smartypants=function(text){if(!this.options.smartypants){return text}return text.replace(/--/g,"\u2014").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1\u2018").replace(/'/g,"\u2019").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1\u201c").replace(/"/g,"\u201d").replace(/\.{3}/g,"\u2026")};InlineLexer.prototype.mangle=function(text){var out="",l=text.length,i=0,ch;for(;i0.5){ch="x"+ch.toString(16)}out+="&#"+ch+";"}return out};function Renderer(options){this.options=options||{}}Renderer.prototype.code=function(code,lang,escaped){if(this.options.highlight){var out=this.options.highlight(code,lang);if(out!=null&&out!==code){escaped=true;code=out}}if(!lang){return"
    "+(escaped?code:escape(code,true))+"\n
    "}return'
    '+(escaped?code:escape(code,true))+"\n
    \n"};Renderer.prototype.blockquote=function(quote){return"
    \n"+quote+"
    \n"};Renderer.prototype.html=function(html){return html};Renderer.prototype.heading=function(text,level,raw){return"'+text+"\n"};Renderer.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"};Renderer.prototype.list=function(body,ordered){var type=ordered?"ol":"ul";return"<"+type+">\n"+body+"\n"};Renderer.prototype.listitem=function(text){return"
  • "+text+"
  • \n"};Renderer.prototype.paragraph=function(text){return"

    "+text+"

    \n"};Renderer.prototype.table=function(header,body){return"\n"+"\n"+header+"\n"+"\n"+body+"\n"+"
    \n"};Renderer.prototype.tablerow=function(content){return"\n"+content+"\n"};Renderer.prototype.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+content+"\n"};Renderer.prototype.strong=function(text){return""+text+""};Renderer.prototype.em=function(text){return""+text+""};Renderer.prototype.codespan=function(text){return""+text+""};Renderer.prototype.br=function(){return this.options.xhtml?"
    ":"
    "};Renderer.prototype.del=function(text){return""+text+""};Renderer.prototype.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0||prot.indexOf("vbscript:")===0){return""}}var out='
    ";return out};Renderer.prototype.image=function(href,title,text){var out=''+text+'":">";return out};function Parser(options){this.tokens=[];this.token=null;this.options=options||marked.defaults;this.options.renderer=this.options.renderer||new Renderer;this.renderer=this.options.renderer;this.renderer.options=this.options}Parser.parse=function(src,options,renderer){var parser=new Parser(options,renderer);return parser.parse(src)};Parser.prototype.parse=function(src){this.inline=new InlineLexer(src.links,this.options,this.renderer);this.tokens=src.reverse();var out="";while(this.next()){out+=this.tok()}return out};Parser.prototype.next=function(){return this.token=this.tokens.pop()};Parser.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0};Parser.prototype.parseText=function(){var body=this.token.text;while(this.peek().type==="text"){body+="\n"+this.next().text}return this.inline.output(body)};Parser.prototype.tok=function(){switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var header="",body="",i,row,cell,flags,j;cell="";for(i=0;i/g,">").replace(/"/g,""").replace(/'/g,"'")}function unescape(html){return html.replace(/&([#\w]+);/g,function(_,n){n=n.toLowerCase();if(n==="colon"){return":"}if(n.charAt(0)==="#"){return n.charAt(1)==="x"?String.fromCharCode(parseInt(n.substring(2),16)):String.fromCharCode(+n.substring(1))}return""})}function replace(regex,opt){regex=regex.source;opt=opt||"";return function self(name,val){if(!name){return new RegExp(regex,opt)}val=val.source||val;val=val.replace(/(^|[^\[])\^/g,"$1");regex=regex.replace(name,val);return self}}function noop(){}noop.exec=noop;function merge(obj){var i=1,target,key;for(;iAn error occured:

    "+escape(e.message+"",true)+"
    "}throw e}}marked.options=marked.setOptions=function(opt){merge(marked.defaults,opt);return marked};marked.defaults={gfm:true,tables:true,breaks:false,pedantic:false,sanitize:false,smartLists:false,silent:false,highlight:null,langPrefix:"lang-",smartypants:false,headerPrefix:"",renderer:new Renderer,xhtml:false};marked.Parser=Parser;marked.parser=Parser.parse;marked.Renderer=Renderer;marked.Lexer=Lexer;marked.lexer=Lexer.lex;marked.InlineLexer=InlineLexer;marked.inlineLexer=InlineLexer.output;marked.parse=marked;if(typeof module!=="undefined"&&typeof exports==="object"){module.exports=marked}else{if(typeof define==="function"&&define.amd){define(function(){return marked})}else{this.marked=marked}}}).call(function(){return this||(typeof window!=="undefined"?window:global)}()); \ No newline at end of file diff --git a/public/react/public/js/editormd/editormd.min.js b/public/react/public/js/editormd/editormd.min.js index 79c072919..ac3deac1a 100755 --- a/public/react/public/js/editormd/editormd.min.js +++ b/public/react/public/js/editormd/editormd.min.js @@ -3601,9 +3601,9 @@ return text; }; - markedRenderer.em = function (text) { - if (text && text.indexOf('$$') != -1) { - return text; + markedRenderer.em = function (text, capInput) { + if (text && text.indexOf('$$') != -1 || (capInput && capInput.indexOf('$$') != -1)) { + return '_' + text + '_'; } else { return '' + text + ''; } diff --git a/public/react/public/js/js_min_all.js b/public/react/public/js/js_min_all.js index 6d0838c59..57606faa6 100755 --- a/public/react/public/js/js_min_all.js +++ b/public/react/public/js/js_min_all.js @@ -83,7 +83,7 @@ function AssertException(message){this.message=message}function assert(exp,messa * {@link https://github.com/pandao/editor.md} * @updateTime 2015-06-09 */ -function initEditormdPasteUpload(e,t,i){e.cm.getInputField().addEventListener("paste",function(i){_whenPasterDoUpload(i,t,function(t){t.id&&e.cm.replaceSelection("![](/api/attachments/"+t.id+")")})})}!function(e){"use strict";"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?module.exports=e:"function"==typeof define?define.amd||define(["../../../../editormd/examples/js/jquery.min"],e):window.editormd=e()}(function(){"use strict";var e="undefined"!=typeof jQuery?jQuery:Zepto;if(void 0!==e){var t,i,o,r=function(e,t){return new r.fn.init(e,t)};r.title=r.$name="Editor.md",r.version="1.5.0",r.homePage="https://pandao.github.io/editor.md/",r.classPrefix="editormd-",r.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","reference-link","image","code","preformatted-text","code-block","table","datetime","emoji","html-entities","pagebreak","|","goto-line","watch","preview","fullscreen","clear","search","|","help","info"],simple:["undo","redo","|","bold","del","italic","quote","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","watch","preview","fullscreen","|","help","info"],mini:["undo","redo","|","watch","preview","|","help","info"]},r.defaults={mode:"gfm",name:"",value:"",theme:"",editorTheme:"default",previewTheme:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:!0,watch:!0,placeholder:"Enjoy Markdown! coding now...",gotoLine:!0,codeFold:!1,autoHeight:!1,autoFocus:!0,autoCloseTags:!0,searchReplace:!0,syncScrolling:!0,readOnly:!1,tabSize:4,indentUnit:4,lineNumbers:!0,lineWrapping:!0,autoCloseBrackets:!0,showTrailingSpace:!0,matchBrackets:!0,indentWithTabs:!0,styleSelectedText:!0,matchWordHighlight:!0,styleActiveLine:!0,dialogLockScreen:!0,dialogShowMask:!0,dialogDraggable:!0,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:!1,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:!1,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:!1,uploadCallbackURL:"",toc:!0,tocm:!1,tocTitle:"",tocDropdown:!1,tocContainer:"",tocStartLevel:1,htmlDecode:"style,iframe|on*",pageBreak:!0,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0,toolbar:!0,toolbarAutoFixed:!0,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return r.toolbarHandlers.ucwords},lowercase:function(){return r.toolbarHandlers.lowercase}},toolbarCustomIcons:{lowercase:'
    a',ucwords:'Aa'},toolbarIconsClass:{undo:"fa-undo",redo:"fa-repeat",bold:"fa-bold",del:"fa-strikethrough",italic:"fa-italic",quote:"fa-quote-left",uppercase:"fa-font",h1:r.classPrefix+"bold",h2:r.classPrefix+"bold",h3:r.classPrefix+"bold",h4:r.classPrefix+"bold",h5:r.classPrefix+"bold",h6:r.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link","reference-link":"fa-anchor",image:"fa-picture-o",code:"fa-code","preformatted-text":"fa-file-code-o","code-block":"fa-file-code-o",table:"fa-table",datetime:"fa-clock-o",emoji:"fa-smile-o","html-entities":"fa-copyright",pagebreak:"fa-newspaper-o","goto-line":"fa-terminal",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-desktop",search:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},lang:{name:"zh-cn",description:"开源在线Markdown编辑器
    Open source online Markdown editor.",tocTitle:"目录",toolbar:{undo:"撤销(Ctrl+Z)",redo:"重做(Ctrl+Y)",bold:"粗体",del:"删除线",italic:"斜体",quote:"引用",ucwords:"将每个单词首字母转成大写",uppercase:"将所选转换成大写",lowercase:"将所选转换成小写",h1:"标题1",h2:"标题2",h3:"标题3",h4:"标题4",h5:"标题5",h6:"标题6","list-ul":"无序列表","list-ol":"有序列表",hr:"横线",link:"链接","reference-link":"引用链接",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情","html-entities":"HTML实体字符",pagebreak:"插入分页符","goto-line":"跳转到行",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(按 Shift + ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",search:"搜索",help:"使用帮助",info:"关于"+r.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},referenceLink:{title:"添加引用链接",name:"引用名称",url:"链接地址",urlId:"链接ID",urlTitle:"链接标题",nameEmpty:"错误:引用链接的名称不能为空。",idEmpty:"错误:请填写引用链接的ID。",urlEmpty:"错误:请填写引用链接的URL地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}},r.classNames={tex:r.classPrefix+"tex"},r.dialogZindex=99999,r.$katex=null,r.$marked=null,r.$CodeMirror=null,r.$prettyPrint=null,r.prototype=r.fn={state:{watching:!1,loaded:!1,preview:!1,fullscreen:!1},init:function(t,i){i=i||{},"object"==typeof t&&(i=t);var a=this.classPrefix=r.classPrefix,n=o=e.extend(!0,r.defaults,i);this.settings=n,t="object"==typeof t?n.id:t;var s=this.editor=e("#"+t);this.id=t,this.lang=n.lang;var l=this.classNames={textarea:{html:a+"html-textarea",markdown:a+"markdown-textarea"}};n.pluginPath=""===n.pluginPath?n.path+"../plugins/":n.pluginPath,this.state.watching=!!n.watch,s.hasClass("editormd")||s.addClass("editormd"),s.css({width:"number"==typeof n.width?n.width+"px":n.width,height:"number"==typeof n.height?n.height+"px":n.height}),n.autoHeight&&s.css("height","auto");var c=this.markdownTextarea=s.children("textarea");c.length<1&&(s.append(""),c=this.markdownTextarea=s.children("textarea")),c.addClass(l.textarea.markdown).attr("placeholder",n.placeholder),void 0!==c.attr("name")&&""!==c.attr("name")||c.attr("name",""!==n.name?n.name:t+"-markdown-doc");var h=[n.readOnly?"":'',n.saveHTMLToTextarea?'':"",'
    ','
    ','
    '].join("\n");return s.append(h).addClass(a+"vertical"),""!==n.theme&&s.addClass(a+"theme-"+n.theme),this.mask=s.children("."+a+"mask"),this.containerMask=s.children("."+a+"container-mask"),""!==n.markdown&&c.val(n.markdown),""!==n.appendMarkdown&&c.val(c.val()+n.appendMarkdown),this.htmlTextarea=s.children("."+l.textarea.html),this.preview=s.children("."+a+"preview"),this.previewContainer=this.preview.children("."+a+"preview-container"),""!==n.previewTheme&&this.preview.addClass(a+"preview-theme-"+n.previewTheme),"function"==typeof define&&define.amd&&("undefined"!=typeof katex&&(r.$katex=katex),n.searchReplace&&!n.readOnly&&(r.loadCSS(n.path+"codemirror/addon/dialog/dialog"),r.loadCSS(n.path+"codemirror/addon/search/matchesonscrollbar"))),"function"==typeof define&&define.amd||!n.autoLoadModules?("undefined"!=typeof CodeMirror&&(r.$CodeMirror=CodeMirror),"undefined"!=typeof marked&&(r.$marked=marked),this.setCodeMirror().setToolbar().loadedDisplay()):this.loadQueues(),this},loadQueues:function(){var e=this,t=o,i=t.path,a=function(){r.isIE8?e.loadedDisplay():t.flowChart||t.sequenceDiagram?r.loadScript(i+"raphael.min",function(){r.loadScript(i+"underscore.min",function(){!t.flowChart&&t.sequenceDiagram?r.loadScript(i+"sequence-diagram.min",function(){e.loadedDisplay()}):t.flowChart&&!t.sequenceDiagram?r.loadScript(i+"flowchart.min",function(){r.loadScript(i+"jquery.flowchart.min",function(){e.loadedDisplay()})}):t.flowChart&&t.sequenceDiagram&&r.loadScript(i+"flowchart.min",function(){r.loadScript(i+"jquery.flowchart.min",function(){r.loadScript(i+"sequence-diagram.min",function(){e.loadedDisplay()})})})})}):e.loadedDisplay()};return t.searchReplace&&!t.readOnly&&(r.loadCSS(i+"codemirror/addon/dialog/dialog"),r.loadCSS(i+"codemirror/addon/search/matchesonscrollbar")),t.codeFold&&r.loadCSS(i+"codemirror/addon/fold/foldgutter"),r.$CodeMirror=CodeMirror,r.loadScript(i+"codemirror/modes.min",function(){r.loadScript(i+"codemirror/addons.min",function(){if(e.setCodeMirror(),"gfm"!==t.mode&&"markdown"!==t.mode)return e.loadedDisplay(),!1;e.setToolbar(),r.loadScript(i+"marked.min",function(){r.$marked=marked,t.previewCodeHighlight?r.loadScript(i+"prettify.min",function(){a()}):a()})})}),this},setTheme:function(e){var t=this.editor,i=o.theme,r=this.classPrefix+"theme-";return t.removeClass(r+i).addClass(r+e),o.theme=e,this},setEditorTheme:function(e){var t=o;return t.editorTheme=e,"default"!==e&&r.loadCSS(t.path+"codemirror/theme/"+t.editorTheme),this.cm.setOption("theme",e),this},setCodeMirrorTheme:function(e){return this.setEditorTheme(e),this},setPreviewTheme:function(e){var t=this.preview,i=o.previewTheme,r=this.classPrefix+"preview-theme-";return t.removeClass(r+i).addClass(r+e),o.previewTheme=e,this},setCodeMirror:function(){var e=o,t=this.editor;"default"!==e.editorTheme&&r.loadCSS(e.path+"codemirror/theme/"+e.editorTheme);var i={mode:e.mode,theme:e.editorTheme,tabSize:e.tabSize,dragDrop:!1,autofocus:e.autoFocus,autoCloseTags:e.autoCloseTags,readOnly:!!e.readOnly&&"nocursor",indentUnit:e.indentUnit,lineNumbers:e.lineNumbers,lineWrapping:e.lineWrapping,extraKeys:{"Ctrl-Q":function(e){e.foldCode(e.getCursor())}},foldGutter:e.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:e.matchBrackets,indentWithTabs:e.indentWithTabs,styleActiveLine:e.styleActiveLine,styleSelectedText:e.styleSelectedText,autoCloseBrackets:e.autoCloseBrackets,showTrailingSpace:e.showTrailingSpace,highlightSelectionMatches:!!e.matchWordHighlight&&{showToken:"onselected"!==e.matchWordHighlight&&/\w/}};return this.codeEditor=this.cm=r.$CodeMirror.fromTextArea(this.markdownTextarea[0],i),this.codeMirror=this.cmElement=t.children(".CodeMirror"),""!==e.value&&this.cm.setValue(e.value),this.codeMirror.css({fontSize:e.fontSize,width:e.watch?"50%":"100%"}),e.autoHeight&&(this.codeMirror.css("height","auto"),this.cm.setOption("viewportMargin",1/0)),e.lineNumbers||this.codeMirror.find(".CodeMirror-gutters").css("border-right","none"),this},getCodeMirrorOption:function(e){return this.cm.getOption(e)},setCodeMirrorOption:function(e,t){return this.cm.setOption(e,t),this},addKeyMap:function(e,t){return this.cm.addKeyMap(e,t),this},removeKeyMap:function(e){return this.cm.removeKeyMap(e),this},gotoLine:function(t){var i=o;if(!i.gotoLine)return this;var r=this.cm,a=(this.editor,r.lineCount()),n=this.preview;if("string"==typeof t&&("last"===t&&(t=a),"first"===t&&(t=1)),"number"!=typeof t)return alert("Error: The line number must be an integer."),this;if((t=parseInt(t)-1)>a)return alert("Error: The line number range 1-"+a),this;r.setCursor({line:t,ch:0});var s=r.getScrollInfo().clientHeight,l=r.charCoords({line:t,ch:0},"local");if(r.scrollTo(null,(l.top+l.bottom-s)/2),i.watch){var c=this.codeMirror.find(".CodeMirror-scroll")[0],h=e(c).height(),d=c.scrollTop,u=d/c.scrollHeight;0===d?n.scrollTop(0):d+h>=c.scrollHeight-16?n.scrollTop(n[0].scrollHeight):n.scrollTop(n[0].scrollHeight*u)}return r.focus(),this},extend:function(){return void 0!==arguments[1]&&("function"==typeof arguments[1]&&(arguments[1]=e.proxy(arguments[1],this)),this[arguments[0]]=arguments[1]),"object"==typeof arguments[0]&&void 0===arguments[0].length&&e.extend(!0,this,arguments[0]),this},set:function(t,i){return void 0!==i&&"function"==typeof i&&(i=e.proxy(i,this)),this[t]=i,this},config:function(t,i){var r=o;return"object"==typeof t&&(r=e.extend(!0,r,t)),"string"==typeof t&&(r[t]=i),o=r,this.recreate(),this},on:function(t,i){var r=o;return void 0!==r["on"+t]&&(r["on"+t]=e.proxy(i,this)),this},off:function(e){var t=o;return void 0!==t["on"+e]&&(t["on"+e]=function(){}),this},showToolbar:function(t){var i=o;return i.readOnly?this:(i.toolbar&&(this.toolbar.length<1||""===this.toolbar.find("."+this.classPrefix+"menu").html())&&this.setToolbar(),i.toolbar=!0,this.toolbar.show(),this.resize(),e.proxy(t||function(){},this)(),this)},hideToolbar:function(t){return o.toolbar=!1,this.toolbar.hide(),this.resize(),e.proxy(t||function(){},this)(),this},setToolbarAutoFixed:function(t){var i=this.state,r=this.editor,a=this.toolbar,n=o;void 0!==t&&(n.toolbarAutoFixed=t);return!i.fullscreen&&!i.preview&&n.toolbar&&n.toolbarAutoFixed&&e(window).bind("scroll",function(){var t=e(window),i=t.scrollTop();if(!n.toolbarAutoFixed)return!1;i-r.offset().top>10&&i
      ';t.append(n),a=this.toolbar=t.children("."+i+"toolbar")}if(!e.toolbar)return a.hide(),this;a.show();for(var s="function"==typeof e.toolbarIcons?e.toolbarIcons(this):"string"==typeof e.toolbarIcons?r.toolbarModes[e.toolbarIcons]:e.toolbarIcons,l=a.find("."+this.classPrefix+"menu"),c="",h=!1,d=0,u=s.length;d|';else{var p=/h(\d)/.test(f),m=f;"watch"!==f||e.watch||(m="unwatch");var g=e.lang.toolbar[m],w=e.toolbarIconTexts[m],v=e.toolbarIconsClass[m];g=void 0===g?"":g,w=void 0===w?"":w,v=void 0===v?"":v;var k=h?'
    • ':"
    • ";void 0!==e.toolbarCustomIcons[f]&&"function"!=typeof e.toolbarCustomIcons[f]?k+=e.toolbarCustomIcons[f]:(k+='',k+=''+(p?f.toUpperCase():""===v?w:"")+"",k+=""),k+="
    • ",c=h?k+c:c+k}}return l.html(c),l.find('[title="Lowercase"]').attr("title",e.lang.toolbar.lowercase),l.find('[title="ucwords"]').attr("title",e.lang.toolbar.ucwords),this.setToolbarHandler(),this.setToolbarAutoFixed(),this},dialogLockScreen:function(){return e.proxy(r.dialogLockScreen,this)(),this},dialogShowMask:function(t){return e.proxy(r.dialogShowMask,this)(t),this},getToolbarHandles:function(e){var t=this.toolbarHandlers=r.toolbarHandlers;return e&&void 0!==toolbarIconHandlers[e]?t[e]:t},setToolbarHandler:function(){var t=this,i=o;if(!i.toolbar||i.readOnly)return this;var a=this.toolbar,n=this.cm,s=this.classPrefix,l=this.toolbarIcons=a.find("."+s+"menu > li > a"),c=this.getToolbarHandles();return l.bind(r.mouseOrTouch("click","touchend"),function(o){var r=e(this).children(".fa"),a=r.attr("name"),s=n.getCursor(),l=n.getSelection();if(""!==a)return t.activeIcon=r,void 0!==c[a]?e.proxy(c[a],t)(n):void 0!==i.toolbarHandlers[a]&&e.proxy(i.toolbarHandlers[a],t)(n,r,s,l),"link"!==a&&"reference-link"!==a&&"image"!==a&&"code-block"!==a&&"preformatted-text"!==a&&"watch"!==a&&"preview"!==a&&"search"!==a&&"fullscreen"!==a&&"info"!==a&&n.focus(),!1}),this},createDialog:function(t){return e.proxy(r.createDialog,this)(t)},createInfoDialog:function(){var e=this,t=this.editor,i=this.classPrefix,o=['
      ','
      ','

      '+r.title+"v"+r.version+"

      ","

      "+this.lang.description+"

      ",'

      '+r.homePage+'

      ','

      Copyright © 2015 Pandao, The MIT License.

      ',"
      ",'',"
      "].join("\n");t.append(o);var a=this.infoDialog=t.children("."+i+"dialog-info");return a.find("."+i+"dialog-close").bind(r.mouseOrTouch("click","touchend"),function(){e.hideInfoDialog()}),a.css("border",r.isIE8?"1px solid #ddd":"").css("z-index",r.dialogZindex).show(),this.infoDialogPosition(),this},infoDialogPosition:function(){var t=this.infoDialog,i=function(){t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"})};return i(),e(window).resize(i),this},showInfoDialog:function(){e("html,body").css("overflow-x","hidden");var t=this.editor,i=o,a=this.infoDialog=t.children("."+this.classPrefix+"dialog-info");return a.length<1&&this.createInfoDialog(),this.lockScreen(!0),this.mask.css({opacity:i.dialogMaskOpacity,backgroundColor:i.dialogMaskBgColor}).show(),a.css("z-index",r.dialogZindex).show(),this.infoDialogPosition(),this},hideInfoDialog:function(){return e("html,body").css("overflow-x",""),this.infoDialog.hide(),this.mask.hide(),this.lockScreen(!1),this},lockScreen:function(e){return r.lockScreen(e),this.resize(),this},recreate:function(){var e=this.editor,t=o;return this.codeMirror.remove(),this.setCodeMirror(),t.readOnly||(e.find(".editormd-dialog").length>0&&e.find(".editormd-dialog").remove(),t.toolbar&&(this.getToolbarHandles(),this.setToolbar())),this.loadedDisplay(!0),this},previewCodeHighlight:function(){var e=o,t=this.previewContainer;return e.previewCodeHighlight&&(t.find("pre").addClass("prettyprint linenums"),"undefined"!=typeof prettyPrint&&prettyPrint()),this},katexRender:function(){return null===t?this:(this.previewContainer.find("."+r.classNames.tex).each(function(){var t=e(this);r.$katex.render(t.text(),t[0]),t.find(".katex").css("font-size","1.0em")}),this)},flowChartAndSequenceDiagramRender:function(){var t=o,a=this.previewContainer;if(r.isIE8)return this;if(t.flowChart){if(null===i)return this;a.find(".flowchart").flowChart()}t.sequenceDiagram&&a.find(".sequence-diagram").sequenceDiagram({theme:"simple"});var n=this.preview,s=this.codeMirror.find(".CodeMirror-scroll"),l=s.height(),c=s.scrollTop(),h=c/s[0].scrollHeight,d=0;n.find(".markdown-toc-list").each(function(){d+=e(this).height()});var u=n.find(".editormd-toc-menu").height();return u=u||0,0===c?n.scrollTop(0):c+l>=s[0].scrollHeight-16?n.scrollTop(n[0].scrollHeight):n.scrollTop((n[0].scrollHeight+d+u)*h),this},registerKeyMaps:function(t){var i=this,a=this.cm,n=o,s=r.toolbarHandlers,l=n.disabledKeyMaps;if(t=t||null){for(var c in t)if(e.inArray(c,l)<0){t[c],a.addKeyMap(t)}}else{for(var h in r.keyMaps){var d=r.keyMaps[h],u="string"==typeof d?e.proxy(s[d],i):e.proxy(d,i);if(e.inArray(h,["F9","F10","F11"])<0&&e.inArray(h,l)<0){var f={};f[h]=u,a.addKeyMap(f)}}e(window).keydown(function(t){if(e.inArray({120:"F9",121:"F10",122:"F11"}[t.keyCode],l)<0)switch(t.keyCode){case 120:return e.proxy(s.watch,i)(),!1;case 121:return e.proxy(s.preview,i)(),!1;case 122:return e.proxy(s.fullscreen,i)(),!1}})}return this},bindScrollEvent:function(){var t=this,i=this.preview,a=o,n=this.codeMirror,s=r.mouseOrTouch;if(!a.syncScrolling)return this;var l=function(){n.find(".CodeMirror-scroll").bind(s("scroll","touchmove"),function(o){var r=e(this).height(),n=e(this).scrollTop(),s=n/e(this)[0].scrollHeight,l=0;i.find(".markdown-toc-list").each(function(){l+=e(this).height()});var c=i.find(".editormd-toc-menu").height();c=c||0,0===n?i.scrollTop(0):n+r>=e(this)[0].scrollHeight-16?i.scrollTop(i[0].scrollHeight):i.scrollTop((i[0].scrollHeight+l+c)*s),e.proxy(a.onscroll,t)(o)})},c=function(){n.find(".CodeMirror-scroll").unbind(s("scroll","touchmove"))},h=function(){i.bind(s("scroll","touchmove"),function(i){var o=e(this).height(),r=e(this).scrollTop(),s=r/e(this)[0].scrollHeight,l=n.find(".CodeMirror-scroll");0===r?l.scrollTop(0):r+o>=e(this)[0].scrollHeight?l.scrollTop(l[0].scrollHeight):l.scrollTop(l[0].scrollHeight*s),e.proxy(a.onpreviewscroll,t)(i)})},d=function(){i.unbind(s("scroll","touchmove"))};return n.bind({mouseover:l,mouseout:c,touchstart:l,touchend:c}),"single"===a.syncScrolling?this:(i.bind({mouseover:h,mouseout:d,touchstart:h,touchend:d}),this)},bindChangeEvent:function(){var e=this,i=this.cm,r=o;return r.syncScrolling?(i.on("change",function(i,o){r.watch&&e.previewContainer.css("padding",r.autoHeight?"20px 20px 50px 40px":"20px"),t=setTimeout(function(){clearTimeout(t),e.save(),t=null},r.delay)}),this):this},loadedDisplay:function(t){t=t||!1;var i=this,r=this.editor,a=this.preview,n=o;return this.containerMask.hide(),this.save(),n.watch&&a.show(),r.data("oldWidth",r.width()).data("oldHeight",r.height()),this.resize(),this.registerKeyMaps(),e(window).resize(function(){i.resize()}),this.bindScrollEvent().bindChangeEvent(),t||(n.imageUploadURL&&initEditormdPasteUpload(this,n.imageUploadURL),e.proxy(n.onload,this)()),this.state.loaded=!0,this},width:function(e){return this.editor.css("width","number"==typeof e?e+"px":e),this.resize(),this},height:function(e){return this.editor.css("height","number"==typeof e?e+"px":e),this.resize(),this},resize:function(t,i){t=t||null,i=i||null;var r=this.state,a=this.editor,n=this.preview,s=this.toolbar,l=o,c=this.codeMirror;if(t&&a.css("width","number"==typeof t?t+"px":t),!l.autoHeight||r.fullscreen||r.preview?(i&&a.css("height","number"==typeof i?i+"px":i),r.fullscreen&&a.height(e(window).height()),l.toolbar&&!l.readOnly?c.css("margin-top",s.height()+1).height(a.height()-s.height()):c.css("margin-top",0).height(a.height())):(a.css("height","auto"),c.css("height","auto")),l.watch)if(c.width(a.width()/2),n.width(r.preview?a.width():a.width()/2),this.previewContainer.css("padding",l.autoHeight?"20px 20px 50px 40px":"20px"),l.toolbar&&!l.readOnly?n.css("top",s.height()+1):n.css("top",0),!l.autoHeight||r.fullscreen||r.preview){var h=l.toolbar&&!l.readOnly?a.height()-s.height():a.height();n.height(h)}else n.height("");else c.width(a.width()),n.hide();return r.loaded&&e.proxy(l.onresize,this)(),this},save:function(){if(null===t)return this;var a=this,n=this.state,s=o,l=this.cm,c=l.getValue(),h=this.previewContainer;if("gfm"!==s.mode&&"markdown"!==s.mode)return this.markdownTextarea.val(c),this;var d=r.$marked,u=this.markdownToC=[],f=this.markedRendererOptions={toc:s.toc,tocm:s.tocm,tocStartLevel:s.tocStartLevel,pageBreak:s.pageBreak,taskList:s.taskList,emoji:s.emoji,tex:s.tex,atLink:s.atLink,emailLink:s.emailLink,flowChart:s.flowChart,sequenceDiagram:s.sequenceDiagram,previewCodeHighlight:s.previewCodeHighlight},p=this.markedOptions={renderer:r.markedRenderer(u,f),gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:!s.htmlDecode,smartLists:!0,smartypants:!0};d.setOptions(p);var m=r.$marked(c,p);if(m=r.filterHTMLTags(m,s.htmlDecode),this.markdownTextarea.text(c),l.save(),s.saveHTMLToTextarea&&this.htmlTextarea.text(m),s.watch||!s.watch&&n.preview){if(h.html(m),this.previewCodeHighlight(),s.toc){var g=""===s.tocContainer?h:e(s.tocContainer),w=g.find("."+this.classPrefix+"toc-menu");g.attr("previewContainer",""===s.tocContainer?"true":"false"),""!==s.tocContainer&&w.length>0&&w.remove(),r.markdownToCRenderer(u,g,s.tocDropdown,s.tocStartLevel),(s.tocDropdown||g.find("."+this.classPrefix+"toc-menu").length>0)&&r.tocDropdownMenu(g,""!==s.tocTitle?s.tocTitle:this.lang.tocTitle),""!==s.tocContainer&&h.find(".markdown-toc").css("border","none")}s.tex&&(!r.kaTeXLoaded&&s.autoLoadModules?r.loadKaTeX(function(){r.$katex=katex,r.kaTeXLoaded=!0,a.katexRender()}):(r.$katex=katex,this.katexRender())),(s.flowChart||s.sequenceDiagram)&&(i=setTimeout(function(){clearTimeout(i),a.flowChartAndSequenceDiagramRender(),i=null},10)),n.loaded&&e.proxy(s.onchange,this)()}return this},focus:function(){return this.cm.focus(),this},setCursor:function(e){return this.cm.setCursor(e),this},getCursor:function(){return this.cm.getCursor()},setSelection:function(e,t){return this.cm.setSelection(e,t),this},getSelection:function(){return this.cm.getSelection()},setSelections:function(e){return this.cm.setSelections(e),this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(e){return this.cm.replaceSelection(e),this},insertValue:function(e){return this.replaceSelection(e),this},appendMarkdown:function(e){var t=this.cm;return t.setValue(t.getValue()+e),this},setMarkdown:function(e){return this.cm.setValue(e||o.markdown),this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(e){return this.cm.setValue(e),this},clear:function(){return this.cm.setValue(""),this},getHTML:function(){return o.saveHTMLToTextarea?this.htmlTextarea.val():(alert("Error: settings.saveHTMLToTextarea == false"),!1)},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){return o.watch?this.previewContainer.html():(alert("Error: settings.watch == false"),!1)},watch:function(i){var r=o;if(e.inArray(r.mode,["gfm","markdown"])<0)return this;if(this.state.watching=r.watch=!0,this.preview.show(),this.toolbar){var a=r.toolbarIconsClass.watch,n=r.toolbarIconsClass.unwatch,s=this.toolbar.find(".fa[name=watch]");s.parent().attr("title",r.lang.toolbar.watch),s.removeClass(n).addClass(a)}return this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2),t=0,this.save().resize(),r.onwatch||(r.onwatch=i||function(){}),e.proxy(r.onwatch,this)(),this},unwatch:function(t){var i=o;if(this.state.watching=i.watch=!1,this.preview.hide(),this.toolbar){var r=i.toolbarIconsClass.watch,a=i.toolbarIconsClass.unwatch,n=this.toolbar.find(".fa[name=watch]");n.parent().attr("title",i.lang.toolbar.unwatch),n.removeClass(r).addClass(a)}return this.codeMirror.css("border-right","none").width(this.editor.width()),this.resize(),i.onunwatch||(i.onunwatch=t||function(){}),e.proxy(i.onunwatch,this)(),this},show:function(t){t=t||function(){};var i=this;return this.editor.show(0,function(){e.proxy(t,i)()}),this},hide:function(t){t=t||function(){};var i=this;return this.editor.hide(0,function(){e.proxy(t,i)()}),this},previewing:function(){var t=this,i=this.editor,a=this.preview,n=this.toolbar,s=o,l=this.codeMirror,c=this.previewContainer;if(e.inArray(s.mode,["gfm","markdown"])<0)return this;s.toolbar&&n&&(n.toggle(),n.find(".fa[name=preview]").toggleClass("active")),l.toggle();var h=function(e){e.shiftKey&&27===e.keyCode&&t.previewed()};"none"===l.css("display")?(this.state.preview=!0,this.state.fullscreen&&a.css("background","#fff"),i.find("."+this.classPrefix+"preview-close-btn").show().bind(r.mouseOrTouch("click","touchend"),function(){t.previewed()}),s.watch?c.css("padding",""):this.save(),c.addClass(this.classPrefix+"preview-active"),a.show().css({position:"",top:0,width:i.width(),height:s.autoHeight&&!this.state.fullscreen?"auto":i.height()}),this.state.loaded&&e.proxy(s.onpreviewing,this)(),e(window).bind("keyup",h)):(e(window).unbind("keyup",h),this.previewed())},previewed:function(){var t=this.editor,i=this.preview,a=this.toolbar,n=o,s=this.previewContainer,l=t.find("."+this.classPrefix+"preview-close-btn");return this.state.preview=!1,this.codeMirror.show(),n.toolbar&&a.show(),i[n.watch?"show":"hide"](),l.hide().unbind(r.mouseOrTouch("click","touchend")),s.removeClass(this.classPrefix+"preview-active"),n.watch&&s.css("padding","20px"),i.css({background:null,position:"absolute",width:t.width()/2,height:n.autoHeight&&!this.state.fullscreen?"auto":t.height()-a.height(),top:n.toolbar?a.height():0}),this.state.loaded&&e.proxy(n.onpreviewed,this)(),this},fullscreen:function(){var t=this,i=this.state,r=this.editor,a=(this.preview,this.toolbar),n=o,s=this.classPrefix+"fullscreen";a&&a.find(".fa[name=fullscreen]").parent().toggleClass("active");var l=function(e){e.shiftKey||27!==e.keyCode||i.fullscreen&&t.fullscreenExit()};return r.hasClass(s)?(e(window).unbind("keyup",l),this.fullscreenExit()):(i.fullscreen=!0,e("html,body").css("overflow","hidden"),r.css({width:e(window).width(),height:e(window).height()}).addClass(s),this.resize(),e.proxy(n.onfullscreen,this)(),e(window).bind("keyup",l)),this},fullscreenExit:function(){var t=this.editor,i=o,r=this.toolbar,a=this.classPrefix+"fullscreen";return this.state.fullscreen=!1,r&&r.find(".fa[name=fullscreen]").parent().removeClass("active"),e("html,body").css("overflow",""),t.css({width:t.data("oldWidth"),height:t.data("oldHeight")}).removeClass(a),this.resize(),e.proxy(i.onfullscreenExit,this)(),this},executePlugin:function(t,i){var a=this,n=this.cm;return i=o.pluginPath+i,"function"==typeof define?void 0===this[t]?(alert("Error: "+t+" plugin is not found, you are not load this plugin."),this):(this[t](n),this):(e.inArray(i,r.loadFiles.plugin)<0?r.loadPlugin(i,function(){r.loadPlugins[t]=a[t],a[t](n)}):e.proxy(r.loadPlugins[t],this)(n),this)},search:function(e){var t=o;return t.searchReplace?(t.readOnly||this.cm.execCommand(e||"find"),this):(alert("Error: settings.searchReplace == false"),this)},searchReplace:function(){return this.search("replace"),this},searchReplaceAll:function(){return this.search("replaceAll"),this}},r.fn.init.prototype=r.fn,r.dialogLockScreen=function(){(o||{dialogLockScreen:!0}).dialogLockScreen&&(e("html,body").css("overflow","hidden"),this.resize())},r.dialogShowMask=function(t){var i=this.editor,r=o||{dialogShowMask:!0};t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"}),r.dialogShowMask&&i.children("."+this.classPrefix+"mask").css("z-index",parseInt(t.css("z-index"))-1).show()},r.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("**"+i+"**"),""===i&&e.setCursor(t.line,t.ch+2)},del:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("~~"+i+"~~"),""===i&&e.setCursor(t.line,t.ch+2)},italic:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("*"+i+"*"),""===i&&e.setCursor(t.line,t.ch+1)},quote:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("> "+i),e.setCursor(t.line,t.ch+2)):e.replaceSelection("> "+i)},ucfirst:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(r.firstUpperCase(t)),e.setSelections(i)},ucwords:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(r.wordsFirstUpperCase(t)),e.setSelections(i)},uppercase:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(t.toUpperCase()),e.setSelections(i)},lowercase:function(){var e=this.cm,t=(e.getCursor(),e.getSelection()),i=e.listSelections();e.replaceSelection(t.toLowerCase()),e.setSelections(i)},h1:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("# "+i),e.setCursor(t.line,t.ch+2)):e.replaceSelection("# "+i)},h2:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("## "+i),e.setCursor(t.line,t.ch+3)):e.replaceSelection("## "+i)},h3:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("### "+i),e.setCursor(t.line,t.ch+4)):e.replaceSelection("### "+i)},h4:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("#### "+i),e.setCursor(t.line,t.ch+5)):e.replaceSelection("#### "+i)},h5:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("##### "+i),e.setCursor(t.line,t.ch+6)):e.replaceSelection("##### "+i)},h6:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("###### "+i),e.setCursor(t.line,t.ch+7)):e.replaceSelection("###### "+i)},"list-ul":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("- "+t);else{for(var i=t.split("\n"),o=0,r=i.length;o'}else{var l=e.match(m),c=e.match(f);if(l)for(var h=0,d=l.length;h'}else{if(!c){var g="+1"===o?"plus1":o;return g="moon"===(g="black_large_square"===g?"black_square":g)?"waxing_gibbous_moon":g,':'+o+':'}for(var w=0,v=c.length;w'}}}});return e},s.atLink=function(t){return c.test(t)?(o.atLink&&(t=(t=t.replace(d,function(e,t,i,o){return e.replace(/@/g,"_#_@_#_")})).replace(c,function(e,t){return''+e+""}).replace(/_#_@_#_/g,"@")),o.emailLink&&(t=t.replace(u,function(t,i,o,r,a){return!i&&e.inArray(a,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+t+"":t})),t):t},s.link=function(e,t,i){if(this.options.sanitize){try{var o=decodeURIComponent(unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(0===o.indexOf("javascript:"))return""}var r=''+i.replace(/@/g,"@")+""):(t&&(r+=' title="'+t+'"'),r+=">"+i+"")},s.heading=function(e,i,o){var r=e,n=/\s*\]*)\>(.*)\<\/a\>\s*/;if(n.test(e)){for(var s=[],l=0,c=(e=e.split(/\]+)\>([^\>]*)\<\/a\>/)).length;l';return u+='',u+='',u+=n?this.atLink(this.emoji(r)):this.atLink(this.emoji(e)),u+=""},s.pageBreak=function(e){return g.test(e)&&o.pageBreak&&(e='
      '),e},s.em=function(e){return e&&-1!=e.indexOf("$$")?e:""+e+""},s.paragraph=function(e){var t=/\$\$(.*)\$\$/g.test(e),i=/^\$\$(.*)\$\$$/.test(e),a=i?' class="'+r.classNames.tex+'"':"",n=o.tocm?/^(\[TOC\]|\[TOCM\])$/.test(e):/^\[TOC\]$/.test(e),s=/^\[TOCM\]$/.test(e),l='
      '+(e=!i&&t?e.replace(/(\$\$([^\$]*)\$\$)+/g,function(e,t){return''+t.replace(/\$/g,"")+""}):i?e.replace(/\$/g,""):e)+"
      ";return n?s?'
      '+l+"

      ":l:g.test(e)?this.pageBreak(e):""+this.atLink(this.emoji(e))+"

      \n"},s.code=function(e,t,i){return"seq"===t||"sequence"===t?'
      '+e+"
      ":"flow"===t?'
      '+e+"
      ":"math"===t||"latex"===t||"katex"===t?'

      '+e+"

      ":n.Renderer.prototype.code.apply(this,arguments)},s.tablecell=function(e,t){var i=t.header?"th":"td";return(t.align?"<"+i+' style="text-align:'+t.align+'">':"<"+i+">")+this.atLink(this.emoji(e))+"\n"},s.listitem=function(e){return o.taskList&&/^\s*\[[x\s]\]\s*/.test(e)?(e=e.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' '),'
    • '+this.atLink(this.emoji(e))+"
    • "):"
    • "+this.atLink(this.emoji(e))+"
    • "},s},r.markdownToCRenderer=function(e,t,i,o){var r="",a=0,n=this.classPrefix;o=o||1;for(var s=0,l=e.length;sa?"":h"):"",r+='
    • '+c+"
        ",a=h)}var d=t.find(".markdown-toc");if(d.length<1&&"false"===t.attr("previewContainer")){var u='
        ';u=i?'
        '+u+"
        ":u,t.html(u),d=t.find(".markdown-toc")}return i&&d.wrap('

        '),d.html('
          ').children(".markdown-toc-list").html(r.replace(/\r?\n?\\<\/ul\>/g,"")),d},r.tocDropdownMenu=function(t,i){i=i||"Table of Contents";var o=400,r=t.find("."+this.classPrefix+"toc-menu");return r.each(function(){var t=e(this),r=t.children(".markdown-toc"),a='',n=''+a+i+"",s=r.children("ul"),l=s.find("li");r.append(n),l.first().before("
        • "+i+" "+a+"

        • "),t.mouseover(function(){s.show(),l.each(function(){var t=e(this),i=t.children("ul");if(""===i.html()&&i.remove(),i.length>0&&""!==i.html()){var r=t.children("a").first();r.children(".fa").length<1&&r.append(e(a).css({float:"right",paddingTop:"4px"}))}t.mouseover(function(){i.css("z-index",o).show(),o+=1}).mouseleave(function(){i.hide()})})}).mouseleave(function(){s.hide()})}),r},r.filterHTMLTags=function(t,i){if("string"!=typeof t&&(t=new String(t)),"string"!=typeof i)return t;for(var o=i.split("|"),r=o[0].split(","),a=o[1],n=0,s=r.length;n]*)>([^>]*)","igm"),"")}if(void 0!==a){var c=/\<(\w+)\s*([^\>]*)\>([^\>]*)\<\/(\w+)\>/gi;t="*"===a?t.replace(c,function(e,t,i,o,r){return"<"+t+">"+o+""}):"on*"===a?t.replace(c,function(t,i,o,r,a){var n=e("<"+i+">"+r+""),s=e(t)[0].attributes,l={};e.each(s,function(e,t){'"'!==t.nodeName&&(l[t.nodeName]=t.nodeValue)}),e.each(l,function(e){0===e.indexOf("on")&&delete l[e]}),n.attr(l);var c=void 0!==n[1]?e(n[1]).text():"";return n[0].outerHTML+c}):t.replace(c,function(t,i,o,r){var n=a.split(","),s=e(t);return s.html(r),e.each(n,function(e){s.attr(n[e],null)}),s[0].outerHTML})}return t},r.markdownToHTML=function(t,i){r.$marked=marked;var o=e("#"+t),a=o.settings=e.extend(!0,{gfm:!0,toc:!0,tocm:!1,tocStartLevel:1,tocTitle:"目录",tocDropdown:!1,tocContainer:"",markdown:"",markdownSourceCode:!1,htmlDecode:!1,autoLoadKaTeX:!0,pageBreak:!0,atLink:!0,emailLink:!0,tex:!1,taskList:!1,emoji:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0},i||{}),n=o.find("textarea");n.length<1&&(o.append(""),n=o.find("textarea"));var s=""===a.markdown?n.val():a.markdown,l=[],c={toc:a.toc,tocm:a.tocm,tocStartLevel:a.tocStartLevel,taskList:a.taskList,emoji:a.emoji,tex:a.tex,pageBreak:a.pageBreak,atLink:a.atLink,emailLink:a.emailLink,flowChart:a.flowChart,sequenceDiagram:a.sequenceDiagram,previewCodeHighlight:a.previewCodeHighlight},h={renderer:r.markedRenderer(l,c),gfm:a.gfm,tables:!0,breaks:!0,pedantic:!1,sanitize:!a.htmlDecode,smartLists:!0,smartypants:!0};s=new String(s);var d=marked(s,h);d=r.filterHTMLTags(d,a.htmlDecode),a.markdownSourceCode?n.text(s):n.remove(),o.addClass("markdown-body "+this.classPrefix+"html-preview").append(d);var u=""!==a.tocContainer?e(a.tocContainer):o;if(""!==a.tocContainer&&u.attr("previewContainer",!1),a.toc&&(o.tocContainer=this.markdownToCRenderer(l,u,a.tocDropdown,a.tocStartLevel),(a.tocDropdown||o.find("."+this.classPrefix+"toc-menu").length>0)&&this.tocDropdownMenu(o,a.tocTitle),""!==a.tocContainer&&o.find(".editormd-toc-menu, .editormd-markdown-toc").remove()),a.previewCodeHighlight&&(o.find("pre").addClass("prettyprint linenums"),prettyPrint()),r.isIE8||(a.flowChart&&o.find(".flowchart").flowChart(),a.sequenceDiagram&&o.find(".sequence-diagram").sequenceDiagram({theme:"simple"})),a.tex){var f=function(){o.find("."+r.classNames.tex).each(function(){var t=e(this);katex.render(t.text(),t[0]),t.find(".katex").css("font-size","1.0em")})};!a.autoLoadKaTeX||r.$katex||r.kaTeXLoaded?f():this.loadKaTeX(function(){r.$katex=katex,r.kaTeXLoaded=!0,f()})}return o.getMarkdown=function(){return n.val()},o},r.themes=["default","dark"],r.previewThemes=["default","dark"],r.editorThemes=["default","3024-day","3024-night","ambiance","ambiance-mobile","base16-dark","base16-light","blackboard","cobalt","eclipse","elegant","erlang-dark","lesser-dark","mbo","mdn-like","midnight","monokai","neat","neo","night","paraiso-dark","paraiso-light","pastel-on-dark","rubyblue","solarized","the-matrix","tomorrow-night-eighties","twilight","vibrant-ink","xq-dark","xq-light"],r.loadPlugins={},r.loadFiles={js:[],css:[],plugin:[]},r.loadPlugin=function(e,t,i){t=t||function(){},this.loadScript(e,function(){r.loadFiles.plugin.push(e),t()},i)},r.loadCSS=function(e,t,i){i=i||"head",t=t||function(){};var o=document.createElement("link");o.type="text/css",o.rel="stylesheet",o.onload=o.onreadystatechange=function(){r.loadFiles.css.push(e),t()},o.href=e+".css","head"===i?document.getElementsByTagName("head")[0].appendChild(o):document.body.appendChild(o)},r.isIE="Microsoft Internet Explorer"==navigator.appName,r.isIE8=r.isIE&&"8."==navigator.appVersion.match(/8./i),r.loadScript=function(e,t,i){i=i||"head",t=t||function(){};var o=null;(o=document.createElement("script")).id=e.replace(/[\./]+/g,"-"),o.type="text/javascript",o.src=e+".js",r.isIE8?o.onreadystatechange=function(){o.readyState&&("loaded"!==o.readyState&&"complete"!==o.readyState||(o.onreadystatechange=null,r.loadFiles.js.push(e),t()))}:o.onload=function(){r.loadFiles.js.push(e),t()},"head"===i?document.getElementsByTagName("head")[0].appendChild(o):document.body.appendChild(o)},r.katexURL={css:"/katex/katex.min",js:"/katex/katex.min"},r.kaTeXLoaded=!1,r.loadKaTeX=function(e){r.loadCSS(r.katexURL.css,function(){r.loadScript(r.katexURL.js,e||function(){})})},r.lockScreen=function(t){e("html,body").css("overflow",t?"hidden":"")},r.createDialog=function(t){t=e.extend(!0,{name:"",width:420,height:240,title:"",drag:!0,closed:!0,content:"",mask:!0,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:!0,footer:!0,buttons:!1},t);var i=this,o=this.editor,a=r.classPrefix,n=(new Date).getTime(),s=""===t.name?a+"dialog-"+n:t.name,l=r.mouseOrTouch,c='
          ';""!==t.title&&(c+='
          ",c+=''+t.title+"",c+="
          "),t.closed&&(c+=''),c+='
          '+t.content,(t.footer||"string"==typeof t.footer)&&(c+='"),c+="
          ",c+='
          ',c+='
          ',c+="
          ",o.append(c);var h=o.find("."+s);h.lockScreen=function(o){return t.lockScreen&&(e("html,body").css("overflow",o?"hidden":""),i.resize()),h},h.showMask=function(){return t.mask&&o.find("."+a+"mask").css(t.maskStyle).css("z-index",r.dialogZindex-1).show(),h},h.hideMask=function(){return t.mask&&o.find("."+a+"mask").hide(),h},h.loading=function(e){return h.find("."+a+"dialog-mask")[e?"show":"hide"](),h},h.lockScreen(!0).showMask(),h.show().css({zIndex:r.dialogZindex,border:r.isIE8?"1px solid #ddd":"",width:"number"==typeof t.width?t.width+"px":t.width,height:"number"==typeof t.height?t.height+"px":t.height});var d=function(){h.css({top:(e(window).height()-h.height())/2+"px",left:(e(window).width()-h.width())/2+"px"})};if(d(),e(window).resize(d),h.children("."+a+"dialog-close").bind(l("click","touchend"),function(){h.hide().lockScreen(!1).hideMask()}),"object"==typeof t.buttons){var u=h.footer=h.find("."+a+"dialog-footer");for(var f in t.buttons){var p=t.buttons[f],m=a+f+"-btn";u.append('"),p[1]=e.proxy(p[1],h),u.children("."+m).bind(l("click","touchend"),p[1])}}if(""!==t.title&&t.drag){var g,w,v=h.children("."+a+"dialog-header");t.mask||v.bind(l("click","touchend"),function(){r.dialogZindex+=2,h.css("z-index",r.dialogZindex)}),v.mousedown(function(e){e=e||window.event,g=e.clientX-parseInt(h[0].style.left),w=e.clientY-parseInt(h[0].style.top),document.onmousemove=x});var k=function(e){e.removeClass(a+"user-unselect").off("selectstart")},b=function(e){e.addClass(a+"user-unselect").on("selectstart",function(e){return!1})},x=function(t){t=t||window.event;var i,o,r=parseInt(h[0].style.left),a=parseInt(h[0].style.top);r>=0?r+h.width()<=e(window).width()?i=t.clientX-g:(i=e(window).width()-h.width(),document.onmousemove=null):(i=0,document.onmousemove=null),a>=0?o=t.clientY-w:(o=0,document.onmousemove=null),document.onselectstart=function(){return!1},b(e("body")),b(h),h[0].style.left=i+"px",h[0].style.top=o+"px"};document.onmouseup=function(){k(e("body")),k(h),document.onselectstart=null,document.onmousemove=null},v.touchDraggable=function(){var t=null;this.bind("touchstart",function(i){var o=i.originalEvent,r=e(this).parent().position();t={x:o.changedTouches[0].pageX-r.left,y:o.changedTouches[0].pageY-r.top}}).bind("touchmove",function(i){i.preventDefault();var o=i.originalEvent;e(this).parent().css({top:o.changedTouches[0].pageY-t.y,left:o.changedTouches[0].pageX-t.x})})},v.touchDraggable()}return r.dialogZindex+=2,e("body").removeAttr("style"),h},r.mouseOrTouch=function(e,t){t=t||"touchend";var i=e=e||"click";try{document.createEvent("TouchEvent"),i=t}catch(e){}return i},r.dateFormat=function(e){e=e||"";var t=function(e){return e<10?"0"+e:e},i=new Date,o=i.getFullYear(),r=o.toString().slice(2,4),a=t(i.getMonth()+1),n=t(i.getDate()),s=i.getDay(),l=t(i.getHours()),c=t(i.getMinutes()),h=t(i.getSeconds()),d=t(i.getMilliseconds()),u="",f=r+"-"+a+"-"+n,p=o+"-"+a+"-"+n,m=l+":"+c+":"+h;switch(e){case"UNIX Time":u=i.getTime();break;case"UTC":u=i.toUTCString();break;case"yy":u=r;break;case"year":case"yyyy":u=o;break;case"month":case"mm":u=a;break;case"cn-week-day":case"cn-wd":u="星期"+["日","一","二","三","四","五","六"][s];break;case"week-day":case"wd":u=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"][s];break;case"day":case"dd":u=n;break;case"hour":case"hh":u=l;break;case"min":case"ii":u=c;break;case"second":case"ss":u=h;break;case"ms":u=d;break;case"yy-mm-dd":u=f;break;case"yyyy-mm-dd":u=p;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":u=p+" "+m+" "+d;break;case"full":case"yyyy-mm-dd h:i:s":default:u=p+" "+m}return u},r}}),window._whenPasterDoUpload=function(e,t,i){var o,r,a,n=e.clipboardData,s=0;if(n){if(!(o=n.items))return;for(r=o[0],a=n.types||[];sa',ucwords:'Aa'},toolbarIconsClass:{undo:"fa-undo",redo:"fa-repeat",bold:"fa-bold",del:"fa-strikethrough",italic:"fa-italic",quote:"fa-quote-left",uppercase:"fa-font",h1:r.classPrefix+"bold",h2:r.classPrefix+"bold",h3:r.classPrefix+"bold",h4:r.classPrefix+"bold",h5:r.classPrefix+"bold",h6:r.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link","reference-link":"fa-anchor",image:"fa-picture-o",code:"fa-code","preformatted-text":"fa-file-code-o","code-block":"fa-file-code-o",table:"fa-table",datetime:"fa-clock-o",emoji:"fa-smile-o","html-entities":"fa-copyright",pagebreak:"fa-newspaper-o","goto-line":"fa-terminal",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-desktop",search:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},lang:{name:"zh-cn",description:"开源在线Markdown编辑器
          Open source online Markdown editor.",tocTitle:"目录",toolbar:{undo:"撤销(Ctrl+Z)",redo:"重做(Ctrl+Y)",bold:"粗体",del:"删除线",italic:"斜体",quote:"引用",ucwords:"将每个单词首字母转成大写",uppercase:"将所选转换成大写",lowercase:"将所选转换成小写",h1:"标题1",h2:"标题2",h3:"标题3",h4:"标题4",h5:"标题5",h6:"标题6","list-ul":"无序列表","list-ol":"有序列表",hr:"横线",link:"链接","reference-link":"引用链接",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情","html-entities":"HTML实体字符",pagebreak:"插入分页符","goto-line":"跳转到行",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(按 Shift + ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",search:"搜索",help:"使用帮助",info:"关于"+r.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},referenceLink:{title:"添加引用链接",name:"引用名称",url:"链接地址",urlId:"链接ID",urlTitle:"链接标题",nameEmpty:"错误:引用链接的名称不能为空。",idEmpty:"错误:请填写引用链接的ID。",urlEmpty:"错误:请填写引用链接的URL地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}},r.classNames={tex:r.classPrefix+"tex"},r.dialogZindex=99999,r.$katex=null,r.$marked=null,r.$CodeMirror=null,r.$prettyPrint=null,r.prototype=r.fn={state:{watching:!1,loaded:!1,preview:!1,fullscreen:!1},init:function(t,i){i=i||{},"object"==typeof t&&(i=t);var a=this.classPrefix=r.classPrefix,n=o=e.extend(!0,r.defaults,i);this.settings=n,t="object"==typeof t?n.id:t;var s=this.editor=e("#"+t);this.id=t,this.lang=n.lang;var l=this.classNames={textarea:{html:a+"html-textarea",markdown:a+"markdown-textarea"}};n.pluginPath=""===n.pluginPath?n.path+"../plugins/":n.pluginPath,this.state.watching=!!n.watch,s.hasClass("editormd")||s.addClass("editormd"),s.css({width:"number"==typeof n.width?n.width+"px":n.width,height:"number"==typeof n.height?n.height+"px":n.height}),n.autoHeight&&s.css("height","auto");var c=this.markdownTextarea=s.children("textarea");c.length<1&&(s.append(""),c=this.markdownTextarea=s.children("textarea")),c.addClass(l.textarea.markdown).attr("placeholder",n.placeholder),void 0!==c.attr("name")&&""!==c.attr("name")||c.attr("name",""!==n.name?n.name:t+"-markdown-doc");var h=[n.readOnly?"":'',n.saveHTMLToTextarea?'':"",'
          ','
          ','
          '].join("\n");return s.append(h).addClass(a+"vertical"),""!==n.theme&&s.addClass(a+"theme-"+n.theme),this.mask=s.children("."+a+"mask"),this.containerMask=s.children("."+a+"container-mask"),""!==n.markdown&&c.val(n.markdown),""!==n.appendMarkdown&&c.val(c.val()+n.appendMarkdown),this.htmlTextarea=s.children("."+l.textarea.html),this.preview=s.children("."+a+"preview"),this.previewContainer=this.preview.children("."+a+"preview-container"),""!==n.previewTheme&&this.preview.addClass(a+"preview-theme-"+n.previewTheme),"function"==typeof define&&define.amd&&("undefined"!=typeof katex&&(r.$katex=katex),n.searchReplace&&!n.readOnly&&(r.loadCSS(n.path+"codemirror/addon/dialog/dialog"),r.loadCSS(n.path+"codemirror/addon/search/matchesonscrollbar"))),"function"==typeof define&&define.amd||!n.autoLoadModules?("undefined"!=typeof CodeMirror&&(r.$CodeMirror=CodeMirror),"undefined"!=typeof marked&&(r.$marked=marked),this.setCodeMirror().setToolbar().loadedDisplay()):this.loadQueues(),this},loadQueues:function(){var e=this,t=o,i=t.path,a=function(){r.isIE8?e.loadedDisplay():t.flowChart||t.sequenceDiagram?r.loadScript(i+"raphael.min",function(){r.loadScript(i+"underscore.min",function(){!t.flowChart&&t.sequenceDiagram?r.loadScript(i+"sequence-diagram.min",function(){e.loadedDisplay()}):t.flowChart&&!t.sequenceDiagram?r.loadScript(i+"flowchart.min",function(){r.loadScript(i+"jquery.flowchart.min",function(){e.loadedDisplay()})}):t.flowChart&&t.sequenceDiagram&&r.loadScript(i+"flowchart.min",function(){r.loadScript(i+"jquery.flowchart.min",function(){r.loadScript(i+"sequence-diagram.min",function(){e.loadedDisplay()})})})})}):e.loadedDisplay()};return t.searchReplace&&!t.readOnly&&(r.loadCSS(i+"codemirror/addon/dialog/dialog"),r.loadCSS(i+"codemirror/addon/search/matchesonscrollbar")),t.codeFold&&r.loadCSS(i+"codemirror/addon/fold/foldgutter"),r.$CodeMirror=CodeMirror,r.loadScript(i+"codemirror/modes.min",function(){r.loadScript(i+"codemirror/addons.min",function(){if(e.setCodeMirror(),"gfm"!==t.mode&&"markdown"!==t.mode)return e.loadedDisplay(),!1;e.setToolbar(),r.loadScript(i+"marked.min",function(){r.$marked=marked,t.previewCodeHighlight?r.loadScript(i+"prettify.min",function(){a()}):a()})})}),this},setTheme:function(e){var t=this.editor,i=o.theme,r=this.classPrefix+"theme-";return t.removeClass(r+i).addClass(r+e),o.theme=e,this},setEditorTheme:function(e){var t=o;return t.editorTheme=e,"default"!==e&&r.loadCSS(t.path+"codemirror/theme/"+t.editorTheme),this.cm.setOption("theme",e),this},setCodeMirrorTheme:function(e){return this.setEditorTheme(e),this},setPreviewTheme:function(e){var t=this.preview,i=o.previewTheme,r=this.classPrefix+"preview-theme-";return t.removeClass(r+i).addClass(r+e),o.previewTheme=e,this},setCodeMirror:function(){var e=o,t=this.editor;"default"!==e.editorTheme&&r.loadCSS(e.path+"codemirror/theme/"+e.editorTheme);var i={mode:e.mode,theme:e.editorTheme,tabSize:e.tabSize,dragDrop:!1,autofocus:e.autoFocus,autoCloseTags:e.autoCloseTags,readOnly:!!e.readOnly&&"nocursor",indentUnit:e.indentUnit,lineNumbers:e.lineNumbers,lineWrapping:e.lineWrapping,extraKeys:{"Ctrl-Q":function(e){e.foldCode(e.getCursor())}},foldGutter:e.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:e.matchBrackets,indentWithTabs:e.indentWithTabs,styleActiveLine:e.styleActiveLine,styleSelectedText:e.styleSelectedText,autoCloseBrackets:e.autoCloseBrackets,showTrailingSpace:e.showTrailingSpace,highlightSelectionMatches:!!e.matchWordHighlight&&{showToken:"onselected"!==e.matchWordHighlight&&/\w/}};return this.codeEditor=this.cm=r.$CodeMirror.fromTextArea(this.markdownTextarea[0],i),this.codeMirror=this.cmElement=t.children(".CodeMirror"),""!==e.value&&this.cm.setValue(e.value),this.codeMirror.css({fontSize:e.fontSize,width:e.watch?"50%":"100%"}),e.autoHeight&&(this.codeMirror.css("height","auto"),this.cm.setOption("viewportMargin",1/0)),e.lineNumbers||this.codeMirror.find(".CodeMirror-gutters").css("border-right","none"),this},getCodeMirrorOption:function(e){return this.cm.getOption(e)},setCodeMirrorOption:function(e,t){return this.cm.setOption(e,t),this},addKeyMap:function(e,t){return this.cm.addKeyMap(e,t),this},removeKeyMap:function(e){return this.cm.removeKeyMap(e),this},gotoLine:function(t){var i=o;if(!i.gotoLine)return this;var r=this.cm,a=(this.editor,r.lineCount()),n=this.preview;if("string"==typeof t&&("last"===t&&(t=a),"first"===t&&(t=1)),"number"!=typeof t)return alert("Error: The line number must be an integer."),this;if((t=parseInt(t)-1)>a)return alert("Error: The line number range 1-"+a),this;r.setCursor({line:t,ch:0});var s=r.getScrollInfo().clientHeight,l=r.charCoords({line:t,ch:0},"local");if(r.scrollTo(null,(l.top+l.bottom-s)/2),i.watch){var c=this.codeMirror.find(".CodeMirror-scroll")[0],h=e(c).height(),d=c.scrollTop,u=d/c.scrollHeight;0===d?n.scrollTop(0):d+h>=c.scrollHeight-16?n.scrollTop(n[0].scrollHeight):n.scrollTop(n[0].scrollHeight*u)}return r.focus(),this},extend:function(){return void 0!==arguments[1]&&("function"==typeof arguments[1]&&(arguments[1]=e.proxy(arguments[1],this)),this[arguments[0]]=arguments[1]),"object"==typeof arguments[0]&&void 0===arguments[0].length&&e.extend(!0,this,arguments[0]),this},set:function(t,i){return void 0!==i&&"function"==typeof i&&(i=e.proxy(i,this)),this[t]=i,this},config:function(t,i){var r=o;return"object"==typeof t&&(r=e.extend(!0,r,t)),"string"==typeof t&&(r[t]=i),o=r,this.recreate(),this},on:function(t,i){var r=o;return void 0!==r["on"+t]&&(r["on"+t]=e.proxy(i,this)),this},off:function(e){var t=o;return void 0!==t["on"+e]&&(t["on"+e]=function(){}),this},showToolbar:function(t){var i=o;return i.readOnly?this:(i.toolbar&&(this.toolbar.length<1||""===this.toolbar.find("."+this.classPrefix+"menu").html())&&this.setToolbar(),i.toolbar=!0,this.toolbar.show(),this.resize(),e.proxy(t||function(){},this)(),this)},hideToolbar:function(t){return o.toolbar=!1,this.toolbar.hide(),this.resize(),e.proxy(t||function(){},this)(),this},setToolbarAutoFixed:function(t){var i=this.state,r=this.editor,a=this.toolbar,n=o;void 0!==t&&(n.toolbarAutoFixed=t);return!i.fullscreen&&!i.preview&&n.toolbar&&n.toolbarAutoFixed&&e(window).bind("scroll",function(){var t=e(window),i=t.scrollTop();if(!n.toolbarAutoFixed)return!1;i-r.offset().top>10&&i
            ';t.append(n),a=this.toolbar=t.children("."+i+"toolbar")}if(!e.toolbar)return a.hide(),this;a.show();for(var s="function"==typeof e.toolbarIcons?e.toolbarIcons(this):"string"==typeof e.toolbarIcons?r.toolbarModes[e.toolbarIcons]:e.toolbarIcons,l=a.find("."+this.classPrefix+"menu"),c="",h=!1,d=0,u=s.length;d|';else{var p=/h(\d)/.test(f),m=f;"watch"!==f||e.watch||(m="unwatch");var g=e.lang.toolbar[m],w=e.toolbarIconTexts[m],v=e.toolbarIconsClass[m];g=void 0===g?"":g,w=void 0===w?"":w,v=void 0===v?"":v;var k=h?'
          • ':"
          • ";void 0!==e.toolbarCustomIcons[f]&&"function"!=typeof e.toolbarCustomIcons[f]?k+=e.toolbarCustomIcons[f]:(k+='',k+=''+(p?f.toUpperCase():""===v?w:"")+"",k+=""),k+="
          • ",c=h?k+c:c+k}}return l.html(c),l.find('[title="Lowercase"]').attr("title",e.lang.toolbar.lowercase),l.find('[title="ucwords"]').attr("title",e.lang.toolbar.ucwords),this.setToolbarHandler(),this.setToolbarAutoFixed(),this},dialogLockScreen:function(){return e.proxy(r.dialogLockScreen,this)(),this},dialogShowMask:function(t){return e.proxy(r.dialogShowMask,this)(t),this},getToolbarHandles:function(e){var t=this.toolbarHandlers=r.toolbarHandlers;return e&&void 0!==toolbarIconHandlers[e]?t[e]:t},setToolbarHandler:function(){var t=this,i=o;if(!i.toolbar||i.readOnly)return this;var a=this.toolbar,n=this.cm,s=this.classPrefix,l=this.toolbarIcons=a.find("."+s+"menu > li > a"),c=this.getToolbarHandles();return l.bind(r.mouseOrTouch("click","touchend"),function(o){var r=e(this).children(".fa"),a=r.attr("name"),s=n.getCursor(),l=n.getSelection();if(""!==a)return t.activeIcon=r,void 0!==c[a]?e.proxy(c[a],t)(n):void 0!==i.toolbarHandlers[a]&&e.proxy(i.toolbarHandlers[a],t)(n,r,s,l),"link"!==a&&"reference-link"!==a&&"image"!==a&&"code-block"!==a&&"preformatted-text"!==a&&"watch"!==a&&"preview"!==a&&"search"!==a&&"fullscreen"!==a&&"info"!==a&&n.focus(),!1}),this},createDialog:function(t){return e.proxy(r.createDialog,this)(t)},createInfoDialog:function(){var e=this,t=this.editor,i=this.classPrefix,o=['
            ','
            ','

            '+r.title+"v"+r.version+"

            ","

            "+this.lang.description+"

            ",'

            '+r.homePage+'

            ','

            Copyright © 2015 Pandao, The MIT License.

            ',"
            ",'',"
            "].join("\n");t.append(o);var a=this.infoDialog=t.children("."+i+"dialog-info");return a.find("."+i+"dialog-close").bind(r.mouseOrTouch("click","touchend"),function(){e.hideInfoDialog()}),a.css("border",r.isIE8?"1px solid #ddd":"").css("z-index",r.dialogZindex).show(),this.infoDialogPosition(),this},infoDialogPosition:function(){var t=this.infoDialog,i=function(){t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"})};return i(),e(window).resize(i),this},showInfoDialog:function(){e("html,body").css("overflow-x","hidden");var t=this.editor,i=o,a=this.infoDialog=t.children("."+this.classPrefix+"dialog-info");return a.length<1&&this.createInfoDialog(),this.lockScreen(!0),this.mask.css({opacity:i.dialogMaskOpacity,backgroundColor:i.dialogMaskBgColor}).show(),a.css("z-index",r.dialogZindex).show(),this.infoDialogPosition(),this},hideInfoDialog:function(){return e("html,body").css("overflow-x",""),this.infoDialog.hide(),this.mask.hide(),this.lockScreen(!1),this},lockScreen:function(e){return r.lockScreen(e),this.resize(),this},recreate:function(){var e=this.editor,t=o;return this.codeMirror.remove(),this.setCodeMirror(),t.readOnly||(e.find(".editormd-dialog").length>0&&e.find(".editormd-dialog").remove(),t.toolbar&&(this.getToolbarHandles(),this.setToolbar())),this.loadedDisplay(!0),this},previewCodeHighlight:function(){var e=o,t=this.previewContainer;return e.previewCodeHighlight&&(t.find("pre").addClass("prettyprint linenums"),"undefined"!=typeof prettyPrint&&prettyPrint()),this},katexRender:function(){return null===t?this:(this.previewContainer.find("."+r.classNames.tex).each(function(){var t=e(this);r.$katex.render(t.text(),t[0]),t.find(".katex").css("font-size","1.0em")}),this)},flowChartAndSequenceDiagramRender:function(){var t=o,a=this.previewContainer;if(r.isIE8)return this;if(t.flowChart){if(null===i)return this;a.find(".flowchart").flowChart()}t.sequenceDiagram&&a.find(".sequence-diagram").sequenceDiagram({theme:"simple"});var n=this.preview,s=this.codeMirror.find(".CodeMirror-scroll"),l=s.height(),c=s.scrollTop(),h=c/s[0].scrollHeight,d=0;n.find(".markdown-toc-list").each(function(){d+=e(this).height()});var u=n.find(".editormd-toc-menu").height();return u=u||0,0===c?n.scrollTop(0):c+l>=s[0].scrollHeight-16?n.scrollTop(n[0].scrollHeight):n.scrollTop((n[0].scrollHeight+d+u)*h),this},registerKeyMaps:function(t){var i=this,a=this.cm,n=o,s=r.toolbarHandlers,l=n.disabledKeyMaps;if(t=t||null){for(var c in t)if(e.inArray(c,l)<0){t[c],a.addKeyMap(t)}}else{for(var h in r.keyMaps){var d=r.keyMaps[h],u="string"==typeof d?e.proxy(s[d],i):e.proxy(d,i);if(e.inArray(h,["F9","F10","F11"])<0&&e.inArray(h,l)<0){var f={};f[h]=u,a.addKeyMap(f)}}e(window).keydown(function(t){if(e.inArray({120:"F9",121:"F10",122:"F11"}[t.keyCode],l)<0)switch(t.keyCode){case 120:return e.proxy(s.watch,i)(),!1;case 121:return e.proxy(s.preview,i)(),!1;case 122:return e.proxy(s.fullscreen,i)(),!1}})}return this},bindScrollEvent:function(){var t=this,i=this.preview,a=o,n=this.codeMirror,s=r.mouseOrTouch;if(!a.syncScrolling)return this;var l=function(){n.find(".CodeMirror-scroll").bind(s("scroll","touchmove"),function(o){var r=e(this).height(),n=e(this).scrollTop(),s=n/e(this)[0].scrollHeight,l=0;i.find(".markdown-toc-list").each(function(){l+=e(this).height()});var c=i.find(".editormd-toc-menu").height();c=c||0,0===n?i.scrollTop(0):n+r>=e(this)[0].scrollHeight-16?i.scrollTop(i[0].scrollHeight):i.scrollTop((i[0].scrollHeight+l+c)*s),e.proxy(a.onscroll,t)(o)})},c=function(){n.find(".CodeMirror-scroll").unbind(s("scroll","touchmove"))},h=function(){i.bind(s("scroll","touchmove"),function(i){var o=e(this).height(),r=e(this).scrollTop(),s=r/e(this)[0].scrollHeight,l=n.find(".CodeMirror-scroll");0===r?l.scrollTop(0):r+o>=e(this)[0].scrollHeight?l.scrollTop(l[0].scrollHeight):l.scrollTop(l[0].scrollHeight*s),e.proxy(a.onpreviewscroll,t)(i)})},d=function(){i.unbind(s("scroll","touchmove"))};return n.bind({mouseover:l,mouseout:c,touchstart:l,touchend:c}),"single"===a.syncScrolling?this:(i.bind({mouseover:h,mouseout:d,touchstart:h,touchend:d}),this)},bindChangeEvent:function(){var e=this,i=this.cm,r=o;return r.syncScrolling?(i.on("change",function(i,o){r.watch&&e.previewContainer.css("padding",r.autoHeight?"20px 20px 50px 40px":"20px"),t=setTimeout(function(){clearTimeout(t),e.save(),t=null},r.delay)}),this):this},loadedDisplay:function(t){t=t||!1;var i=this,r=this.editor,a=this.preview,n=o;return this.containerMask.hide(),this.save(),n.watch&&a.show(),r.data("oldWidth",r.width()).data("oldHeight",r.height()),this.resize(),this.registerKeyMaps(),e(window).resize(function(){i.resize()}),this.bindScrollEvent().bindChangeEvent(),t||(n.imageUploadURL&&initEditormdPasteUpload(this,n.imageUploadURL),e.proxy(n.onload,this)()),this.state.loaded=!0,this},width:function(e){return this.editor.css("width","number"==typeof e?e+"px":e),this.resize(),this},height:function(e){return this.editor.css("height","number"==typeof e?e+"px":e),this.resize(),this},resize:function(t,i){t=t||null,i=i||null;var r=this.state,a=this.editor,n=this.preview,s=this.toolbar,l=o,c=this.codeMirror;if(t&&a.css("width","number"==typeof t?t+"px":t),!l.autoHeight||r.fullscreen||r.preview?(i&&a.css("height","number"==typeof i?i+"px":i),r.fullscreen&&a.height(e(window).height()),l.toolbar&&!l.readOnly?c.css("margin-top",s.height()+1).height(a.height()-s.height()):c.css("margin-top",0).height(a.height())):(a.css("height","auto"),c.css("height","auto")),l.watch)if(c.width(a.width()/2),n.width(r.preview?a.width():a.width()/2),this.previewContainer.css("padding",l.autoHeight?"20px 20px 50px 40px":"20px"),l.toolbar&&!l.readOnly?n.css("top",s.height()+1):n.css("top",0),!l.autoHeight||r.fullscreen||r.preview){var h=l.toolbar&&!l.readOnly?a.height()-s.height():a.height();n.height(h)}else n.height("");else c.width(a.width()),n.hide();return r.loaded&&e.proxy(l.onresize,this)(),this},save:function(){if(null===t)return this;var a=this,n=this.state,s=o,l=this.cm,c=l.getValue(),h=this.previewContainer;if("gfm"!==s.mode&&"markdown"!==s.mode)return this.markdownTextarea.val(c),this;var d=r.$marked,u=this.markdownToC=[],f=this.markedRendererOptions={toc:s.toc,tocm:s.tocm,tocStartLevel:s.tocStartLevel,pageBreak:s.pageBreak,taskList:s.taskList,emoji:s.emoji,tex:s.tex,atLink:s.atLink,emailLink:s.emailLink,flowChart:s.flowChart,sequenceDiagram:s.sequenceDiagram,previewCodeHighlight:s.previewCodeHighlight},p=this.markedOptions={renderer:r.markedRenderer(u,f),gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:!s.htmlDecode,smartLists:!0,smartypants:!0};d.setOptions(p);var m=r.$marked(c,p);if(m=r.filterHTMLTags(m,s.htmlDecode),this.markdownTextarea.text(c),l.save(),s.saveHTMLToTextarea&&this.htmlTextarea.text(m),s.watch||!s.watch&&n.preview){if(h.html(m),this.previewCodeHighlight(),s.toc){var g=""===s.tocContainer?h:e(s.tocContainer),w=g.find("."+this.classPrefix+"toc-menu");g.attr("previewContainer",""===s.tocContainer?"true":"false"),""!==s.tocContainer&&w.length>0&&w.remove(),r.markdownToCRenderer(u,g,s.tocDropdown,s.tocStartLevel),(s.tocDropdown||g.find("."+this.classPrefix+"toc-menu").length>0)&&r.tocDropdownMenu(g,""!==s.tocTitle?s.tocTitle:this.lang.tocTitle),""!==s.tocContainer&&h.find(".markdown-toc").css("border","none")}s.tex&&(!r.kaTeXLoaded&&s.autoLoadModules?r.loadKaTeX(function(){r.$katex=katex,r.kaTeXLoaded=!0,a.katexRender()}):(r.$katex=katex,this.katexRender())),(s.flowChart||s.sequenceDiagram)&&(i=setTimeout(function(){clearTimeout(i),a.flowChartAndSequenceDiagramRender(),i=null},10)),n.loaded&&e.proxy(s.onchange,this)()}return this},focus:function(){return this.cm.focus(),this},setCursor:function(e){return this.cm.setCursor(e),this},getCursor:function(){return this.cm.getCursor()},setSelection:function(e,t){return this.cm.setSelection(e,t),this},getSelection:function(){return this.cm.getSelection()},setSelections:function(e){return this.cm.setSelections(e),this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(e){return this.cm.replaceSelection(e),this},insertValue:function(e){return this.replaceSelection(e),this},appendMarkdown:function(e){var t=this.cm;return t.setValue(t.getValue()+e),this},setMarkdown:function(e){return this.cm.setValue(e||o.markdown),this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(e){return this.cm.setValue(e),this},clear:function(){return this.cm.setValue(""),this},getHTML:function(){return o.saveHTMLToTextarea?this.htmlTextarea.val():(alert("Error: settings.saveHTMLToTextarea == false"),!1)},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){return o.watch?this.previewContainer.html():(alert("Error: settings.watch == false"),!1)},watch:function(i){var r=o;if(e.inArray(r.mode,["gfm","markdown"])<0)return this;if(this.state.watching=r.watch=!0,this.preview.show(),this.toolbar){var a=r.toolbarIconsClass.watch,n=r.toolbarIconsClass.unwatch,s=this.toolbar.find(".fa[name=watch]");s.parent().attr("title",r.lang.toolbar.watch),s.removeClass(n).addClass(a)}return this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2),t=0,this.save().resize(),r.onwatch||(r.onwatch=i||function(){}),e.proxy(r.onwatch,this)(),this},unwatch:function(t){var i=o;if(this.state.watching=i.watch=!1,this.preview.hide(),this.toolbar){var r=i.toolbarIconsClass.watch,a=i.toolbarIconsClass.unwatch,n=this.toolbar.find(".fa[name=watch]");n.parent().attr("title",i.lang.toolbar.unwatch),n.removeClass(r).addClass(a)}return this.codeMirror.css("border-right","none").width(this.editor.width()),this.resize(),i.onunwatch||(i.onunwatch=t||function(){}),e.proxy(i.onunwatch,this)(),this},show:function(t){t=t||function(){};var i=this;return this.editor.show(0,function(){e.proxy(t,i)()}),this},hide:function(t){t=t||function(){};var i=this;return this.editor.hide(0,function(){e.proxy(t,i)()}),this},previewing:function(){var t=this,i=this.editor,a=this.preview,n=this.toolbar,s=o,l=this.codeMirror,c=this.previewContainer;if(e.inArray(s.mode,["gfm","markdown"])<0)return this;s.toolbar&&n&&(n.toggle(),n.find(".fa[name=preview]").toggleClass("active")),l.toggle();var h=function(e){e.shiftKey&&27===e.keyCode&&t.previewed()};"none"===l.css("display")?(this.state.preview=!0,this.state.fullscreen&&a.css("background","#fff"),i.find("."+this.classPrefix+"preview-close-btn").show().bind(r.mouseOrTouch("click","touchend"),function(){t.previewed()}),s.watch?c.css("padding",""):this.save(),c.addClass(this.classPrefix+"preview-active"),a.show().css({position:"",top:0,width:i.width(),height:s.autoHeight&&!this.state.fullscreen?"auto":i.height()}),this.state.loaded&&e.proxy(s.onpreviewing,this)(),e(window).bind("keyup",h)):(e(window).unbind("keyup",h),this.previewed())},previewed:function(){var t=this.editor,i=this.preview,a=this.toolbar,n=o,s=this.previewContainer,l=t.find("."+this.classPrefix+"preview-close-btn");return this.state.preview=!1,this.codeMirror.show(),n.toolbar&&a.show(),i[n.watch?"show":"hide"](),l.hide().unbind(r.mouseOrTouch("click","touchend")),s.removeClass(this.classPrefix+"preview-active"),n.watch&&s.css("padding","20px"),i.css({background:null,position:"absolute",width:t.width()/2,height:n.autoHeight&&!this.state.fullscreen?"auto":t.height()-a.height(),top:n.toolbar?a.height():0}),this.state.loaded&&e.proxy(n.onpreviewed,this)(),this},fullscreen:function(){var t=this,i=this.state,r=this.editor,a=(this.preview,this.toolbar),n=o,s=this.classPrefix+"fullscreen";a&&a.find(".fa[name=fullscreen]").parent().toggleClass("active");var l=function(e){e.shiftKey||27!==e.keyCode||i.fullscreen&&t.fullscreenExit()};return r.hasClass(s)?(e(window).unbind("keyup",l),this.fullscreenExit()):(i.fullscreen=!0,e("html,body").css("overflow","hidden"),r.css({width:e(window).width(),height:e(window).height()}).addClass(s),this.resize(),e.proxy(n.onfullscreen,this)(),e(window).bind("keyup",l)),this},fullscreenExit:function(){var t=this.editor,i=o,r=this.toolbar,a=this.classPrefix+"fullscreen";return this.state.fullscreen=!1,r&&r.find(".fa[name=fullscreen]").parent().removeClass("active"),e("html,body").css("overflow",""),t.css({width:t.data("oldWidth"),height:t.data("oldHeight")}).removeClass(a),this.resize(),e.proxy(i.onfullscreenExit,this)(),this},executePlugin:function(t,i){var a=this,n=this.cm;return i=o.pluginPath+i,"function"==typeof define?void 0===this[t]?(alert("Error: "+t+" plugin is not found, you are not load this plugin."),this):(this[t](n),this):(e.inArray(i,r.loadFiles.plugin)<0?r.loadPlugin(i,function(){r.loadPlugins[t]=a[t],a[t](n)}):e.proxy(r.loadPlugins[t],this)(n),this)},search:function(e){var t=o;return t.searchReplace?(t.readOnly||this.cm.execCommand(e||"find"),this):(alert("Error: settings.searchReplace == false"),this)},searchReplace:function(){return this.search("replace"),this},searchReplaceAll:function(){return this.search("replaceAll"),this}},r.fn.init.prototype=r.fn,r.dialogLockScreen=function(){(o||{dialogLockScreen:!0}).dialogLockScreen&&(e("html,body").css("overflow","hidden"),this.resize())},r.dialogShowMask=function(t){var i=this.editor,r=o||{dialogShowMask:!0};t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"}),r.dialogShowMask&&i.children("."+this.classPrefix+"mask").css("z-index",parseInt(t.css("z-index"))-1).show()},r.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("**"+i+"**"),""===i&&e.setCursor(t.line,t.ch+2)},del:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("~~"+i+"~~"),""===i&&e.setCursor(t.line,t.ch+2)},italic:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("*"+i+"*"),""===i&&e.setCursor(t.line,t.ch+1)},quote:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("> "+i),e.setCursor(t.line,t.ch+2)):e.replaceSelection("> "+i)},ucfirst:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(r.firstUpperCase(t)),e.setSelections(i)},ucwords:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(r.wordsFirstUpperCase(t)),e.setSelections(i)},uppercase:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(t.toUpperCase()),e.setSelections(i)},lowercase:function(){var e=this.cm,t=(e.getCursor(),e.getSelection()),i=e.listSelections();e.replaceSelection(t.toLowerCase()),e.setSelections(i)},h1:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("# "+i),e.setCursor(t.line,t.ch+2)):e.replaceSelection("# "+i)},h2:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("## "+i),e.setCursor(t.line,t.ch+3)):e.replaceSelection("## "+i)},h3:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("### "+i),e.setCursor(t.line,t.ch+4)):e.replaceSelection("### "+i)},h4:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("#### "+i),e.setCursor(t.line,t.ch+5)):e.replaceSelection("#### "+i)},h5:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("##### "+i),e.setCursor(t.line,t.ch+6)):e.replaceSelection("##### "+i)},h6:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();0!==t.ch?(e.setCursor(t.line,0),e.replaceSelection("###### "+i),e.setCursor(t.line,t.ch+7)):e.replaceSelection("###### "+i)},"list-ul":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("- "+t);else{for(var i=t.split("\n"),o=0,r=i.length;o'}else{var l=e.match(m),c=e.match(f);if(l)for(var h=0,d=l.length;h'}else{if(!c){var g="+1"===o?"plus1":o;return g="moon"===(g="black_large_square"===g?"black_square":g)?"waxing_gibbous_moon":g,':'+o+':'}for(var w=0,v=c.length;w'}}}});return e},s.atLink=function(t){return c.test(t)?(o.atLink&&(t=(t=t.replace(d,function(e,t,i,o){return e.replace(/@/g,"_#_@_#_")})).replace(c,function(e,t){return''+e+""}).replace(/_#_@_#_/g,"@")),o.emailLink&&(t=t.replace(u,function(t,i,o,r,a){return!i&&e.inArray(a,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+t+"":t})),t):t},s.link=function(e,t,i){if(this.options.sanitize){try{var o=decodeURIComponent(unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(0===o.indexOf("javascript:"))return""}var r=''+i.replace(/@/g,"@")+""):(t&&(r+=' title="'+t+'"'),r+=">"+i+"")},s.heading=function(e,i,o){var r=e,n=/\s*\]*)\>(.*)\<\/a\>\s*/;if(n.test(e)){for(var s=[],l=0,c=(e=e.split(/\]+)\>([^\>]*)\<\/a\>/)).length;l';return u+='',u+='',u+=n?this.atLink(this.emoji(r)):this.atLink(this.emoji(e)),u+=""},s.pageBreak=function(e){return g.test(e)&&o.pageBreak&&(e='
            '),e},s.em=function(e, capInput){return e&&-1!=e.indexOf("$$") || (capInput && capInput.indexOf('$$') != -1) ?"_"+e+"_":""+e+""},s.paragraph=function(e){var t=/\$\$(.*)\$\$/g.test(e),i=/^\$\$(.*)\$\$$/.test(e),a=i?' class="'+r.classNames.tex+'"':"",n=o.tocm?/^(\[TOC\]|\[TOCM\])$/.test(e):/^\[TOC\]$/.test(e),s=/^\[TOCM\]$/.test(e),l='
            '+(e=!i&&t?e.replace(/(\$\$([^\$]*)\$\$)+/g,function(e,t){return''+t.replace(/\$/g,"")+""}):i?e.replace(/\$/g,""):e)+"
            ";return n?s?'
            '+l+"

            ":l:g.test(e)?this.pageBreak(e):""+this.atLink(this.emoji(e))+"

            \n"},s.code=function(e,t,i){return"seq"===t||"sequence"===t?'
            '+e+"
            ":"flow"===t?'
            '+e+"
            ":"math"===t||"latex"===t||"katex"===t?'

            '+e+"

            ":n.Renderer.prototype.code.apply(this,arguments)},s.tablecell=function(e,t){var i=t.header?"th":"td";return(t.align?"<"+i+' style="text-align:'+t.align+'">':"<"+i+">")+this.atLink(this.emoji(e))+"\n"},s.listitem=function(e){return o.taskList&&/^\s*\[[x\s]\]\s*/.test(e)?(e=e.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' '),'
          • '+this.atLink(this.emoji(e))+"
          • "):"
          • "+this.atLink(this.emoji(e))+"
          • "},s},r.markdownToCRenderer=function(e,t,i,o){var r="",a=0,n=this.classPrefix;o=o||1;for(var s=0,l=e.length;sa?"":h"):"
        • ",r+='
        • '+c+"