avo 2.36.0 → 2.36.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of avo might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3daed936826074ad203833bc647b28ab8404e03f8f600e6e251ab1f5048b2d3f
4
- data.tar.gz: bcd0096cf724a4cbb88a8015b589103ec7f43d24e47b3275799c1662560e0226
3
+ metadata.gz: fffcc60aed6880403561693f173334188a36f9528b5b08e60440fa265160e4bf
4
+ data.tar.gz: e7466e2b084c0e3d77d3394985809bb8fd8b886d359c4f436c361e67b6cac17e
5
5
  SHA512:
6
- metadata.gz: ae0863ff1c66d4e3ffcd85fd94080147b00407e22e609e291cee924602fd2ccc871175320f9e61968433ec84aff38275c90fcf6e130c3ce7029e204649e10038
7
- data.tar.gz: f83cfd82506cbe80a4310114d1376c42cd86107f5448c7db43357f3539100975bd0be6681caf768f8a6becf1c28b63aba55f7aeb8ede806a9c60138e01679da1
6
+ metadata.gz: 2a7210a6165fb84856c409d9b43715e2a389573dce214f5c5a8d35efeab13720bc1261b997fb07b38149019a9f7e80e7fa22ff4897860c676b0e079330f8f088
7
+ data.tar.gz: f02f82e66aa157a8406a7ba7439bf8fc669b6c11f79c2bb8c71d162d4112bc9b0f43e9cfbf407b38bc5f9cd8a20802330ada3365419d3138680b7305c960e0fd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (2.36.0)
4
+ avo (2.36.2)
5
5
  actionview (>= 6.0)
6
6
  active_link_to
7
7
  activerecord (>= 6.0)
@@ -422,7 +422,7 @@ GEM
422
422
  tzinfo (2.0.6)
423
423
  concurrent-ruby (~> 1.0)
424
424
  unicode-display_width (2.4.0)
425
- view_component (3.3.0)
425
+ view_component (3.4.0)
426
426
  activesupport (>= 5.2.0, < 8.0)
427
427
  concurrent-ruby (~> 1.0)
428
428
  method_source (~> 1.0)
@@ -1,6 +1,6 @@
1
1
  <%= field_wrapper **field_wrapper_args do %>
2
2
  <% if field.value_present? %>
3
- <%= js_map [{latitude: field.value[0], longitude: field.value[1]}], id: "location-map" %>
3
+ <%= js_map [{latitude: field.value[0], longitude: field.value[1]}], id: "location-map", zoom: field.zoom, controls: true %>
4
4
  <% else %>
5
5
 
6
6
  <% end %>
@@ -13,7 +13,7 @@
13
13
  <% elsif cover.respond_to?(:to_image) && cover.to_image.present? %>
14
14
  <%= link_to_if cover.link_to_resource, image_tag(cover.to_image, class: 'absolute h-full w-full object-cover'), resource_view_path, class: 'absolute h-full w-full object-cover', title: title.value %>
15
15
  <% elsif cover.type == 'file' %>
16
- <% if cover.value.attached? && cover.value.representable? %>
16
+ <% if cover.value&.attached? && cover.value.representable? %>
17
17
  <%= link_to_if cover.link_to_resource, image_tag(helpers.main_app.url_for(cover.value.variant(resize_to_limit: [480, 480])), class: 'absolute h-full w-full object-cover'), resource_view_path, class: 'absolute h-full w-full object-cover', title: title.value %>
18
18
  <% else %>
19
19
  <%= link_to resource_view_path do %>
@@ -37,9 +37,7 @@ class Avo::ResourceComponent < Avo::BaseComponent
37
37
  @resource.authorization.authorize_action(:destroy, raise_exception: false)
38
38
  end
39
39
 
40
- def can_see_the_actions_button?
41
- return false if @actions.blank?
42
-
40
+ def can_act_on?
43
41
  return authorize_association_for(:act_on) if @reflection.present?
44
42
 
45
43
  @resource.authorization.authorize_action(:act_on, raise_exception: false) && !has_reflection_and_is_read_only
@@ -63,32 +63,29 @@ class Avo::TabSwitcherComponent < Avo::BaseComponent
63
63
  # Because the developer hasn't specified that it should be visible on edit views (with the show_on: :edit option),
64
64
  # the field should not be visible in the item switcher either.
65
65
  def visible_items
66
- tabs.select do |item|
67
- visible = true
68
-
69
- if item.items.blank?
70
- visible = false
71
- end
66
+ tabs.select do |tab|
67
+ next false if tab.items.blank?
68
+ next false if tab.is_field? && !tab.authorized?
69
+ next false if tab.has_a_single_item? && !single_item_visible?(tab.items.first)
70
+ next false if !tab.visible?
71
+ next false if !tab.visible_on?(view)
72
+
73
+ true
74
+ end
75
+ end
72
76
 
73
- first_item = item.items.first
74
- if item.items.count == 1 && first_item.is_field? && first_item.has_own_panel? && !first_item.visible_on?(view)
75
- # Return nil if tab contians a has_many type of fields and it's hidden in current view
76
- visible = false
77
- end
77
+ private
78
78
 
79
- if item.respond_to?(:visible_on?)
80
- visible = item.visible_on? view
81
- end
79
+ def single_item_visible?(item)
80
+ # Item is visible if is not a field or don't have its own panel
81
+ return true if !item.is_field?
82
+ return true if !item.has_own_panel?
82
83
 
83
- if item.respond_to?(:visible?)
84
- visible = item.visible?
85
- end
84
+ return false if !item.visible_on?(view)
86
85
 
87
- if item.respond_to?(:authorized?)
88
- visible = item.authorized?
89
- end
86
+ # If item is hydrated with the correct resource and is not authorized, it's not visible
87
+ return false if item.resource.present? && !item.authorized?
90
88
 
91
- visible
92
- end
89
+ true
93
90
  end
94
91
  end
@@ -40,7 +40,7 @@
40
40
  <%= t('avo.delete').capitalize %>
41
41
  <% end %>
42
42
  <% end %>
43
- <% if can_see_the_actions_button? %>
43
+ <% if can_act_on? %>
44
44
  <%= render Avo::ActionsComponent.new actions: @actions, resource: @resource, view: @view %>
45
45
  <% end %>
46
46
  <% if can_see_the_save_button? %>
@@ -16,7 +16,7 @@
16
16
  <%= t('avo.attach_item', item: singular_resource_name).capitalize %>
17
17
  <% end %>
18
18
  <% end %>
19
- <% if can_see_the_actions_button? %>
19
+ <% if can_act_on? %>
20
20
  <%= render Avo::ActionsComponent.new actions: @actions, resource: @resource, view: @view %>
21
21
  <% end %>
22
22
  <% if can_see_the_create_button? %>
@@ -39,7 +39,7 @@
39
39
  <%= control.label %>
40
40
  <% end %>
41
41
  <% end %>
42
- <% elsif can_see_the_actions_button? && control.actions_list? %>
42
+ <% elsif can_act_on? && control.actions_list? %>
43
43
  <%= render Avo::ActionsComponent.new actions: @actions, resource: @resource, view: @view, exclude: control.exclude, include: control.include, style: control.style, color: control.color, label: control.label %>
44
44
  <% elsif control.edit_button? %>
45
45
  <% if @resource.authorization.authorize_action(:edit, raise_exception: false) %>
@@ -55,17 +55,19 @@
55
55
  <% end %>
56
56
  <% end %>
57
57
  <% elsif control.action? %>
58
- <%= a_link control.path,
59
- color: control.color,
60
- style: control.style,
61
- icon: control.icon,
62
- title: control.title,
63
- data: {
64
- tippy: control.title ? :tooltip : nil,
65
- 'turbo-frame': 'actions_show',
66
- 'action': 'click->actions-picker#visitAction',
67
- } do %>
68
- <%= control.label %>
58
+ <% if render_action_control?(control.action) %>
59
+ <%= a_link control.path,
60
+ color: control.color,
61
+ style: control.style,
62
+ icon: control.icon,
63
+ title: control.title,
64
+ data: {
65
+ tippy: control.title ? :tooltip : nil,
66
+ 'turbo-frame': 'actions_show',
67
+ 'action': 'click->actions-picker#visitAction',
68
+ } do %>
69
+ <%= control.label %>
70
+ <% end %>
69
71
  <% end %>
70
72
  <% elsif control.link_to? %>
71
73
  <%= a_link control.path,
@@ -140,7 +142,7 @@
140
142
  <%= t('avo.delete').capitalize %>
141
143
  <% end %>
142
144
  <% end %>
143
- <% if can_see_the_actions_button? %>
145
+ <% if can_act_on? %>
144
146
  <%= render Avo::ActionsComponent.new actions: @actions, resource: @resource, view: @view %>
145
147
  <% end %>
146
148
  <% if @resource.authorization.authorize_action(:edit, raise_exception: false) %>
@@ -45,6 +45,10 @@ class Avo::Views::ResourceShowComponent < Avo::ResourceComponent
45
45
  helpers.edit_resource_path(model: @resource.model, resource: @resource, **args)
46
46
  end
47
47
 
48
+ def render_action_control?(action)
49
+ can_act_on? && action.visible_in_view(parent_resource: @parent_resource)
50
+ end
51
+
48
52
  private
49
53
 
50
54
  # In development and test environments we shoudl show the invalid field errors
@@ -215,16 +215,24 @@ module Avo
215
215
 
216
216
  def save_model
217
217
  perform_action_and_record_errors do
218
- @model.save!
218
+ save_model_action
219
219
  end
220
220
  end
221
221
 
222
+ def save_model_action
223
+ @model.save!
224
+ end
225
+
222
226
  def destroy_model
223
227
  perform_action_and_record_errors do
224
- @model.destroy!
228
+ destroy_model_action
225
229
  end
226
230
  end
227
231
 
232
+ def destroy_model_action
233
+ @model.destroy!
234
+ end
235
+
228
236
  def perform_action_and_record_errors(&block)
229
237
  begin
230
238
  succeeded = block.call
@@ -253,7 +261,7 @@ module Avo
253
261
  end
254
262
 
255
263
  def permitted_params
256
- @resource.get_field_definitions.select(&:updatable).map(&:to_permitted_param).concat extra_params
264
+ @resource.get_field_definitions.select(&:updatable).map(&:to_permitted_param).concat(extra_params).uniq
257
265
  end
258
266
 
259
267
  def extra_params
@@ -112,8 +112,13 @@ module Avo
112
112
  # This scope is applied if the search is being performed on a has_many association
113
113
  def apply_has_many_scope
114
114
  association_name = BaseResource.valid_association_name(parent, params[:via_association_id])
115
+
116
+ # Get association records
115
117
  scope = parent.send(association_name)
116
118
 
119
+ # Apply policy scope if authorization is present
120
+ scope = resource.authorization&.apply_policy scope
121
+
117
122
  Avo::Hosts::SearchScopeHost.new(block: @resource.search_query, params: params, scope: scope).handle
118
123
  end
119
124
 
@@ -177,9 +182,8 @@ module Avo
177
182
  def fetch_parent
178
183
  return unless params[:via_reflection_id].present?
179
184
 
180
- parent_class = BaseResource.valid_model_class params[:via_reflection_class]
181
-
182
- parent_class.find params[:via_reflection_id]
185
+ parent_resource = ::Avo::App.get_resource_by_model_name params[:via_reflection_class]
186
+ parent_resource.find_record params[:via_reflection_id], params: params
183
187
  end
184
188
  end
185
189
  end
@@ -20,6 +20,7 @@ export default class extends Controller {
20
20
  const options = {
21
21
  element: this.elementTarget,
22
22
  spellChecker: this.componentOptions.spell_checker,
23
+ autoRefresh: { delay: 500},
23
24
  }
24
25
 
25
26
  if (this.view === 'show') {
@@ -377,11 +377,9 @@ module Avo
377
377
  !field.computed
378
378
  end
379
379
  .map do |field|
380
- id = field.id
381
380
  value = field.value
382
381
 
383
382
  if field.type == "belongs_to"
384
- id = field.foreign_key.to_sym
385
383
 
386
384
  reflection = @model._reflections[@params[:via_relation]]
387
385
 
@@ -398,17 +396,15 @@ module Avo
398
396
  end
399
397
  end
400
398
 
401
- [id, value]
399
+ [field, value]
402
400
  end
403
401
  .to_h
404
- .select do |id, value|
402
+ .select do |_, value|
405
403
  value.present?
406
404
  end
407
405
 
408
- default_values.each do |id, value|
409
- if @model.send(id).nil?
410
- @model.send("#{id}=", value)
411
- end
406
+ default_values.each do |field, value|
407
+ field.assign_value record: @model, value: value
412
408
  end
413
409
  end
414
410
 
@@ -98,6 +98,10 @@ module Avo
98
98
  if item.is_field?
99
99
  fields << item
100
100
  end
101
+
102
+ if item.is_row?
103
+ fields << extract_fields_from_items(tab)
104
+ end
101
105
  end
102
106
 
103
107
  fields.flatten
@@ -117,7 +121,7 @@ module Avo
117
121
  thing.items.each do |item|
118
122
  if item.is_field?
119
123
  fields << item
120
- elsif item.is_panel?
124
+ elsif item.is_panel? || item.is_row?
121
125
  fields << extract_fields_from_items(item)
122
126
  end
123
127
  end
@@ -290,8 +294,10 @@ module Avo
290
294
  panelfull_items.grep(Avo::TabGroup).each do |tab_group|
291
295
  tab_group.items.grep(Avo::Tab).each do |tab|
292
296
  tab.items.grep(Avo::Panel).each do |panel|
293
- panel.items.grep(Avo::Fields::BelongsToField).each do |field|
294
- field.target = :_top
297
+ set_target_to_top panel.items.grep(Avo::Fields::BelongsToField)
298
+
299
+ panel.items.grep(Avo::Row).each do |row|
300
+ set_target_to_top row.items.grep(Avo::Fields::BelongsToField)
295
301
  end
296
302
  end
297
303
  end
@@ -311,6 +317,12 @@ module Avo
311
317
 
312
318
  private
313
319
 
320
+ def set_target_to_top(fields)
321
+ fields.each do |field|
322
+ field.target = :_top
323
+ end
324
+ end
325
+
314
326
  def check_license
315
327
  if !Rails.env.production? && App.license.present? && App.license.lacks(:resource_tools)
316
328
  # Add error message to let the developer know the resource tool will not be available in a production environment.
@@ -27,11 +27,11 @@ module Avo
27
27
  end
28
28
 
29
29
  def visible(item)
30
- if item.is_field?
31
- item.visible? && item.visible_on?(view)
32
- else
33
- item.visible?
34
- end
30
+ return item.visible? unless item.is_field?
31
+
32
+ return false if item.respond_to?(:authorized?) && item.resource.present? && !item.authorized?
33
+
34
+ item.visible? && item.visible_on?(view)
35
35
  end
36
36
 
37
37
  def visible?
@@ -273,6 +273,15 @@ module Avo
273
273
  !is_readonly? && visible?
274
274
  end
275
275
 
276
+ # Used by Avo to fill the record with the default value on :new and :edit views
277
+ def assign_value(record:, value:)
278
+ id = type == "belongs_to" ? foreign_key : database_id
279
+
280
+ if record.send(id).nil?
281
+ record.send("#{id}=", value)
282
+ end
283
+ end
284
+
276
285
  private
277
286
 
278
287
  def model_or_class(model)
@@ -18,7 +18,7 @@ module Avo
18
18
  def visible_on?(view)
19
19
  raise "No view specified on visibility check." if view.blank?
20
20
 
21
- send :"show_on_#{view.to_s}"
21
+ send :"show_on_#{view}"
22
22
  end
23
23
 
24
24
  def show_on(*where)
@@ -3,13 +3,14 @@
3
3
  module Avo
4
4
  module Fields
5
5
  class LocationField < BaseField
6
- attr_reader :stored_as
6
+ attr_reader :stored_as, :zoom
7
7
 
8
8
  def initialize(id, **args, &block)
9
9
  hide_on :index
10
10
  super(id, **args, &block)
11
11
 
12
12
  @stored_as = args[:stored_as].present? ? args[:stored_as] : nil # You can pass it an array of db columns [:latitude, :longitude]
13
+ @zoom = args[:zoom].present? ? args[:zoom].to_i : 15
13
14
  end
14
15
 
15
16
  def value_as_array?
@@ -72,6 +73,14 @@ module Avo
72
73
 
73
74
  value.present?
74
75
  end
76
+
77
+ def assign_value(record:, value:)
78
+ return super if stored_as.blank?
79
+
80
+ stored_as.each_with_index do |database_id, index|
81
+ record.send("#{database_id}=", value[index])
82
+ end
83
+ end
75
84
  end
76
85
  end
77
86
  end
@@ -4,17 +4,22 @@ module Avo
4
4
  class Action < BaseControl
5
5
  attr_reader :klass
6
6
 
7
- def initialize(klass, model: nil, resource: nil, view: nil, **args)
7
+ def initialize(klass, record: nil, resource: nil, view: nil, **args)
8
8
  super(**args)
9
9
 
10
10
  @klass = klass
11
11
  @resource = resource
12
- @model = model
12
+ @record = record
13
13
  @view = view
14
14
  end
15
15
 
16
16
  def action
17
- @instance ||= @klass.new(model: @model, resource: @resource, view: @view)
17
+ @instance ||= @klass.new(
18
+ model: @record,
19
+ resource: @resource,
20
+ view: @view,
21
+ arguments: @resource.get_action_arguments(klass)
22
+ )
18
23
  end
19
24
 
20
25
  def path
data/lib/avo/tab.rb CHANGED
@@ -65,4 +65,8 @@ class Avo::Tab
65
65
  super(view)
66
66
  end
67
67
  end
68
+
69
+ def has_a_single_item?
70
+ items.count == 1
71
+ end
68
72
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "2.36.0" unless const_defined?(:VERSION)
2
+ VERSION = "2.36.2" unless const_defined?(:VERSION)
3
3
  end
@@ -659,7 +659,7 @@ Please report this to https://github.com/markedjs/marked.`,r){var i="<p>An error
659
659
  -----
660
660
 
661
661
  `]},urt={link:"URL for the link:",image:"URL of the image:"},crt={locale:"en-US",format:{hour:"2-digit",minute:"2-digit"}},frt={bold:"**",code:"```",italic:"*"},hrt={sbInit:"Attach files by drag and dropping or pasting from clipboard.",sbOnDragEnter:"Drop image to upload it.",sbOnDrop:"Uploading image #images_names#...",sbProgress:"Uploading #file_name#: #progress#%",sbOnUploaded:"Uploaded #image_name#",sizeUnits:" B, KB, MB"},drt={noFileGiven:"You must select a file.",typeNotAllowed:"This image type is not allowed.",fileTooLarge:`Image #image_name# is too big (#image_size#).
662
- Maximum file size is #image_max_size#.`,importError:"Something went wrong when uploading the image #image_name#."};function xn(r){r=r||{},r.parent=this;var e=!0;if(r.autoDownloadFontAwesome===!1&&(e=!1),r.autoDownloadFontAwesome!==!0)for(var t=document.styleSheets,n=0;n<t.length;n++)!t[n].href||t[n].href.indexOf("//maxcdn.bootstrapcdn.com/font-awesome/")>-1&&(e=!1);if(e){var i=document.createElement("link");i.rel="stylesheet",i.href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css",document.getElementsByTagName("head")[0].appendChild(i)}if(r.element)this.element=r.element;else if(r.element===null){console.log("EasyMDE: Error. No element was found.");return}if(r.toolbar===void 0){r.toolbar=[];for(var s in d0)Object.prototype.hasOwnProperty.call(d0,s)&&(s.indexOf("separator-")!=-1&&r.toolbar.push("|"),(d0[s].default===!0||r.showIcons&&r.showIcons.constructor===Array&&r.showIcons.indexOf(s)!=-1)&&r.toolbar.push(s))}if(Object.prototype.hasOwnProperty.call(r,"previewClass")||(r.previewClass="editor-preview"),Object.prototype.hasOwnProperty.call(r,"status")||(r.status=["autosave","lines","words","cursor"],r.uploadImage&&r.status.unshift("upload-image")),r.previewRender||(r.previewRender=function(h){return this.parent.markdown(h)}),r.parsingConfig=Tg({highlightFormatting:!0},r.parsingConfig||{}),r.insertTexts=Tg({},lrt,r.insertTexts||{}),r.promptTexts=Tg({},urt,r.promptTexts||{}),r.blockStyles=Tg({},frt,r.blockStyles||{}),r.autosave!=null&&(r.autosave.timeFormat=Tg({},crt,r.autosave.timeFormat||{})),r.iconClassMap=Tg({},_s,r.iconClassMap||{}),r.shortcuts=Tg({},ert,r.shortcuts||{}),r.maxHeight=r.maxHeight||void 0,r.direction=r.direction||"ltr",typeof r.maxHeight<"u"?r.minHeight=r.maxHeight:r.minHeight=r.minHeight||"300px",r.errorCallback=r.errorCallback||function(h){alert(h)},r.uploadImage=r.uploadImage||!1,r.imageMaxSize=r.imageMaxSize||2097152,r.imageAccept=r.imageAccept||"image/png, image/jpeg, image/gif, image/avif",r.imageTexts=Tg({},hrt,r.imageTexts||{}),r.errorMessages=Tg({},drt,r.errorMessages||{}),r.imagePathAbsolute=r.imagePathAbsolute||!1,r.imageCSRFName=r.imageCSRFName||"csrfmiddlewaretoken",r.imageCSRFHeader=r.imageCSRFHeader||!1,r.autosave!=null&&r.autosave.unique_id!=null&&r.autosave.unique_id!=""&&(r.autosave.uniqueId=r.autosave.unique_id),r.overlayMode&&r.overlayMode.combine===void 0&&(r.overlayMode.combine=!0),this.options=r,this.render(),r.initialValue&&(!this.options.autosave||this.options.autosave.foundSavedValue!==!0)&&this.value(r.initialValue),r.uploadImage){var l=this;this.codemirror.on("dragenter",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbOnDragEnter),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("dragend",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbInit),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("dragleave",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbInit),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("dragover",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbOnDragEnter),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("drop",function(h,b){b.stopPropagation(),b.preventDefault(),r.imageUploadFunction?l.uploadImagesUsingCustomFunction(r.imageUploadFunction,b.dataTransfer.files):l.uploadImages(b.dataTransfer.files)}),this.codemirror.on("paste",function(h,b){r.imageUploadFunction?l.uploadImagesUsingCustomFunction(r.imageUploadFunction,b.clipboardData.files):l.uploadImages(b.clipboardData.files)})}}xn.prototype.uploadImages=function(r,e,t){if(r.length!==0){for(var n=[],i=0;i<r.length;i++)n.push(r[i].name),this.uploadImage(r[i],e,t);this.updateStatusBar("upload-image",this.options.imageTexts.sbOnDrop.replace("#images_names#",n.join(", ")))}};xn.prototype.uploadImagesUsingCustomFunction=function(r,e){if(e.length!==0){for(var t=[],n=0;n<e.length;n++)t.push(e[n].name),this.uploadImageUsingCustomFunction(r,e[n]);this.updateStatusBar("upload-image",this.options.imageTexts.sbOnDrop.replace("#images_names#",t.join(", ")))}};xn.prototype.updateStatusBar=function(r,e){if(!!this.gui.statusbar){var t=this.gui.statusbar.getElementsByClassName(r);t.length===1?this.gui.statusbar.getElementsByClassName(r)[0].textContent=e:t.length===0?console.log("EasyMDE: status bar item "+r+" was not found."):console.log("EasyMDE: Several status bar items named "+r+" was found.")}};xn.prototype.markdown=function(r){if(TB){var e;if(this.options&&this.options.renderingConfig&&this.options.renderingConfig.markedOptions?e=this.options.renderingConfig.markedOptions:e={},this.options&&this.options.renderingConfig&&this.options.renderingConfig.singleLineBreaks===!1?e.breaks=!1:e.breaks=!0,this.options&&this.options.renderingConfig&&this.options.renderingConfig.codeSyntaxHighlighting===!0){var t=this.options.renderingConfig.hljs||window.hljs;t&&(e.highlight=function(i,s){return s&&t.getLanguage(s)?t.highlight(s,i).value:t.highlightAuto(i).value})}TB.setOptions(e);var n=TB.parse(r);return this.options.renderingConfig&&typeof this.options.renderingConfig.sanitizerFunction=="function"&&(n=this.options.renderingConfig.sanitizerFunction.call(this,n)),n=rrt(n),n=nrt(n),n}};xn.prototype.render=function(r){if(r||(r=this.element||document.getElementsByTagName("textarea")[0]),this._rendered&&this._rendered===r)return;this.element=r;var e=this.options,t=this,n={};for(var i in e.shortcuts)e.shortcuts[i]!==null&&QS[i]!==null&&function(X){n[dhe(e.shortcuts[X])]=function(){var te=QS[X];typeof te=="function"?te(t):typeof te=="string"&&window.open(te,"_blank")}}(i);n.Enter="newlineAndIndentContinueMarkdownList",n.Tab="tabAndIndentMarkdownList",n["Shift-Tab"]="shiftTabAndUnindentMarkdownList",n.Esc=function(X){X.getOption("fullScreen")&&p0(t)},this.documentOnKeyDown=function(X){X=X||window.event,X.keyCode==27&&t.codemirror.getOption("fullScreen")&&p0(t)},document.addEventListener("keydown",this.documentOnKeyDown,!1);var s,l;e.overlayMode?(Qx.defineMode("overlay-mode",function(X){return Qx.overlayMode(Qx.getMode(X,e.spellChecker!==!1?"spell-checker":"gfm"),e.overlayMode.mode,e.overlayMode.combine)}),s="overlay-mode",l=e.parsingConfig,l.gitHubSpice=!1):(s=e.parsingConfig,s.name="gfm",s.gitHubSpice=!1),e.spellChecker!==!1&&(s="spell-checker",l=e.parsingConfig,l.name="gfm",l.gitHubSpice=!1,typeof e.spellChecker=="function"?e.spellChecker({codeMirrorInstance:Qx}):Jtt({codeMirrorInstance:Qx}));function h(X,te,ne){return{addNew:!1}}if(this.codemirror=Qx.fromTextArea(r,{mode:s,backdrop:l,theme:e.theme!=null?e.theme:"easymde",tabSize:e.tabSize!=null?e.tabSize:2,indentUnit:e.tabSize!=null?e.tabSize:2,indentWithTabs:e.indentWithTabs!==!1,lineNumbers:e.lineNumbers===!0,autofocus:e.autofocus===!0,extraKeys:n,direction:e.direction,lineWrapping:e.lineWrapping!==!1,allowDropFileTypes:["text/plain"],placeholder:e.placeholder||r.getAttribute("placeholder")||"",styleSelectedText:e.styleSelectedText!=null?e.styleSelectedText:!EB(),scrollbarStyle:e.scrollbarStyle!=null?e.scrollbarStyle:"native",configureMouse:h,inputStyle:e.inputStyle!=null?e.inputStyle:EB()?"contenteditable":"textarea",spellcheck:e.nativeSpellcheck!=null?e.nativeSpellcheck:!0,autoRefresh:e.autoRefresh!=null?e.autoRefresh:!1}),this.codemirror.getScrollerElement().style.minHeight=e.minHeight,typeof e.maxHeight<"u"&&(this.codemirror.getScrollerElement().style.height=e.maxHeight),e.forceSync===!0){var b=this.codemirror;b.on("change",function(){b.save()})}this.gui={};var k=document.createElement("div");k.classList.add("EasyMDEContainer"),k.setAttribute("role","application");var E=this.codemirror.getWrapperElement();E.parentNode.insertBefore(k,E),k.appendChild(E),e.toolbar!==!1&&(this.gui.toolbar=this.createToolbar()),e.status!==!1&&(this.gui.statusbar=this.createStatusbar()),e.autosave!=null&&e.autosave.enabled===!0&&(this.autosave(),this.codemirror.on("change",function(){clearTimeout(t._autosave_timeout),t._autosave_timeout=setTimeout(function(){t.autosave()},t.options.autosave.submit_delay||t.options.autosave.delay||1e3)}));function L(X,te){var ne,de=window.getComputedStyle(document.querySelector(".CodeMirror-sizer")).width.replace("px","");return X<de?ne=te+"px":ne=te/X*100+"%",ne}var q=this;function B(X,te){X.setAttribute("data-img-src",te.url),X.setAttribute("style","--bg-image:url("+te.url+");--width:"+te.naturalWidth+"px;--height:"+L(te.naturalWidth,te.naturalHeight)),q.codemirror.setSize()}function j(){!e.previewImagesInEditor||k.querySelectorAll(".cm-image-marker").forEach(function(X){var te=X.parentElement;if(!!te.innerText.match(/^!\[.*?\]\(.*\)/g)&&!te.hasAttribute("data-img-src")){var ne=te.innerText.match("\\((.*)\\)");if(window.EMDEimagesCache||(window.EMDEimagesCache={}),ne&&ne.length>=2){var de=ne[1];if(e.imagesPreviewHandler){var _=e.imagesPreviewHandler(ne[1]);typeof _=="string"&&(de=_)}if(window.EMDEimagesCache[de])B(te,window.EMDEimagesCache[de]);else{var ye=document.createElement("img");ye.onload=function(){window.EMDEimagesCache[de]={naturalWidth:ye.naturalWidth,naturalHeight:ye.naturalHeight,url:de},B(te,window.EMDEimagesCache[de])},ye.src=de}}}})}this.codemirror.on("update",function(){j()}),this.gui.sideBySide=this.createSideBySide(),this._rendered=this.element,(e.autofocus===!0||r.autofocus)&&this.codemirror.focus();var U=this.codemirror;setTimeout(function(){U.refresh()}.bind(U),0)};xn.prototype.cleanup=function(){document.removeEventListener("keydown",this.documentOnKeyDown)};function yhe(){if(typeof localStorage=="object")try{localStorage.setItem("smde_localStorage",1),localStorage.removeItem("smde_localStorage")}catch{return!1}else return!1;return!0}xn.prototype.autosave=function(){if(yhe()){var r=this;if(this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to use the autosave feature");return}this.options.autosave.binded!==!0&&(r.element.form!=null&&r.element.form!=null&&r.element.form.addEventListener("submit",function(){clearTimeout(r.autosaveTimeoutId),r.autosaveTimeoutId=void 0,localStorage.removeItem("smde_"+r.options.autosave.uniqueId)}),this.options.autosave.binded=!0),this.options.autosave.loaded!==!0&&(typeof localStorage.getItem("smde_"+this.options.autosave.uniqueId)=="string"&&localStorage.getItem("smde_"+this.options.autosave.uniqueId)!=""&&(this.codemirror.setValue(localStorage.getItem("smde_"+this.options.autosave.uniqueId)),this.options.autosave.foundSavedValue=!0),this.options.autosave.loaded=!0);var e=r.value();e!==""?localStorage.setItem("smde_"+this.options.autosave.uniqueId,e):localStorage.removeItem("smde_"+this.options.autosave.uniqueId);var t=document.getElementById("autosaved");if(t!=null&&t!=null&&t!=""){var n=new Date,i=new Intl.DateTimeFormat([this.options.autosave.timeFormat.locale,"en-US"],this.options.autosave.timeFormat.format).format(n),s=this.options.autosave.text==null?"Autosaved: ":this.options.autosave.text;t.innerHTML=s+i}}else console.log("EasyMDE: localStorage not available, cannot autosave")};xn.prototype.clearAutosavedValue=function(){if(yhe()){if(this.options.autosave==null||this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to clear the autosave value");return}localStorage.removeItem("smde_"+this.options.autosave.uniqueId)}else console.log("EasyMDE: localStorage not available, cannot autosave")};xn.prototype.openBrowseFileWindow=function(r,e){var t=this,n=this.gui.toolbar.getElementsByClassName("imageInput")[0];n.click();function i(s){t.options.imageUploadFunction?t.uploadImagesUsingCustomFunction(t.options.imageUploadFunction,s.target.files):t.uploadImages(s.target.files,r,e),n.removeEventListener("change",i)}n.addEventListener("change",i)};xn.prototype.uploadImage=function(r,e,t){var n=this;e=e||function(k){mhe(n,k)};function i(b){n.updateStatusBar("upload-image",b),setTimeout(function(){n.updateStatusBar("upload-image",n.options.imageTexts.sbInit)},1e4),t&&typeof t=="function"&&t(b),n.options.errorCallback(b)}function s(b){var k=n.options.imageTexts.sizeUnits.split(",");return b.replace("#image_name#",r.name).replace("#image_size#",AD(r.size,k)).replace("#image_max_size#",AD(n.options.imageMaxSize,k))}if(r.size>this.options.imageMaxSize){i(s(this.options.errorMessages.fileTooLarge));return}var l=new FormData;l.append("image",r),n.options.imageCSRFToken&&!n.options.imageCSRFHeader&&l.append(n.options.imageCSRFName,n.options.imageCSRFToken);var h=new XMLHttpRequest;h.upload.onprogress=function(b){if(b.lengthComputable){var k=""+Math.round(b.loaded*100/b.total);n.updateStatusBar("upload-image",n.options.imageTexts.sbProgress.replace("#file_name#",r.name).replace("#progress#",k))}},h.open("POST",this.options.imageUploadEndpoint),n.options.imageCSRFToken&&n.options.imageCSRFHeader&&h.setRequestHeader(n.options.imageCSRFName,n.options.imageCSRFToken),h.onload=function(){try{var b=JSON.parse(this.responseText)}catch{console.error("EasyMDE: The server did not return a valid json."),i(s(n.options.errorMessages.importError));return}this.status===200&&b&&!b.error&&b.data&&b.data.filePath?e((n.options.imagePathAbsolute?"":window.location.origin+"/")+b.data.filePath):b.error&&b.error in n.options.errorMessages?i(s(n.options.errorMessages[b.error])):b.error?i(s(b.error)):(console.error("EasyMDE: Received an unexpected response after uploading the image."+this.status+" ("+this.statusText+")"),i(s(n.options.errorMessages.importError)))},h.onerror=function(b){console.error("EasyMDE: An unexpected error occurred when trying to upload the image."+b.target.status+" ("+b.target.statusText+")"),i(n.options.errorMessages.importError)},h.send(l)};xn.prototype.uploadImageUsingCustomFunction=function(r,e){var t=this;function n(l){mhe(t,l)}function i(l){var h=s(l);t.updateStatusBar("upload-image",h),setTimeout(function(){t.updateStatusBar("upload-image",t.options.imageTexts.sbInit)},1e4),t.options.errorCallback(h)}function s(l){var h=t.options.imageTexts.sizeUnits.split(",");return l.replace("#image_name#",e.name).replace("#image_size#",AD(e.size,h)).replace("#image_max_size#",AD(t.options.imageMaxSize,h))}r.apply(this,[e,n,i])};xn.prototype.setPreviewMaxHeight=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.nextSibling,n=parseInt(window.getComputedStyle(e).paddingTop),i=parseInt(window.getComputedStyle(e).borderTopWidth),s=parseInt(this.options.maxHeight),l=s+n*2+i*2,h=l.toString()+"px";t.style.height=h};xn.prototype.createSideBySide=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.nextSibling;if(!t||!t.classList.contains("editor-preview-side")){if(t=document.createElement("div"),t.className="editor-preview-side",this.options.previewClass)if(Array.isArray(this.options.previewClass))for(var n=0;n<this.options.previewClass.length;n++)t.classList.add(this.options.previewClass[n]);else typeof this.options.previewClass=="string"&&t.classList.add(this.options.previewClass);e.parentNode.insertBefore(t,e.nextSibling)}if(typeof this.options.maxHeight<"u"&&this.setPreviewMaxHeight(),this.options.syncSideBySidePreviewScroll===!1)return t;var i=!1,s=!1;return r.on("scroll",function(l){if(i){i=!1;return}s=!0;var h=l.getScrollInfo().height-l.getScrollInfo().clientHeight,b=parseFloat(l.getScrollInfo().top)/h,k=(t.scrollHeight-t.clientHeight)*b;t.scrollTop=k}),t.onscroll=function(){if(s){s=!1;return}i=!0;var l=t.scrollHeight-t.clientHeight,h=parseFloat(t.scrollTop)/l,b=(r.getScrollInfo().height-r.getScrollInfo().clientHeight)*h;r.scrollTo(0,b)},t};xn.prototype.createToolbar=function(r){if(r=r||this.options.toolbar,!(!r||r.length===0)){var e;for(e=0;e<r.length;e++)d0[r[e]]!=null&&(r[e]=d0[r[e]]);var t=document.createElement("div");t.className="editor-toolbar",t.setAttribute("role","toolbar");var n=this,i={};for(n.toolbar=r,e=0;e<r.length;e++)if(!(r[e].name=="guide"&&n.options.toolbarGuideIcon===!1)&&!(n.options.hideIcons&&n.options.hideIcons.indexOf(r[e].name)!=-1)&&!((r[e].name=="fullscreen"||r[e].name=="side-by-side")&&EB())){if(r[e]==="|"){for(var s=!1,l=e+1;l<r.length;l++)r[l]!=="|"&&(!n.options.hideIcons||n.options.hideIcons.indexOf(r[l].name)==-1)&&(s=!0);if(!s)continue}(function(k){var E;if(k==="|"?E=ort():k.children?E=irt(k,n.options.toolbarTips,n.options.shortcuts,n):E=ED(k,!0,n.options.toolbarTips,n.options.shortcuts,"button",n),i[k.name||k]=E,t.appendChild(E),k.name==="upload-image"){var L=document.createElement("input");L.className="imageInput",L.type="file",L.multiple=!0,L.name="image",L.accept=n.options.imageAccept,L.style.display="none",L.style.opacity=0,t.appendChild(L)}})(r[e])}n.toolbar_div=t,n.toolbarElements=i;var h=this.codemirror;h.on("cursorActivity",function(){var k=Bv(h);for(var E in i)(function(L){var q=i[L];k[L]?q.classList.add("active"):L!="fullscreen"&&L!="side-by-side"&&q.classList.remove("active")})(E)});var b=h.getWrapperElement();return b.parentNode.insertBefore(t,b),t}};xn.prototype.createStatusbar=function(r){r=r||this.options.status;var e=this.options,t=this.codemirror;if(!(!r||r.length===0)){var n=[],i,s,l,h;for(i=0;i<r.length;i++)if(s=void 0,l=void 0,h=void 0,typeof r[i]=="object")n.push({className:r[i].className,defaultValue:r[i].defaultValue,onUpdate:r[i].onUpdate,onActivity:r[i].onActivity});else{var b=r[i];b==="words"?(h=function(B){B.innerHTML=fhe(t.getValue())},s=function(B){B.innerHTML=fhe(t.getValue())}):b==="lines"?(h=function(B){B.innerHTML=t.lineCount()},s=function(B){B.innerHTML=t.lineCount()}):b==="cursor"?(h=function(B){B.innerHTML="1:1"},l=function(B){var j=t.getCursor(),U=j.line+1,X=j.ch+1;B.innerHTML=U+":"+X}):b==="autosave"?h=function(B){e.autosave!=null&&e.autosave.enabled===!0&&B.setAttribute("id","autosaved")}:b==="upload-image"&&(h=function(B){B.innerHTML=e.imageTexts.sbInit}),n.push({className:b,defaultValue:h,onUpdate:s,onActivity:l})}var k=document.createElement("div");for(k.className="editor-statusbar",i=0;i<n.length;i++){var E=n[i],L=document.createElement("span");L.className=E.className,typeof E.defaultValue=="function"&&E.defaultValue(L),typeof E.onUpdate=="function"&&this.codemirror.on("update",function(B,j){return function(){j.onUpdate(B)}}(L,E)),typeof E.onActivity=="function"&&this.codemirror.on("cursorActivity",function(B,j){return function(){j.onActivity(B)}}(L,E)),k.appendChild(L)}var q=this.codemirror.getWrapperElement();return q.parentNode.insertBefore(k,q.nextSibling),k}};xn.prototype.value=function(r){var e=this.codemirror;if(r===void 0)return e.getValue();if(e.getDoc().setValue(r),this.isPreviewActive()){var t=e.getWrapperElement(),n=t.lastChild,i=this.options.previewRender(r,n);i!==null&&(n.innerHTML=i)}return this};xn.toggleBold=DD;xn.toggleItalic=OD;xn.toggleStrikethrough=ID;xn.toggleBlockquote=LD;xn.toggleHeadingSmaller=ek;xn.toggleHeadingBigger=PD;xn.toggleHeading1=RD;xn.toggleHeading2=FD;xn.toggleHeading3=qD;xn.toggleHeading4=AB;xn.toggleHeading5=DB;xn.toggleHeading6=OB;xn.toggleCodeBlock=MD;xn.toggleUnorderedList=ND;xn.toggleOrderedList=zD;xn.cleanBlock=BD;xn.drawLink=jD;xn.drawImage=UD;xn.drawUploadedImage=IB;xn.drawTable=HD;xn.drawHorizontalRule=WD;xn.undo=VD;xn.redo=$D;xn.togglePreview=GD;xn.toggleSideBySide=e_;xn.toggleFullScreen=p0;xn.prototype.toggleBold=function(){DD(this)};xn.prototype.toggleItalic=function(){OD(this)};xn.prototype.toggleStrikethrough=function(){ID(this)};xn.prototype.toggleBlockquote=function(){LD(this)};xn.prototype.toggleHeadingSmaller=function(){ek(this)};xn.prototype.toggleHeadingBigger=function(){PD(this)};xn.prototype.toggleHeading1=function(){RD(this)};xn.prototype.toggleHeading2=function(){FD(this)};xn.prototype.toggleHeading3=function(){qD(this)};xn.prototype.toggleHeading4=function(){AB(this)};xn.prototype.toggleHeading5=function(){DB(this)};xn.prototype.toggleHeading6=function(){OB(this)};xn.prototype.toggleCodeBlock=function(){MD(this)};xn.prototype.toggleUnorderedList=function(){ND(this)};xn.prototype.toggleOrderedList=function(){zD(this)};xn.prototype.cleanBlock=function(){BD(this)};xn.prototype.drawLink=function(){jD(this)};xn.prototype.drawImage=function(){UD(this)};xn.prototype.drawUploadedImage=function(){IB(this)};xn.prototype.drawTable=function(){HD(this)};xn.prototype.drawHorizontalRule=function(){WD(this)};xn.prototype.undo=function(){VD(this)};xn.prototype.redo=function(){$D(this)};xn.prototype.togglePreview=function(){GD(this)};xn.prototype.toggleSideBySide=function(){e_(this)};xn.prototype.toggleFullScreen=function(){p0(this)};xn.prototype.isPreviewActive=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.lastChild;return t.classList.contains("editor-preview-active")};xn.prototype.isSideBySideActive=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.nextSibling;return t.classList.contains("editor-preview-active-side")};xn.prototype.isFullscreenActive=function(){var r=this.codemirror;return r.getOption("fullScreen")};xn.prototype.getState=function(){var r=this.codemirror;return Bv(r)};xn.prototype.toTextArea=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.parentNode;t&&(this.gui.toolbar&&t.removeChild(this.gui.toolbar),this.gui.statusbar&&t.removeChild(this.gui.statusbar),this.gui.sideBySide&&t.removeChild(this.gui.sideBySide)),t.parentNode.insertBefore(e,t),t.remove(),r.toTextArea(),this.autosaveTimeoutId&&(clearTimeout(this.autosaveTimeoutId),this.autosaveTimeoutId=void 0,this.clearAutosavedValue())};bhe.exports=xn});var _he,KD,whe=Xe(()=>{No();_he=ta(xhe()),KD=class extends pn{get view(){return this.elementTarget.dataset.view}get componentOptions(){try{return JSON.parse(this.elementTarget.dataset.componentOptions)}catch(r){return{}}}connect(){let r={element:this.elementTarget,spellChecker:this.componentOptions.spell_checker};this.view==="show"&&(r.toolbar=!1,r.status=!1);let e=new _he.default(r);this.view==="show"&&(e.codemirror.options.readOnly=!0)}};Qr(KD,"targets",["element"])});var YD,She=Xe(()=>{No();YD=class extends pn{showContent(r){this.contentTarget.classList.toggle("hidden"),r.target.classList.add("hidden")}};Qr(YD,"targets",["content"])});var tk,khe=Xe(()=>{No();tk=class extends pn{connect(){this.resourceName=this.element.dataset.resourceName}toggle(r){let e=!!r.target.checked;document.querySelectorAll(`[data-controller="item-selector"][data-resource-name="${this.resourceName}"] input[type=checkbox]`).forEach(t=>t.checked!==e&&t.click()),this.selectAllEnabled()&&(this.selectAllOverlay(e),e||this.resetUnselected())}selectRow(){let r=!0;this.itemCheckboxTargets.forEach(e=>r=r&&e.checked),this.checkboxTarget.checked=r,this.selectAllEnabled()&&(this.selectAllOverlay(r),this.resetUnselected())}selectAll(r){r.preventDefault(),this.selectedAllValue=!this.selectedAllValue,this.unselectedMessageTarget.classList.toggle("hidden"),this.selectedMessageTarget.classList.toggle("hidden")}resetUnselected(){this.selectedAllValue=!1,this.unselectedMessageTarget.classList.remove("hidden"),this.selectedMessageTarget.classList.add("hidden")}selectAllOverlay(r){r?this.selectAllOverlayTarget.classList.remove("hidden"):this.selectAllOverlayTarget.classList.add("hidden")}selectAllEnabled(){return this.pageCountValue>1&&this.selectedAllQueryValue!=="select_all_disabled"}};Qr(tk,"targets",["itemCheckbox","checkbox","selectAllOverlay","unselectedMessage","selectedMessage"]),Qr(tk,"values",{pageCount:Number,selectedAll:Boolean,selectedAllQuery:String})});var ZD,Che=Xe(()=>{No();ZD=class extends pn{constructor(){super(...arguments);Qr(this,"checkbox",{});Qr(this,"enabledClasses",["text-black"]);Qr(this,"disabledClasses",["text-gray-500"])}get actionsPanelPresent(){return this.actionsButtonElement!==null}get currentIds(){try{return JSON.parse(this.stateHolderElement.dataset.selectedResources)}catch(r){return[]}}get actionLinks(){return document.querySelectorAll('.js-actions-dropdown a[data-actions-picker-target="resourceAction"]')}set currentIds(r){this.stateHolderElement.dataset.selectedResources=JSON.stringify(r),this.actionsPanelPresent&&(r.length>0?this.enableResourceActions():this.disableResourceActions())}connect(){this.resourceName=this.element.dataset.resourceName,this.resourceId=this.element.dataset.resourceId,this.actionsButtonElement=document.querySelector(`[data-actions-dropdown-button="${this.resourceName}"]`),this.stateHolderElement=document.querySelector(`[data-selected-resources-name="${this.resourceName}"]`)}addToSelected(){let r=this.currentIds;r.push(this.resourceId),this.currentIds=r}removeFromSelected(){this.currentIds=this.currentIds.filter(r=>r.toString()!==this.resourceId)}toggle(r){this.checkbox=r.target,this.checkbox.checked?this.addToSelected():this.removeFromSelected()}enableResourceActions(){this.actionLinks.forEach(r=>{r.classList.add(...this.enabledClasses),r.classList.remove(...this.disabledClasses),r.setAttribute("data-href",r.getAttribute("href")),r.dataset.disabled=!1})}disableResourceActions(){this.actionLinks.forEach(r=>{r.classList.remove(...this.enabledClasses),r.classList.add(...this.disabledClasses),r.setAttribute("href",r.getAttribute("data-href")),r.dataset.disabled=!0})}};Qr(ZD,"targets",["panel"])});var XD,The=Xe(()=>{No();Lx();XD=class extends pn{constructor(){super(...arguments);Qr(this,"fieldValue",[]);Qr(this,"options",{})}get keyInputDisabled(){return!this.options.editable||this.options.disable_editing_keys}get valueInputDisabled(){return!this.options.editable}connect(){this.setOptions();try{let r=JSON.parse(this.inputTarget.value);Object.keys(r).forEach(e=>this.fieldValue.push([e,r[e]]))}catch(r){this.fieldValue=[]}this.updateKeyValueComponent()}addRow(){this.options.disable_adding_rows||!this.options.editable||(this.fieldValue.push(["",""]),this.updateKeyValueComponent(),this.focusLastRow())}deleteRow(r){if(this.options.disable_deleting_rows||!this.options.editable)return;let{index:e}=r.params;this.fieldValue.splice(e,1),this.updateTextareaInput(),this.updateKeyValueComponent()}focusLastRow(){return this.rowsTarget.querySelector(".flex.key-value-row:last-child .key-value-input-key").focus()}valueFieldUpdated(r){let{value:e}=r.target,{index:t}=r.target.dataset;this.fieldValue[t][1]=e,this.updateTextareaInput()}keyFieldUpdated(r){let{value:e}=r.target,{index:t}=r.target.dataset;this.fieldValue[t][0]=e,this.updateTextareaInput()}updateTextareaInput(){if(!this.hasInputTarget)return;let r={};this.fieldValue&&this.fieldValue.length>0&&(r=Object.assign(...this.fieldValue.map(([e,t])=>({[e]:t})))),this.inputTarget.innerText=JSON.stringify(r),this.inputTarget.dispatchEvent(new Event("input"))}updateKeyValueComponent(){let r="",e=0;this.fieldValue.forEach(t=>{let[n,i]=t;r+=this.interpolatedRow(n,i,e),e++}),this.rowsTarget.innerHTML=r,window.initTippy()}interpolatedRow(r,e,t){let n=`<div class="flex key-value-row">
662
+ Maximum file size is #image_max_size#.`,importError:"Something went wrong when uploading the image #image_name#."};function xn(r){r=r||{},r.parent=this;var e=!0;if(r.autoDownloadFontAwesome===!1&&(e=!1),r.autoDownloadFontAwesome!==!0)for(var t=document.styleSheets,n=0;n<t.length;n++)!t[n].href||t[n].href.indexOf("//maxcdn.bootstrapcdn.com/font-awesome/")>-1&&(e=!1);if(e){var i=document.createElement("link");i.rel="stylesheet",i.href="https://maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css",document.getElementsByTagName("head")[0].appendChild(i)}if(r.element)this.element=r.element;else if(r.element===null){console.log("EasyMDE: Error. No element was found.");return}if(r.toolbar===void 0){r.toolbar=[];for(var s in d0)Object.prototype.hasOwnProperty.call(d0,s)&&(s.indexOf("separator-")!=-1&&r.toolbar.push("|"),(d0[s].default===!0||r.showIcons&&r.showIcons.constructor===Array&&r.showIcons.indexOf(s)!=-1)&&r.toolbar.push(s))}if(Object.prototype.hasOwnProperty.call(r,"previewClass")||(r.previewClass="editor-preview"),Object.prototype.hasOwnProperty.call(r,"status")||(r.status=["autosave","lines","words","cursor"],r.uploadImage&&r.status.unshift("upload-image")),r.previewRender||(r.previewRender=function(h){return this.parent.markdown(h)}),r.parsingConfig=Tg({highlightFormatting:!0},r.parsingConfig||{}),r.insertTexts=Tg({},lrt,r.insertTexts||{}),r.promptTexts=Tg({},urt,r.promptTexts||{}),r.blockStyles=Tg({},frt,r.blockStyles||{}),r.autosave!=null&&(r.autosave.timeFormat=Tg({},crt,r.autosave.timeFormat||{})),r.iconClassMap=Tg({},_s,r.iconClassMap||{}),r.shortcuts=Tg({},ert,r.shortcuts||{}),r.maxHeight=r.maxHeight||void 0,r.direction=r.direction||"ltr",typeof r.maxHeight<"u"?r.minHeight=r.maxHeight:r.minHeight=r.minHeight||"300px",r.errorCallback=r.errorCallback||function(h){alert(h)},r.uploadImage=r.uploadImage||!1,r.imageMaxSize=r.imageMaxSize||2097152,r.imageAccept=r.imageAccept||"image/png, image/jpeg, image/gif, image/avif",r.imageTexts=Tg({},hrt,r.imageTexts||{}),r.errorMessages=Tg({},drt,r.errorMessages||{}),r.imagePathAbsolute=r.imagePathAbsolute||!1,r.imageCSRFName=r.imageCSRFName||"csrfmiddlewaretoken",r.imageCSRFHeader=r.imageCSRFHeader||!1,r.autosave!=null&&r.autosave.unique_id!=null&&r.autosave.unique_id!=""&&(r.autosave.uniqueId=r.autosave.unique_id),r.overlayMode&&r.overlayMode.combine===void 0&&(r.overlayMode.combine=!0),this.options=r,this.render(),r.initialValue&&(!this.options.autosave||this.options.autosave.foundSavedValue!==!0)&&this.value(r.initialValue),r.uploadImage){var l=this;this.codemirror.on("dragenter",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbOnDragEnter),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("dragend",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbInit),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("dragleave",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbInit),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("dragover",function(h,b){l.updateStatusBar("upload-image",l.options.imageTexts.sbOnDragEnter),b.stopPropagation(),b.preventDefault()}),this.codemirror.on("drop",function(h,b){b.stopPropagation(),b.preventDefault(),r.imageUploadFunction?l.uploadImagesUsingCustomFunction(r.imageUploadFunction,b.dataTransfer.files):l.uploadImages(b.dataTransfer.files)}),this.codemirror.on("paste",function(h,b){r.imageUploadFunction?l.uploadImagesUsingCustomFunction(r.imageUploadFunction,b.clipboardData.files):l.uploadImages(b.clipboardData.files)})}}xn.prototype.uploadImages=function(r,e,t){if(r.length!==0){for(var n=[],i=0;i<r.length;i++)n.push(r[i].name),this.uploadImage(r[i],e,t);this.updateStatusBar("upload-image",this.options.imageTexts.sbOnDrop.replace("#images_names#",n.join(", ")))}};xn.prototype.uploadImagesUsingCustomFunction=function(r,e){if(e.length!==0){for(var t=[],n=0;n<e.length;n++)t.push(e[n].name),this.uploadImageUsingCustomFunction(r,e[n]);this.updateStatusBar("upload-image",this.options.imageTexts.sbOnDrop.replace("#images_names#",t.join(", ")))}};xn.prototype.updateStatusBar=function(r,e){if(!!this.gui.statusbar){var t=this.gui.statusbar.getElementsByClassName(r);t.length===1?this.gui.statusbar.getElementsByClassName(r)[0].textContent=e:t.length===0?console.log("EasyMDE: status bar item "+r+" was not found."):console.log("EasyMDE: Several status bar items named "+r+" was found.")}};xn.prototype.markdown=function(r){if(TB){var e;if(this.options&&this.options.renderingConfig&&this.options.renderingConfig.markedOptions?e=this.options.renderingConfig.markedOptions:e={},this.options&&this.options.renderingConfig&&this.options.renderingConfig.singleLineBreaks===!1?e.breaks=!1:e.breaks=!0,this.options&&this.options.renderingConfig&&this.options.renderingConfig.codeSyntaxHighlighting===!0){var t=this.options.renderingConfig.hljs||window.hljs;t&&(e.highlight=function(i,s){return s&&t.getLanguage(s)?t.highlight(s,i).value:t.highlightAuto(i).value})}TB.setOptions(e);var n=TB.parse(r);return this.options.renderingConfig&&typeof this.options.renderingConfig.sanitizerFunction=="function"&&(n=this.options.renderingConfig.sanitizerFunction.call(this,n)),n=rrt(n),n=nrt(n),n}};xn.prototype.render=function(r){if(r||(r=this.element||document.getElementsByTagName("textarea")[0]),this._rendered&&this._rendered===r)return;this.element=r;var e=this.options,t=this,n={};for(var i in e.shortcuts)e.shortcuts[i]!==null&&QS[i]!==null&&function(X){n[dhe(e.shortcuts[X])]=function(){var te=QS[X];typeof te=="function"?te(t):typeof te=="string"&&window.open(te,"_blank")}}(i);n.Enter="newlineAndIndentContinueMarkdownList",n.Tab="tabAndIndentMarkdownList",n["Shift-Tab"]="shiftTabAndUnindentMarkdownList",n.Esc=function(X){X.getOption("fullScreen")&&p0(t)},this.documentOnKeyDown=function(X){X=X||window.event,X.keyCode==27&&t.codemirror.getOption("fullScreen")&&p0(t)},document.addEventListener("keydown",this.documentOnKeyDown,!1);var s,l;e.overlayMode?(Qx.defineMode("overlay-mode",function(X){return Qx.overlayMode(Qx.getMode(X,e.spellChecker!==!1?"spell-checker":"gfm"),e.overlayMode.mode,e.overlayMode.combine)}),s="overlay-mode",l=e.parsingConfig,l.gitHubSpice=!1):(s=e.parsingConfig,s.name="gfm",s.gitHubSpice=!1),e.spellChecker!==!1&&(s="spell-checker",l=e.parsingConfig,l.name="gfm",l.gitHubSpice=!1,typeof e.spellChecker=="function"?e.spellChecker({codeMirrorInstance:Qx}):Jtt({codeMirrorInstance:Qx}));function h(X,te,ne){return{addNew:!1}}if(this.codemirror=Qx.fromTextArea(r,{mode:s,backdrop:l,theme:e.theme!=null?e.theme:"easymde",tabSize:e.tabSize!=null?e.tabSize:2,indentUnit:e.tabSize!=null?e.tabSize:2,indentWithTabs:e.indentWithTabs!==!1,lineNumbers:e.lineNumbers===!0,autofocus:e.autofocus===!0,extraKeys:n,direction:e.direction,lineWrapping:e.lineWrapping!==!1,allowDropFileTypes:["text/plain"],placeholder:e.placeholder||r.getAttribute("placeholder")||"",styleSelectedText:e.styleSelectedText!=null?e.styleSelectedText:!EB(),scrollbarStyle:e.scrollbarStyle!=null?e.scrollbarStyle:"native",configureMouse:h,inputStyle:e.inputStyle!=null?e.inputStyle:EB()?"contenteditable":"textarea",spellcheck:e.nativeSpellcheck!=null?e.nativeSpellcheck:!0,autoRefresh:e.autoRefresh!=null?e.autoRefresh:!1}),this.codemirror.getScrollerElement().style.minHeight=e.minHeight,typeof e.maxHeight<"u"&&(this.codemirror.getScrollerElement().style.height=e.maxHeight),e.forceSync===!0){var b=this.codemirror;b.on("change",function(){b.save()})}this.gui={};var k=document.createElement("div");k.classList.add("EasyMDEContainer"),k.setAttribute("role","application");var E=this.codemirror.getWrapperElement();E.parentNode.insertBefore(k,E),k.appendChild(E),e.toolbar!==!1&&(this.gui.toolbar=this.createToolbar()),e.status!==!1&&(this.gui.statusbar=this.createStatusbar()),e.autosave!=null&&e.autosave.enabled===!0&&(this.autosave(),this.codemirror.on("change",function(){clearTimeout(t._autosave_timeout),t._autosave_timeout=setTimeout(function(){t.autosave()},t.options.autosave.submit_delay||t.options.autosave.delay||1e3)}));function L(X,te){var ne,de=window.getComputedStyle(document.querySelector(".CodeMirror-sizer")).width.replace("px","");return X<de?ne=te+"px":ne=te/X*100+"%",ne}var q=this;function B(X,te){X.setAttribute("data-img-src",te.url),X.setAttribute("style","--bg-image:url("+te.url+");--width:"+te.naturalWidth+"px;--height:"+L(te.naturalWidth,te.naturalHeight)),q.codemirror.setSize()}function j(){!e.previewImagesInEditor||k.querySelectorAll(".cm-image-marker").forEach(function(X){var te=X.parentElement;if(!!te.innerText.match(/^!\[.*?\]\(.*\)/g)&&!te.hasAttribute("data-img-src")){var ne=te.innerText.match("\\((.*)\\)");if(window.EMDEimagesCache||(window.EMDEimagesCache={}),ne&&ne.length>=2){var de=ne[1];if(e.imagesPreviewHandler){var _=e.imagesPreviewHandler(ne[1]);typeof _=="string"&&(de=_)}if(window.EMDEimagesCache[de])B(te,window.EMDEimagesCache[de]);else{var ye=document.createElement("img");ye.onload=function(){window.EMDEimagesCache[de]={naturalWidth:ye.naturalWidth,naturalHeight:ye.naturalHeight,url:de},B(te,window.EMDEimagesCache[de])},ye.src=de}}}})}this.codemirror.on("update",function(){j()}),this.gui.sideBySide=this.createSideBySide(),this._rendered=this.element,(e.autofocus===!0||r.autofocus)&&this.codemirror.focus();var U=this.codemirror;setTimeout(function(){U.refresh()}.bind(U),0)};xn.prototype.cleanup=function(){document.removeEventListener("keydown",this.documentOnKeyDown)};function yhe(){if(typeof localStorage=="object")try{localStorage.setItem("smde_localStorage",1),localStorage.removeItem("smde_localStorage")}catch{return!1}else return!1;return!0}xn.prototype.autosave=function(){if(yhe()){var r=this;if(this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to use the autosave feature");return}this.options.autosave.binded!==!0&&(r.element.form!=null&&r.element.form!=null&&r.element.form.addEventListener("submit",function(){clearTimeout(r.autosaveTimeoutId),r.autosaveTimeoutId=void 0,localStorage.removeItem("smde_"+r.options.autosave.uniqueId)}),this.options.autosave.binded=!0),this.options.autosave.loaded!==!0&&(typeof localStorage.getItem("smde_"+this.options.autosave.uniqueId)=="string"&&localStorage.getItem("smde_"+this.options.autosave.uniqueId)!=""&&(this.codemirror.setValue(localStorage.getItem("smde_"+this.options.autosave.uniqueId)),this.options.autosave.foundSavedValue=!0),this.options.autosave.loaded=!0);var e=r.value();e!==""?localStorage.setItem("smde_"+this.options.autosave.uniqueId,e):localStorage.removeItem("smde_"+this.options.autosave.uniqueId);var t=document.getElementById("autosaved");if(t!=null&&t!=null&&t!=""){var n=new Date,i=new Intl.DateTimeFormat([this.options.autosave.timeFormat.locale,"en-US"],this.options.autosave.timeFormat.format).format(n),s=this.options.autosave.text==null?"Autosaved: ":this.options.autosave.text;t.innerHTML=s+i}}else console.log("EasyMDE: localStorage not available, cannot autosave")};xn.prototype.clearAutosavedValue=function(){if(yhe()){if(this.options.autosave==null||this.options.autosave.uniqueId==null||this.options.autosave.uniqueId==""){console.log("EasyMDE: You must set a uniqueId to clear the autosave value");return}localStorage.removeItem("smde_"+this.options.autosave.uniqueId)}else console.log("EasyMDE: localStorage not available, cannot autosave")};xn.prototype.openBrowseFileWindow=function(r,e){var t=this,n=this.gui.toolbar.getElementsByClassName("imageInput")[0];n.click();function i(s){t.options.imageUploadFunction?t.uploadImagesUsingCustomFunction(t.options.imageUploadFunction,s.target.files):t.uploadImages(s.target.files,r,e),n.removeEventListener("change",i)}n.addEventListener("change",i)};xn.prototype.uploadImage=function(r,e,t){var n=this;e=e||function(k){mhe(n,k)};function i(b){n.updateStatusBar("upload-image",b),setTimeout(function(){n.updateStatusBar("upload-image",n.options.imageTexts.sbInit)},1e4),t&&typeof t=="function"&&t(b),n.options.errorCallback(b)}function s(b){var k=n.options.imageTexts.sizeUnits.split(",");return b.replace("#image_name#",r.name).replace("#image_size#",AD(r.size,k)).replace("#image_max_size#",AD(n.options.imageMaxSize,k))}if(r.size>this.options.imageMaxSize){i(s(this.options.errorMessages.fileTooLarge));return}var l=new FormData;l.append("image",r),n.options.imageCSRFToken&&!n.options.imageCSRFHeader&&l.append(n.options.imageCSRFName,n.options.imageCSRFToken);var h=new XMLHttpRequest;h.upload.onprogress=function(b){if(b.lengthComputable){var k=""+Math.round(b.loaded*100/b.total);n.updateStatusBar("upload-image",n.options.imageTexts.sbProgress.replace("#file_name#",r.name).replace("#progress#",k))}},h.open("POST",this.options.imageUploadEndpoint),n.options.imageCSRFToken&&n.options.imageCSRFHeader&&h.setRequestHeader(n.options.imageCSRFName,n.options.imageCSRFToken),h.onload=function(){try{var b=JSON.parse(this.responseText)}catch{console.error("EasyMDE: The server did not return a valid json."),i(s(n.options.errorMessages.importError));return}this.status===200&&b&&!b.error&&b.data&&b.data.filePath?e((n.options.imagePathAbsolute?"":window.location.origin+"/")+b.data.filePath):b.error&&b.error in n.options.errorMessages?i(s(n.options.errorMessages[b.error])):b.error?i(s(b.error)):(console.error("EasyMDE: Received an unexpected response after uploading the image."+this.status+" ("+this.statusText+")"),i(s(n.options.errorMessages.importError)))},h.onerror=function(b){console.error("EasyMDE: An unexpected error occurred when trying to upload the image."+b.target.status+" ("+b.target.statusText+")"),i(n.options.errorMessages.importError)},h.send(l)};xn.prototype.uploadImageUsingCustomFunction=function(r,e){var t=this;function n(l){mhe(t,l)}function i(l){var h=s(l);t.updateStatusBar("upload-image",h),setTimeout(function(){t.updateStatusBar("upload-image",t.options.imageTexts.sbInit)},1e4),t.options.errorCallback(h)}function s(l){var h=t.options.imageTexts.sizeUnits.split(",");return l.replace("#image_name#",e.name).replace("#image_size#",AD(e.size,h)).replace("#image_max_size#",AD(t.options.imageMaxSize,h))}r.apply(this,[e,n,i])};xn.prototype.setPreviewMaxHeight=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.nextSibling,n=parseInt(window.getComputedStyle(e).paddingTop),i=parseInt(window.getComputedStyle(e).borderTopWidth),s=parseInt(this.options.maxHeight),l=s+n*2+i*2,h=l.toString()+"px";t.style.height=h};xn.prototype.createSideBySide=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.nextSibling;if(!t||!t.classList.contains("editor-preview-side")){if(t=document.createElement("div"),t.className="editor-preview-side",this.options.previewClass)if(Array.isArray(this.options.previewClass))for(var n=0;n<this.options.previewClass.length;n++)t.classList.add(this.options.previewClass[n]);else typeof this.options.previewClass=="string"&&t.classList.add(this.options.previewClass);e.parentNode.insertBefore(t,e.nextSibling)}if(typeof this.options.maxHeight<"u"&&this.setPreviewMaxHeight(),this.options.syncSideBySidePreviewScroll===!1)return t;var i=!1,s=!1;return r.on("scroll",function(l){if(i){i=!1;return}s=!0;var h=l.getScrollInfo().height-l.getScrollInfo().clientHeight,b=parseFloat(l.getScrollInfo().top)/h,k=(t.scrollHeight-t.clientHeight)*b;t.scrollTop=k}),t.onscroll=function(){if(s){s=!1;return}i=!0;var l=t.scrollHeight-t.clientHeight,h=parseFloat(t.scrollTop)/l,b=(r.getScrollInfo().height-r.getScrollInfo().clientHeight)*h;r.scrollTo(0,b)},t};xn.prototype.createToolbar=function(r){if(r=r||this.options.toolbar,!(!r||r.length===0)){var e;for(e=0;e<r.length;e++)d0[r[e]]!=null&&(r[e]=d0[r[e]]);var t=document.createElement("div");t.className="editor-toolbar",t.setAttribute("role","toolbar");var n=this,i={};for(n.toolbar=r,e=0;e<r.length;e++)if(!(r[e].name=="guide"&&n.options.toolbarGuideIcon===!1)&&!(n.options.hideIcons&&n.options.hideIcons.indexOf(r[e].name)!=-1)&&!((r[e].name=="fullscreen"||r[e].name=="side-by-side")&&EB())){if(r[e]==="|"){for(var s=!1,l=e+1;l<r.length;l++)r[l]!=="|"&&(!n.options.hideIcons||n.options.hideIcons.indexOf(r[l].name)==-1)&&(s=!0);if(!s)continue}(function(k){var E;if(k==="|"?E=ort():k.children?E=irt(k,n.options.toolbarTips,n.options.shortcuts,n):E=ED(k,!0,n.options.toolbarTips,n.options.shortcuts,"button",n),i[k.name||k]=E,t.appendChild(E),k.name==="upload-image"){var L=document.createElement("input");L.className="imageInput",L.type="file",L.multiple=!0,L.name="image",L.accept=n.options.imageAccept,L.style.display="none",L.style.opacity=0,t.appendChild(L)}})(r[e])}n.toolbar_div=t,n.toolbarElements=i;var h=this.codemirror;h.on("cursorActivity",function(){var k=Bv(h);for(var E in i)(function(L){var q=i[L];k[L]?q.classList.add("active"):L!="fullscreen"&&L!="side-by-side"&&q.classList.remove("active")})(E)});var b=h.getWrapperElement();return b.parentNode.insertBefore(t,b),t}};xn.prototype.createStatusbar=function(r){r=r||this.options.status;var e=this.options,t=this.codemirror;if(!(!r||r.length===0)){var n=[],i,s,l,h;for(i=0;i<r.length;i++)if(s=void 0,l=void 0,h=void 0,typeof r[i]=="object")n.push({className:r[i].className,defaultValue:r[i].defaultValue,onUpdate:r[i].onUpdate,onActivity:r[i].onActivity});else{var b=r[i];b==="words"?(h=function(B){B.innerHTML=fhe(t.getValue())},s=function(B){B.innerHTML=fhe(t.getValue())}):b==="lines"?(h=function(B){B.innerHTML=t.lineCount()},s=function(B){B.innerHTML=t.lineCount()}):b==="cursor"?(h=function(B){B.innerHTML="1:1"},l=function(B){var j=t.getCursor(),U=j.line+1,X=j.ch+1;B.innerHTML=U+":"+X}):b==="autosave"?h=function(B){e.autosave!=null&&e.autosave.enabled===!0&&B.setAttribute("id","autosaved")}:b==="upload-image"&&(h=function(B){B.innerHTML=e.imageTexts.sbInit}),n.push({className:b,defaultValue:h,onUpdate:s,onActivity:l})}var k=document.createElement("div");for(k.className="editor-statusbar",i=0;i<n.length;i++){var E=n[i],L=document.createElement("span");L.className=E.className,typeof E.defaultValue=="function"&&E.defaultValue(L),typeof E.onUpdate=="function"&&this.codemirror.on("update",function(B,j){return function(){j.onUpdate(B)}}(L,E)),typeof E.onActivity=="function"&&this.codemirror.on("cursorActivity",function(B,j){return function(){j.onActivity(B)}}(L,E)),k.appendChild(L)}var q=this.codemirror.getWrapperElement();return q.parentNode.insertBefore(k,q.nextSibling),k}};xn.prototype.value=function(r){var e=this.codemirror;if(r===void 0)return e.getValue();if(e.getDoc().setValue(r),this.isPreviewActive()){var t=e.getWrapperElement(),n=t.lastChild,i=this.options.previewRender(r,n);i!==null&&(n.innerHTML=i)}return this};xn.toggleBold=DD;xn.toggleItalic=OD;xn.toggleStrikethrough=ID;xn.toggleBlockquote=LD;xn.toggleHeadingSmaller=ek;xn.toggleHeadingBigger=PD;xn.toggleHeading1=RD;xn.toggleHeading2=FD;xn.toggleHeading3=qD;xn.toggleHeading4=AB;xn.toggleHeading5=DB;xn.toggleHeading6=OB;xn.toggleCodeBlock=MD;xn.toggleUnorderedList=ND;xn.toggleOrderedList=zD;xn.cleanBlock=BD;xn.drawLink=jD;xn.drawImage=UD;xn.drawUploadedImage=IB;xn.drawTable=HD;xn.drawHorizontalRule=WD;xn.undo=VD;xn.redo=$D;xn.togglePreview=GD;xn.toggleSideBySide=e_;xn.toggleFullScreen=p0;xn.prototype.toggleBold=function(){DD(this)};xn.prototype.toggleItalic=function(){OD(this)};xn.prototype.toggleStrikethrough=function(){ID(this)};xn.prototype.toggleBlockquote=function(){LD(this)};xn.prototype.toggleHeadingSmaller=function(){ek(this)};xn.prototype.toggleHeadingBigger=function(){PD(this)};xn.prototype.toggleHeading1=function(){RD(this)};xn.prototype.toggleHeading2=function(){FD(this)};xn.prototype.toggleHeading3=function(){qD(this)};xn.prototype.toggleHeading4=function(){AB(this)};xn.prototype.toggleHeading5=function(){DB(this)};xn.prototype.toggleHeading6=function(){OB(this)};xn.prototype.toggleCodeBlock=function(){MD(this)};xn.prototype.toggleUnorderedList=function(){ND(this)};xn.prototype.toggleOrderedList=function(){zD(this)};xn.prototype.cleanBlock=function(){BD(this)};xn.prototype.drawLink=function(){jD(this)};xn.prototype.drawImage=function(){UD(this)};xn.prototype.drawUploadedImage=function(){IB(this)};xn.prototype.drawTable=function(){HD(this)};xn.prototype.drawHorizontalRule=function(){WD(this)};xn.prototype.undo=function(){VD(this)};xn.prototype.redo=function(){$D(this)};xn.prototype.togglePreview=function(){GD(this)};xn.prototype.toggleSideBySide=function(){e_(this)};xn.prototype.toggleFullScreen=function(){p0(this)};xn.prototype.isPreviewActive=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.lastChild;return t.classList.contains("editor-preview-active")};xn.prototype.isSideBySideActive=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.nextSibling;return t.classList.contains("editor-preview-active-side")};xn.prototype.isFullscreenActive=function(){var r=this.codemirror;return r.getOption("fullScreen")};xn.prototype.getState=function(){var r=this.codemirror;return Bv(r)};xn.prototype.toTextArea=function(){var r=this.codemirror,e=r.getWrapperElement(),t=e.parentNode;t&&(this.gui.toolbar&&t.removeChild(this.gui.toolbar),this.gui.statusbar&&t.removeChild(this.gui.statusbar),this.gui.sideBySide&&t.removeChild(this.gui.sideBySide)),t.parentNode.insertBefore(e,t),t.remove(),r.toTextArea(),this.autosaveTimeoutId&&(clearTimeout(this.autosaveTimeoutId),this.autosaveTimeoutId=void 0,this.clearAutosavedValue())};bhe.exports=xn});var _he,KD,whe=Xe(()=>{No();_he=ta(xhe()),KD=class extends pn{get view(){return this.elementTarget.dataset.view}get componentOptions(){try{return JSON.parse(this.elementTarget.dataset.componentOptions)}catch(r){return{}}}connect(){let r={element:this.elementTarget,spellChecker:this.componentOptions.spell_checker,autoRefresh:{delay:500}};this.view==="show"&&(r.toolbar=!1,r.status=!1);let e=new _he.default(r);this.view==="show"&&(e.codemirror.options.readOnly=!0)}};Qr(KD,"targets",["element"])});var YD,She=Xe(()=>{No();YD=class extends pn{showContent(r){this.contentTarget.classList.toggle("hidden"),r.target.classList.add("hidden")}};Qr(YD,"targets",["content"])});var tk,khe=Xe(()=>{No();tk=class extends pn{connect(){this.resourceName=this.element.dataset.resourceName}toggle(r){let e=!!r.target.checked;document.querySelectorAll(`[data-controller="item-selector"][data-resource-name="${this.resourceName}"] input[type=checkbox]`).forEach(t=>t.checked!==e&&t.click()),this.selectAllEnabled()&&(this.selectAllOverlay(e),e||this.resetUnselected())}selectRow(){let r=!0;this.itemCheckboxTargets.forEach(e=>r=r&&e.checked),this.checkboxTarget.checked=r,this.selectAllEnabled()&&(this.selectAllOverlay(r),this.resetUnselected())}selectAll(r){r.preventDefault(),this.selectedAllValue=!this.selectedAllValue,this.unselectedMessageTarget.classList.toggle("hidden"),this.selectedMessageTarget.classList.toggle("hidden")}resetUnselected(){this.selectedAllValue=!1,this.unselectedMessageTarget.classList.remove("hidden"),this.selectedMessageTarget.classList.add("hidden")}selectAllOverlay(r){r?this.selectAllOverlayTarget.classList.remove("hidden"):this.selectAllOverlayTarget.classList.add("hidden")}selectAllEnabled(){return this.pageCountValue>1&&this.selectedAllQueryValue!=="select_all_disabled"}};Qr(tk,"targets",["itemCheckbox","checkbox","selectAllOverlay","unselectedMessage","selectedMessage"]),Qr(tk,"values",{pageCount:Number,selectedAll:Boolean,selectedAllQuery:String})});var ZD,Che=Xe(()=>{No();ZD=class extends pn{constructor(){super(...arguments);Qr(this,"checkbox",{});Qr(this,"enabledClasses",["text-black"]);Qr(this,"disabledClasses",["text-gray-500"])}get actionsPanelPresent(){return this.actionsButtonElement!==null}get currentIds(){try{return JSON.parse(this.stateHolderElement.dataset.selectedResources)}catch(r){return[]}}get actionLinks(){return document.querySelectorAll('.js-actions-dropdown a[data-actions-picker-target="resourceAction"]')}set currentIds(r){this.stateHolderElement.dataset.selectedResources=JSON.stringify(r),this.actionsPanelPresent&&(r.length>0?this.enableResourceActions():this.disableResourceActions())}connect(){this.resourceName=this.element.dataset.resourceName,this.resourceId=this.element.dataset.resourceId,this.actionsButtonElement=document.querySelector(`[data-actions-dropdown-button="${this.resourceName}"]`),this.stateHolderElement=document.querySelector(`[data-selected-resources-name="${this.resourceName}"]`)}addToSelected(){let r=this.currentIds;r.push(this.resourceId),this.currentIds=r}removeFromSelected(){this.currentIds=this.currentIds.filter(r=>r.toString()!==this.resourceId)}toggle(r){this.checkbox=r.target,this.checkbox.checked?this.addToSelected():this.removeFromSelected()}enableResourceActions(){this.actionLinks.forEach(r=>{r.classList.add(...this.enabledClasses),r.classList.remove(...this.disabledClasses),r.setAttribute("data-href",r.getAttribute("href")),r.dataset.disabled=!1})}disableResourceActions(){this.actionLinks.forEach(r=>{r.classList.remove(...this.enabledClasses),r.classList.add(...this.disabledClasses),r.setAttribute("href",r.getAttribute("data-href")),r.dataset.disabled=!0})}};Qr(ZD,"targets",["panel"])});var XD,The=Xe(()=>{No();Lx();XD=class extends pn{constructor(){super(...arguments);Qr(this,"fieldValue",[]);Qr(this,"options",{})}get keyInputDisabled(){return!this.options.editable||this.options.disable_editing_keys}get valueInputDisabled(){return!this.options.editable}connect(){this.setOptions();try{let r=JSON.parse(this.inputTarget.value);Object.keys(r).forEach(e=>this.fieldValue.push([e,r[e]]))}catch(r){this.fieldValue=[]}this.updateKeyValueComponent()}addRow(){this.options.disable_adding_rows||!this.options.editable||(this.fieldValue.push(["",""]),this.updateKeyValueComponent(),this.focusLastRow())}deleteRow(r){if(this.options.disable_deleting_rows||!this.options.editable)return;let{index:e}=r.params;this.fieldValue.splice(e,1),this.updateTextareaInput(),this.updateKeyValueComponent()}focusLastRow(){return this.rowsTarget.querySelector(".flex.key-value-row:last-child .key-value-input-key").focus()}valueFieldUpdated(r){let{value:e}=r.target,{index:t}=r.target.dataset;this.fieldValue[t][1]=e,this.updateTextareaInput()}keyFieldUpdated(r){let{value:e}=r.target,{index:t}=r.target.dataset;this.fieldValue[t][0]=e,this.updateTextareaInput()}updateTextareaInput(){if(!this.hasInputTarget)return;let r={};this.fieldValue&&this.fieldValue.length>0&&(r=Object.assign(...this.fieldValue.map(([e,t])=>({[e]:t})))),this.inputTarget.innerText=JSON.stringify(r),this.inputTarget.dispatchEvent(new Event("input"))}updateKeyValueComponent(){let r="",e=0;this.fieldValue.forEach(t=>{let[n,i]=t;r+=this.interpolatedRow(n,i,e),e++}),this.rowsTarget.innerHTML=r,window.initTippy()}interpolatedRow(r,e,t){let n=`<div class="flex key-value-row">
663
663
  ${this.inputField("key",t,r,e)}
664
664
  ${this.inputField("value",t,r,e)}`;return this.options.editable&&(n+=`<a
665
665
  href="javascript:void(0);"