alchemy_cms 7.3.4 → 7.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +67 -1
- data/Gemfile +10 -3
- data/README.md +2 -2
- data/Rakefile +2 -0
- data/alchemy_cms.gemspec +1 -4
- data/app/assets/builds/alchemy/admin.css +9 -1
- data/app/assets/builds/alchemy/admin.css.map +1 -1
- data/app/assets/builds/alchemy/custom-properties.css +1 -1
- data/app/assets/builds/alchemy/custom-properties.css.map +1 -1
- data/app/assets/builds/alchemy/preview.min.js +1 -0
- data/app/assets/builds/alchemy/welcome.css +1 -1
- data/app/assets/builds/alchemy/welcome.css.map +1 -1
- data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -1
- data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map +1 -1
- data/app/assets/config/alchemy_manifest.js +0 -4
- data/app/assets/javascripts/alchemy/admin.js +8 -6
- data/app/assets/stylesheets/alchemy/admin/elements.scss +43 -7
- data/app/assets/stylesheets/alchemy/admin/forms.scss +4 -0
- data/app/assets/stylesheets/alchemy/admin/image_library.scss +40 -26
- data/app/assets/stylesheets/alchemy/admin/navigation.scss +9 -1
- data/app/assets/stylesheets/alchemy/admin/preview_window.scss +22 -17
- data/app/assets/stylesheets/alchemy/admin.scss +1 -1
- data/app/assets/stylesheets/alchemy/custom-properties.css +2 -1
- data/app/components/alchemy/ingredients/link_view.rb +7 -1
- data/app/components/alchemy/ingredients/picture_view.rb +5 -2
- data/app/components/alchemy/ingredients/text_view.rb +4 -1
- data/app/components/concerns/alchemy/ingredients/link_target.rb +18 -0
- data/app/controllers/alchemy/admin/base_controller.rb +34 -5
- data/app/controllers/alchemy/admin/elements_controller.rb +2 -2
- data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
- data/app/controllers/alchemy/admin/layoutpages_controller.rb +1 -0
- data/app/controllers/alchemy/admin/pages_controller.rb +6 -6
- data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
- data/app/controllers/alchemy/elements_controller.rb +3 -0
- data/app/helpers/alchemy/admin/form_helper.rb +1 -1
- data/app/helpers/alchemy/admin/navigation_helper.rb +22 -1
- data/app/javascript/alchemy_admin/components/action.js +2 -1
- data/app/javascript/alchemy_admin/components/dialog_link.js +3 -18
- data/app/javascript/alchemy_admin/components/element_editor.js +9 -0
- data/app/javascript/alchemy_admin/components/elements_window.js +34 -0
- data/app/javascript/alchemy_admin/components/elements_window_handle.js +65 -0
- data/app/javascript/alchemy_admin/components/icon.js +2 -2
- data/app/javascript/alchemy_admin/components/index.js +1 -0
- data/app/javascript/alchemy_admin/components/preview_window.js +5 -5
- data/app/javascript/alchemy_admin/components/uploader/file_upload.js +1 -1
- data/app/javascript/alchemy_admin/confirm_dialog.js +9 -11
- data/app/javascript/alchemy_admin/dialog.js +329 -0
- data/app/javascript/alchemy_admin/hotkeys.js +3 -2
- data/app/javascript/alchemy_admin/image_cropper.js +57 -40
- data/app/javascript/alchemy_admin/image_overlay.js +73 -0
- data/app/javascript/alchemy_admin/initializer.js +51 -2
- data/app/javascript/alchemy_admin/link_dialog.js +2 -1
- data/app/javascript/alchemy_admin/node_tree.js +3 -1
- data/app/javascript/alchemy_admin/page_sorter.js +1 -1
- data/app/javascript/alchemy_admin/picture_selector.js +2 -1
- data/app/javascript/alchemy_admin/shoelace_theme.js +2 -2
- data/app/javascript/alchemy_admin/templates/compiled.js +1 -0
- data/app/javascript/alchemy_admin.js +10 -6
- data/app/javascript/preview.js +117 -0
- data/app/models/alchemy/image_cropper_settings.rb +3 -4
- data/app/views/alchemy/_menubar.html.erb +1 -1
- data/app/views/alchemy/_preview_mode_code.html.erb +1 -1
- data/app/views/alchemy/admin/crop.html.erb +19 -16
- data/app/views/alchemy/admin/dashboard/info.html.erb +1 -1
- data/app/views/alchemy/admin/elements/_add_nested_element_form.html.erb +9 -8
- data/app/views/alchemy/admin/elements/_clipboard_button.html.erb +14 -0
- data/app/views/alchemy/admin/elements/_element.html.erb +2 -0
- data/app/views/alchemy/admin/elements/_form.html.erb +15 -13
- data/app/views/alchemy/admin/elements/create.turbo_stream.erb +34 -0
- data/app/views/alchemy/admin/elements/index.html.erb +3 -15
- data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +1 -1
- data/app/views/alchemy/admin/layoutpages/edit.html.erb +7 -5
- data/app/views/alchemy/admin/nodes/_form.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_current_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_form.html.erb +43 -40
- data/app/views/alchemy/admin/pages/_locked_page.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_page_layout_filter.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_sitemap.html.erb +1 -1
- data/app/views/alchemy/admin/pages/_table.html.erb +2 -2
- data/app/views/alchemy/admin/pages/edit.html.erb +1 -1
- data/app/views/alchemy/admin/pages/update.turbo_stream.erb +39 -0
- data/app/views/alchemy/admin/partials/_main_navigation_entry.html.erb +3 -4
- data/app/views/alchemy/admin/pictures/_picture_description_field.html.erb +7 -5
- data/app/views/alchemy/admin/pictures/index.html.erb +13 -9
- data/app/views/alchemy/admin/resources/_filter_bar.html.erb +1 -1
- data/app/views/layouts/alchemy/admin.html.erb +8 -4
- data/bun.lockb +0 -0
- data/bundles/tinymce.js +2 -0
- data/config/alchemy/config.yml +3 -3
- data/config/alchemy/modules.yml +7 -6
- data/config/importmap.rb +4 -0
- data/config/routes.rb +1 -1
- data/lib/alchemy/engine.rb +6 -0
- data/lib/alchemy/modules.rb +0 -27
- data/lib/alchemy/resource.rb +14 -4
- data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +10 -10
- data/lib/alchemy/tinymce.rb +2 -1
- data/lib/alchemy/upgrader/seven_point_four.rb +26 -0
- data/lib/alchemy/version.rb +1 -1
- data/lib/alchemy.rb +14 -0
- data/lib/alchemy_cms.rb +0 -2
- data/lib/generators/alchemy/ingredient/ingredient_generator.rb +5 -0
- data/lib/generators/alchemy/ingredient/templates/view.html.erb +1 -1
- data/lib/generators/alchemy/ingredient/templates/view_component.rb.tt +10 -0
- data/lib/generators/alchemy/install/install_generator.rb +0 -1
- data/lib/generators/alchemy/install/templates/elements.yml.tt +1 -1
- data/lib/tasks/alchemy/upgrade.rake +19 -20
- data/rollup.config.mjs +44 -1
- data/vendor/javascript/cropperjs.min.js +10 -0
- data/vendor/javascript/handlebars.min.js +29 -0
- data/vendor/javascript/jquery.min.js +2 -0
- data/vendor/javascript/select2.min.js +23 -0
- data/vendor/javascript/tinymce.min.js +1 -1
- metadata +40 -94
- data/app/assets/javascripts/alchemy/alchemy.dialog.js.coffee +0 -271
- data/app/assets/javascripts/alchemy/alchemy.image_overlay.coffee +0 -54
- data/app/assets/javascripts/alchemy/alchemy.preview.js.coffee +0 -97
- data/app/assets/javascripts/alchemy/preview.js +0 -1
- data/app/assets/javascripts/alchemy/templates/index.js +0 -2
- data/app/javascript/alchemy_admin/gui.js +0 -12
- data/app/views/alchemy/admin/elements/create.js.erb +0 -35
- data/app/views/alchemy/admin/pages/update.js.erb +0 -43
- data/lib/alchemy/upgrader/seven_point_zero.rb +0 -36
- data/vendor/assets/images/Jcrop.gif +0 -0
- data/vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js +0 -7
- data/vendor/assets/javascripts/jquery_plugins/select2.js +0 -3729
- data/vendor/assets/stylesheets/jquery.Jcrop.min.css +0 -2
- data/vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css +0 -1
- /data/app/{assets/javascripts/alchemy → javascript/alchemy_admin}/templates/node_folder.hbs +0 -0
- /data/app/{assets/javascripts/alchemy → javascript/alchemy_admin}/templates/page_folder.hbs +0 -0
- /data/app/{assets/javascripts/tinymce/icons/remixicons/icons.js → javascript/tinymce/icons/remixicons/index.js} +0 -0
- /data/app/{assets/javascripts/tinymce/plugins/alchemy_link/plugin.min.js → javascript/tinymce/plugins/alchemy_link/index.js} +0 -0
- /data/vendor/assets/{fonts → images}/remixicon.symbol.svg +0 -0
data/lib/alchemy/modules.rb
CHANGED
@@ -27,35 +27,8 @@ module Alchemy
|
|
27
27
|
def register_module(module_definition)
|
28
28
|
definition_hash = module_definition.deep_stringify_keys
|
29
29
|
|
30
|
-
### Validate controller(s) existence
|
31
|
-
if definition_hash["navigation"].is_a?(Hash)
|
32
|
-
defined_controllers = [definition_hash["navigation"]["controller"]]
|
33
|
-
|
34
|
-
if definition_hash["navigation"]["sub_navigation"].is_a?(Array)
|
35
|
-
defined_controllers.concat(definition_hash["navigation"]["sub_navigation"].map { |x| x["controller"] })
|
36
|
-
end
|
37
|
-
|
38
|
-
validate_controllers_existence(defined_controllers, definition_hash)
|
39
|
-
end
|
40
|
-
|
41
30
|
@@alchemy_modules |= [definition_hash]
|
42
31
|
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def validate_controllers_existence(controllers, definition_hash)
|
47
|
-
controllers.each do |controller_val|
|
48
|
-
next if controller_val.blank?
|
49
|
-
|
50
|
-
controller_name = "#{controller_val.camelize}Controller"
|
51
|
-
|
52
|
-
begin
|
53
|
-
controller_name.constantize
|
54
|
-
rescue NameError
|
55
|
-
raise "Error in AlchemyCMS module definition: '#{definition_hash["name"]}'. Could not find the matching controller class #{controller_name.sub(/^::/, "")} for the specified controller: '#{controller_val}'"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
32
|
end
|
60
33
|
|
61
34
|
# Get the module definition for given module name
|
data/lib/alchemy/resource.rb
CHANGED
@@ -188,11 +188,21 @@ module Alchemy
|
|
188
188
|
end
|
189
189
|
end
|
190
190
|
|
191
|
+
# Returns a sorted array of attributes.
|
192
|
+
#
|
193
|
+
# Attribute called "name" comes first.
|
194
|
+
# Attribute called "updated_at" comes last.
|
195
|
+
# Boolean type attributes come after non-boolean attributes but before "updated_at".
|
196
|
+
#
|
191
197
|
def sorted_attributes
|
192
|
-
@_sorted_attributes ||= attributes
|
193
|
-
|
194
|
-
|
195
|
-
|
198
|
+
@_sorted_attributes ||= attributes.sort_by! do |attr|
|
199
|
+
[
|
200
|
+
(attr[:name] == "name") ? 0 : 1,
|
201
|
+
(attr[:name] == "updated_at") ? 3 : 2,
|
202
|
+
(attr[:type] == :boolean) ? 2 : 1,
|
203
|
+
attr[:name]
|
204
|
+
]
|
205
|
+
end
|
196
206
|
end
|
197
207
|
|
198
208
|
def editable_attributes
|
@@ -562,8 +562,8 @@ RSpec.shared_examples_for "having picture thumbnails" do
|
|
562
562
|
context "size 200x50" do
|
563
563
|
let(:size) { "200x50" }
|
564
564
|
|
565
|
-
it "default box should be [0, 25, 200,
|
566
|
-
expect(subject[:default_box]).to eq([0, 25, 200,
|
565
|
+
it "default box should be [0, 25, 200, 50]" do
|
566
|
+
expect(subject[:default_box]).to eq([0, 25, 200, 50])
|
567
567
|
end
|
568
568
|
end
|
569
569
|
|
@@ -578,16 +578,16 @@ RSpec.shared_examples_for "having picture thumbnails" do
|
|
578
578
|
context "size 50x100" do
|
579
579
|
let(:size) { "50x100" }
|
580
580
|
|
581
|
-
it "the hash should be {x1: 75, y1: 0, x2:
|
582
|
-
expect(subject[:default_box]).to eq([75, 0,
|
581
|
+
it "the hash should be {x1: 75, y1: 0, x2: 50, y2: 100}" do
|
582
|
+
expect(subject[:default_box]).to eq([75, 0, 50, 100])
|
583
583
|
end
|
584
584
|
end
|
585
585
|
|
586
586
|
context "size 50x50" do
|
587
587
|
let(:size) { "50x50" }
|
588
588
|
|
589
|
-
it "the hash should be {x1: 50, y1: 0, x2:
|
590
|
-
expect(subject[:default_box]).to eq([50, 0,
|
589
|
+
it "the hash should be {x1: 50, y1: 0, x2: 100, y2: 100}" do
|
590
|
+
expect(subject[:default_box]).to eq([50, 0, 100, 100])
|
591
591
|
end
|
592
592
|
end
|
593
593
|
|
@@ -602,16 +602,16 @@ RSpec.shared_examples_for "having picture thumbnails" do
|
|
602
602
|
context "size 400x100" do
|
603
603
|
let(:size) { "400x100" }
|
604
604
|
|
605
|
-
it "the hash should be {x1: 0, y1: 25, x2: 200, y2:
|
606
|
-
expect(subject[:default_box]).to eq([0, 25, 200,
|
605
|
+
it "the hash should be {x1: 0, y1: 25, x2: 200, y2: 50}" do
|
606
|
+
expect(subject[:default_box]).to eq([0, 25, 200, 50])
|
607
607
|
end
|
608
608
|
end
|
609
609
|
|
610
610
|
context "size 200x200" do
|
611
611
|
let(:size) { "200x200" }
|
612
612
|
|
613
|
-
it "the hash should be {x1: 50, y1: 0, x2:
|
614
|
-
expect(subject[:default_box]).to eq([50, 0,
|
613
|
+
it "the hash should be {x1: 50, y1: 0, x2: 100, y2: 100}" do
|
614
|
+
expect(subject[:default_box]).to eq([50, 0, 100, 100])
|
615
615
|
end
|
616
616
|
end
|
617
617
|
end
|
data/lib/alchemy/tinymce.rb
CHANGED
@@ -5,6 +5,7 @@ module Alchemy
|
|
5
5
|
mattr_accessor :languages, :plugins
|
6
6
|
|
7
7
|
DEFAULT_PLUGINS = %w[
|
8
|
+
alchemy_link
|
8
9
|
anchor
|
9
10
|
charmap
|
10
11
|
code
|
@@ -14,7 +15,7 @@ module Alchemy
|
|
14
15
|
lists
|
15
16
|
]
|
16
17
|
|
17
|
-
@@plugins = DEFAULT_PLUGINS
|
18
|
+
@@plugins = DEFAULT_PLUGINS
|
18
19
|
@@init = {
|
19
20
|
skin: "alchemy",
|
20
21
|
content_css: "/assets/tinymce/skins/content/alchemy/content.min.css",
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require "thor"
|
5
|
+
|
6
|
+
module Alchemy
|
7
|
+
class Upgrader::SevenPointFour < Upgrader
|
8
|
+
include Thor::Base
|
9
|
+
include Thor::Actions
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def update_custom_css_config
|
13
|
+
if File.exist? "app/assets/config/manifest.js"
|
14
|
+
log "Removing alchemy/admin/custom.css from assets config file."
|
15
|
+
task.gsub_file "app/assets/config/manifest.js", %r{//= link alchemy/admin/custom.css\n}, ""
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def task
|
22
|
+
@_task || new
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/alchemy/version.rb
CHANGED
data/lib/alchemy.rb
CHANGED
@@ -98,6 +98,20 @@ module Alchemy
|
|
98
98
|
}])
|
99
99
|
end
|
100
100
|
|
101
|
+
# Additional stylesheets to be included in the Alchemy admin UI
|
102
|
+
#
|
103
|
+
# == Example
|
104
|
+
#
|
105
|
+
# # lib/alchemy/devise/engine.rb
|
106
|
+
# initializer "alchemy.devise.stylesheets", before: "alchemy.admin_stylesheets" do
|
107
|
+
# Alchemy.admin_stylesheets << "alchemy/devise/admin.css"
|
108
|
+
# end
|
109
|
+
#
|
110
|
+
# @return [Set<String>]
|
111
|
+
def self.admin_stylesheets
|
112
|
+
@_admin_stylesheets ||= Set.new(["alchemy/admin/custom.css"])
|
113
|
+
end
|
114
|
+
|
101
115
|
# Define page publish targets
|
102
116
|
#
|
103
117
|
# A publish target is a ActiveJob that gets performed
|
data/lib/alchemy_cms.rb
CHANGED
@@ -11,9 +11,7 @@ require "awesome_nested_set"
|
|
11
11
|
require "cancan"
|
12
12
|
require "dragonfly"
|
13
13
|
require "gutentag"
|
14
|
-
require "handlebars_assets"
|
15
14
|
require "importmap-rails"
|
16
|
-
require "jquery-rails"
|
17
15
|
require "kaminari"
|
18
16
|
require "non_stupid_digest_assets"
|
19
17
|
require "ransack"
|
@@ -14,6 +14,10 @@ module Alchemy
|
|
14
14
|
@ingredients_view_path = "app/views/alchemy/ingredients"
|
15
15
|
end
|
16
16
|
|
17
|
+
def create_view_component
|
18
|
+
template "view_component.rb.tt", "app/components/alchemy/ingredients/#{file_name}_view.rb"
|
19
|
+
end
|
20
|
+
|
17
21
|
def create_model
|
18
22
|
template "model.rb.tt", "app/models/alchemy/ingredients/#{file_name}.rb"
|
19
23
|
end
|
@@ -21,6 +25,7 @@ module Alchemy
|
|
21
25
|
def copy_templates
|
22
26
|
@ingredient_editor_local = "#{file_name}_editor"
|
23
27
|
@ingredient_view_local = "#{file_name}_view"
|
28
|
+
@ingredient_view_component_class = "#{@class_name}View"
|
24
29
|
template "view.html.erb", "#{@ingredients_view_path}/_#{file_name}_view.html.erb"
|
25
30
|
template "editor.html.erb", "#{@ingredients_view_path}/_#{file_name}_editor.html.erb"
|
26
31
|
end
|
@@ -1 +1 @@
|
|
1
|
-
<%%= <%= @ingredient_view_local
|
1
|
+
<%%= render Alchemy::Ingredients::<%= @ingredient_view_component_class %>.new(<%= @ingredient_view_local %>) %>
|
@@ -66,7 +66,6 @@ module Alchemy
|
|
66
66
|
def install_assets
|
67
67
|
copy_file "all.js", app_vendor_assets_path.join("javascripts", "alchemy", "admin", "all.js")
|
68
68
|
copy_file "custom.css", app_assets_path.join("stylesheets/alchemy/admin/custom.css")
|
69
|
-
append_to_file Rails.root.join("app/assets/config/manifest.js"), "//= link alchemy/admin/custom.css\n"
|
70
69
|
end
|
71
70
|
|
72
71
|
def copy_demo_views
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# == In this configuration, you set up Alchemy's element layouts.
|
2
2
|
#
|
3
|
-
# For further information please see http://guides.alchemy-cms.com/
|
3
|
+
# For further information please see http://guides.alchemy-cms.com/elements.html
|
4
4
|
|
5
5
|
<%- unless @options[:skip_demo_files] -%>
|
6
6
|
- name: article
|
@@ -7,8 +7,8 @@ namespace :alchemy do
|
|
7
7
|
desc "Upgrades your app to AlchemyCMS v#{Alchemy::VERSION}."
|
8
8
|
task upgrade: [
|
9
9
|
"alchemy:upgrade:prepare",
|
10
|
-
"alchemy:upgrade:7.
|
11
|
-
"alchemy:upgrade:7.
|
10
|
+
"alchemy:upgrade:7.3:run",
|
11
|
+
"alchemy:upgrade:7.4:run"
|
12
12
|
] do
|
13
13
|
Alchemy::Upgrader.display_todos
|
14
14
|
end
|
@@ -31,14 +31,6 @@ namespace :alchemy do
|
|
31
31
|
Alchemy::Upgrader.copy_new_config_file
|
32
32
|
end
|
33
33
|
|
34
|
-
desc "Upgrade Alchemy to v7.0"
|
35
|
-
task "7.0" => [
|
36
|
-
"alchemy:upgrade:prepare",
|
37
|
-
"alchemy:upgrade:7.0:run"
|
38
|
-
] do
|
39
|
-
Alchemy::Upgrader.display_todos
|
40
|
-
end
|
41
|
-
|
42
34
|
desc "Upgrade Alchemy to v7.3"
|
43
35
|
task "7.3" => [
|
44
36
|
"alchemy:upgrade:prepare",
|
@@ -47,16 +39,12 @@ namespace :alchemy do
|
|
47
39
|
Alchemy::Upgrader.display_todos
|
48
40
|
end
|
49
41
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
task remove_admin_entrypoint: [:environment] do
|
57
|
-
puts "removing npm_package..."
|
58
|
-
Alchemy::Upgrader::SevenPointZero.remove_admin_entrypoint
|
59
|
-
end
|
42
|
+
desc "Upgrade Alchemy to v7.4"
|
43
|
+
task "7.4" => [
|
44
|
+
"alchemy:upgrade:prepare",
|
45
|
+
"alchemy:upgrade:7.4:run"
|
46
|
+
] do
|
47
|
+
Alchemy::Upgrader.display_todos
|
60
48
|
end
|
61
49
|
|
62
50
|
namespace "7.3" do
|
@@ -77,5 +65,16 @@ namespace :alchemy do
|
|
77
65
|
Alchemy::Upgrader::SevenPointThree.generate_custom_css_entrypoint
|
78
66
|
end
|
79
67
|
end
|
68
|
+
|
69
|
+
namespace "7.4" do
|
70
|
+
task "run" => [
|
71
|
+
"alchemy:upgrade:7.4:update_custom_css_config"
|
72
|
+
]
|
73
|
+
|
74
|
+
desc "Update custom alchemy admin stylesheet config"
|
75
|
+
task update_custom_css_config: [:environment] do
|
76
|
+
Alchemy::Upgrader::SevenPointFour.update_custom_css_config
|
77
|
+
end
|
78
|
+
end
|
80
79
|
end
|
81
80
|
end
|
data/rollup.config.mjs
CHANGED
@@ -10,6 +10,14 @@ export default [
|
|
10
10
|
},
|
11
11
|
context: "window"
|
12
12
|
},
|
13
|
+
{
|
14
|
+
input: "node_modules/cropperjs/dist/cropper.esm.js",
|
15
|
+
output: {
|
16
|
+
file: "vendor/javascript/cropperjs.min.js"
|
17
|
+
},
|
18
|
+
plugins: [terser()],
|
19
|
+
context: "window"
|
20
|
+
},
|
13
21
|
{
|
14
22
|
input: "node_modules/flatpickr/dist/esm/index.js",
|
15
23
|
output: {
|
@@ -18,6 +26,20 @@ export default [
|
|
18
26
|
plugins: [resolve(), terser()],
|
19
27
|
context: "window"
|
20
28
|
},
|
29
|
+
{
|
30
|
+
input: "node_modules/handlebars/dist/handlebars.min.js",
|
31
|
+
output: {
|
32
|
+
file: "vendor/javascript/handlebars.min.js"
|
33
|
+
},
|
34
|
+
context: "window"
|
35
|
+
},
|
36
|
+
{
|
37
|
+
input: "node_modules/jquery/dist/jquery.min.js",
|
38
|
+
output: {
|
39
|
+
file: "vendor/javascript/jquery.min.js"
|
40
|
+
},
|
41
|
+
context: "window"
|
42
|
+
},
|
21
43
|
{
|
22
44
|
input: "node_modules/keymaster/keymaster.js",
|
23
45
|
output: {
|
@@ -33,6 +55,13 @@ export default [
|
|
33
55
|
},
|
34
56
|
plugins: [terser()]
|
35
57
|
},
|
58
|
+
{
|
59
|
+
input: "node_modules/select2/select2.min.js",
|
60
|
+
output: {
|
61
|
+
file: "vendor/javascript/select2.min.js"
|
62
|
+
},
|
63
|
+
context: "window"
|
64
|
+
},
|
36
65
|
{
|
37
66
|
input: "node_modules/@ungap/custom-elements/min.js",
|
38
67
|
output: {
|
@@ -60,6 +89,20 @@ export default [
|
|
60
89
|
name: "tinymce",
|
61
90
|
format: "esm"
|
62
91
|
},
|
63
|
-
plugins: [
|
92
|
+
plugins: [
|
93
|
+
resolve({
|
94
|
+
modulePaths: ["app/javascript"]
|
95
|
+
}),
|
96
|
+
commonjs(),
|
97
|
+
terser()
|
98
|
+
]
|
99
|
+
},
|
100
|
+
{
|
101
|
+
input: "app/javascript/preview.js",
|
102
|
+
output: {
|
103
|
+
file: "app/assets/builds/alchemy/preview.min.js"
|
104
|
+
},
|
105
|
+
context: "window",
|
106
|
+
plugins: [terser()]
|
64
107
|
}
|
65
108
|
]
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/*!
|
2
|
+
* Cropper.js v1.6.2
|
3
|
+
* https://fengyuanchen.github.io/cropperjs
|
4
|
+
*
|
5
|
+
* Copyright 2015-present Chen Fengyuan
|
6
|
+
* Released under the MIT license
|
7
|
+
*
|
8
|
+
* Date: 2024-04-21T07:43:05.335Z
|
9
|
+
*/
|
10
|
+
function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function e(e){for(var i=1;i<arguments.length;i++){var a=null!=arguments[i]?arguments[i]:{};i%2?t(Object(a),!0).forEach((function(t){o(e,t,a[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(a)):t(Object(a)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(a,t))}))}return e}function i(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var a=i.call(t,e||"default");if("object"!=typeof a)return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}function a(t){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},a(t)}function n(t,e){for(var a=0;a<e.length;a++){var n=e[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,i(n.key),n)}}function o(t,e,a){return(e=i(e))in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function r(t){return function(t){if(Array.isArray(t))return h(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return h(t,e);var i=Object.prototype.toString.call(t).slice(8,-1);"Object"===i&&t.constructor&&(i=t.constructor.name);if("Map"===i||"Set"===i)return Array.from(t);if("Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i))return h(t,e)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var i=0,a=new Array(e);i<e;i++)a[i]=t[i];return a}var s="undefined"!=typeof window&&void 0!==window.document,c=s?window:{},l=!(!s||!c.document.documentElement)&&"ontouchstart"in c.document.documentElement,d=!!s&&"PointerEvent"in c,p="cropper",m="all",u="crop",g="move",f="zoom",v="e",w="w",b="s",y="n",x="ne",M="nw",C="se",D="sw",B="".concat(p,"-crop"),k="".concat(p,"-disabled"),O="".concat(p,"-hidden"),T="".concat(p,"-hide"),E="".concat(p,"-invisible"),W="".concat(p,"-modal"),H="".concat(p,"-move"),N="".concat(p,"Action"),L="".concat(p,"Preview"),z="crop",Y="move",X="none",R="crop",S="cropend",j="cropmove",A="cropstart",P="dblclick",I=d?"pointerdown":l?"touchstart":"mousedown",U=d?"pointermove":l?"touchmove":"mousemove",q=d?"pointerup pointercancel":l?"touchend touchcancel":"mouseup",$="ready",Q="resize",K="wheel",Z="zoom",G="image/jpeg",V=/^e|w|s|n|se|sw|ne|nw|all|crop|move|zoom$/,F=/^data:/,J=/^data:image\/jpeg;base64,/,_=/^img|canvas$/i,tt={viewMode:0,dragMode:z,initialAspectRatio:NaN,aspectRatio:NaN,data:null,preview:"",responsive:!0,restore:!0,checkCrossOrigin:!0,checkOrientation:!0,modal:!0,guides:!0,center:!0,highlight:!0,background:!0,autoCrop:!0,autoCropArea:.8,movable:!0,rotatable:!0,scalable:!0,zoomable:!0,zoomOnTouch:!0,zoomOnWheel:!0,wheelZoomRatio:.1,cropBoxMovable:!0,cropBoxResizable:!0,toggleDragModeOnDblclick:!0,minCanvasWidth:0,minCanvasHeight:0,minCropBoxWidth:0,minCropBoxHeight:0,minContainerWidth:200,minContainerHeight:100,ready:null,cropstart:null,cropmove:null,cropend:null,crop:null,zoom:null},et=Number.isNaN||c.isNaN;function it(t){return"number"==typeof t&&!et(t)}var at=function(t){return t>0&&t<1/0};function nt(t){return void 0===t}function ot(t){return"object"===a(t)&&null!==t}var rt=Object.prototype.hasOwnProperty;function ht(t){if(!ot(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&rt.call(i,"isPrototypeOf")}catch(t){return!1}}function st(t){return"function"==typeof t}var ct=Array.prototype.slice;function lt(t){return Array.from?Array.from(t):ct.call(t)}function dt(t,e){return t&&st(e)&&(Array.isArray(t)||it(t.length)?lt(t).forEach((function(i,a){e.call(t,i,a,t)})):ot(t)&&Object.keys(t).forEach((function(i){e.call(t,t[i],i,t)}))),t}var pt=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),a=1;a<e;a++)i[a-1]=arguments[a];return ot(t)&&i.length>0&&i.forEach((function(e){ot(e)&&Object.keys(e).forEach((function(i){t[i]=e[i]}))})),t},mt=/\.\d*(?:0|9){12}\d*$/;function ut(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e11;return mt.test(t)?Math.round(t*e)/e:t}var gt=/^width|height|left|top|marginLeft|marginTop$/;function ft(t,e){var i=t.style;dt(e,(function(t,e){gt.test(e)&&it(t)&&(t="".concat(t,"px")),i[e]=t}))}function vt(t,e){if(e)if(it(t.length))dt(t,(function(t){vt(t,e)}));else if(t.classList)t.classList.add(e);else{var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function wt(t,e){e&&(it(t.length)?dt(t,(function(t){wt(t,e)})):t.classList?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,"")))}function bt(t,e,i){e&&(it(t.length)?dt(t,(function(t){bt(t,e,i)})):i?vt(t,e):wt(t,e))}var yt=/([a-z\d])([A-Z])/g;function xt(t){return t.replace(yt,"$1-$2").toLowerCase()}function Mt(t,e){return ot(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(xt(e)))}function Ct(t,e,i){ot(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(xt(e)),i)}var Dt=/\s\s*/,Bt=function(){var t=!1;if(s){var e=!1,i=function(){},a=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(t){e=t}});c.addEventListener("test",i,a),c.removeEventListener("test",i,a)}return t}();function kt(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=i;e.trim().split(Dt).forEach((function(e){if(!Bt){var o=t.listeners;o&&o[e]&&o[e][i]&&(n=o[e][i],delete o[e][i],0===Object.keys(o[e]).length&&delete o[e],0===Object.keys(o).length&&delete t.listeners)}t.removeEventListener(e,n,a)}))}function Ot(t,e,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=i;e.trim().split(Dt).forEach((function(e){if(a.once&&!Bt){var o=t.listeners,r=void 0===o?{}:o;n=function(){delete r[e][i],t.removeEventListener(e,n,a);for(var o=arguments.length,h=new Array(o),s=0;s<o;s++)h[s]=arguments[s];i.apply(t,h)},r[e]||(r[e]={}),r[e][i]&&t.removeEventListener(e,r[e][i],a),r[e][i]=n,t.listeners=r}t.addEventListener(e,n,a)}))}function Tt(t,e,i){var a;return st(Event)&&st(CustomEvent)?a=new CustomEvent(e,{detail:i,bubbles:!0,cancelable:!0}):(a=document.createEvent("CustomEvent")).initCustomEvent(e,!0,!0,i),t.dispatchEvent(a)}function Et(t){var e=t.getBoundingClientRect();return{left:e.left+(window.pageXOffset-document.documentElement.clientLeft),top:e.top+(window.pageYOffset-document.documentElement.clientTop)}}var Wt=c.location,Ht=/^(\w+:)\/\/([^:/?#]*):?(\d*)/i;function Nt(t){var e=t.match(Ht);return null!==e&&(e[1]!==Wt.protocol||e[2]!==Wt.hostname||e[3]!==Wt.port)}function Lt(t){var e="timestamp=".concat((new Date).getTime());return t+(-1===t.indexOf("?")?"?":"&")+e}function zt(t){var e=t.rotate,i=t.scaleX,a=t.scaleY,n=t.translateX,o=t.translateY,r=[];it(n)&&0!==n&&r.push("translateX(".concat(n,"px)")),it(o)&&0!==o&&r.push("translateY(".concat(o,"px)")),it(e)&&0!==e&&r.push("rotate(".concat(e,"deg)")),it(i)&&1!==i&&r.push("scaleX(".concat(i,")")),it(a)&&1!==a&&r.push("scaleY(".concat(a,")"));var h=r.length?r.join(" "):"none";return{WebkitTransform:h,msTransform:h,transform:h}}function Yt(t,i){var a=t.pageX,n=t.pageY,o={endX:a,endY:n};return i?o:e({startX:a,startY:n},o)}function Xt(t){var e=t.aspectRatio,i=t.height,a=t.width,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"contain",o=at(a),r=at(i);if(o&&r){var h=i*e;"contain"===n&&h>a||"cover"===n&&h<a?i=a/e:a=i*e}else o?i=a/e:r&&(a=i*e);return{width:a,height:i}}var Rt=String.fromCharCode;var St=/^data:.*,/;function jt(t){var e,i=new DataView(t);try{var a,n,o;if(255===i.getUint8(0)&&216===i.getUint8(1))for(var r=i.byteLength,h=2;h+1<r;){if(255===i.getUint8(h)&&225===i.getUint8(h+1)){n=h;break}h+=1}if(n){var s=n+10;if("Exif"===function(t,e,i){var a="";i+=e;for(var n=e;n<i;n+=1)a+=Rt(t.getUint8(n));return a}(i,n+4,4)){var c=i.getUint16(s);if(((a=18761===c)||19789===c)&&42===i.getUint16(s+2,a)){var l=i.getUint32(s+4,a);l>=8&&(o=s+l)}}}if(o){var d,p,m=i.getUint16(o,a);for(p=0;p<m;p+=1)if(d=o+12*p+2,274===i.getUint16(d,a)){d+=8,e=i.getUint16(d,a),i.setUint16(d,1,a);break}}}catch(t){e=1}return e}var At={render:function(){this.initContainer(),this.initCanvas(),this.initCropBox(),this.renderCanvas(),this.cropped&&this.renderCropBox()},initContainer:function(){var t=this.element,e=this.options,i=this.container,a=this.cropper,n=Number(e.minContainerWidth),o=Number(e.minContainerHeight);vt(a,O),wt(t,O);var r={width:Math.max(i.offsetWidth,n>=0?n:200),height:Math.max(i.offsetHeight,o>=0?o:100)};this.containerData=r,ft(a,{width:r.width,height:r.height}),vt(t,O),wt(a,O)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,a=Math.abs(e.rotate)%180==90,n=a?e.naturalHeight:e.naturalWidth,o=a?e.naturalWidth:e.naturalHeight,r=n/o,h=t.width,s=t.height;t.height*r>t.width?3===i?h=t.height*r:s=t.width/r:3===i?s=t.width/r:h=t.height*r;var c={aspectRatio:r,naturalWidth:n,naturalHeight:o,width:h,height:s};this.canvasData=c,this.limited=1===i||2===i,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=pt({},c)},limitCanvas:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=i.viewMode,h=n.aspectRatio,s=this.cropped&&o;if(t){var c=Number(i.minCanvasWidth)||0,l=Number(i.minCanvasHeight)||0;r>1?(c=Math.max(c,a.width),l=Math.max(l,a.height),3===r&&(l*h>c?c=l*h:l=c/h)):r>0&&(c?c=Math.max(c,s?o.width:0):l?l=Math.max(l,s?o.height:0):s&&(c=o.width,(l=o.height)*h>c?c=l*h:l=c/h));var d=Xt({aspectRatio:h,width:c,height:l});c=d.width,l=d.height,n.minWidth=c,n.minHeight=l,n.maxWidth=1/0,n.maxHeight=1/0}if(e)if(r>(s?0:1)){var p=a.width-n.width,m=a.height-n.height;n.minLeft=Math.min(0,p),n.minTop=Math.min(0,m),n.maxLeft=Math.max(0,p),n.maxTop=Math.max(0,m),s&&this.limited&&(n.minLeft=Math.min(o.left,o.left+(o.width-n.width)),n.minTop=Math.min(o.top,o.top+(o.height-n.height)),n.maxLeft=o.left,n.maxTop=o.top,2===r&&(n.width>=a.width&&(n.minLeft=Math.min(0,p),n.maxLeft=Math.max(0,p)),n.height>=a.height&&(n.minTop=Math.min(0,m),n.maxTop=Math.max(0,m))))}else n.minLeft=-n.width,n.minTop=-n.height,n.maxLeft=a.width,n.maxTop=a.height},renderCanvas:function(t,e){var i=this.canvasData,a=this.imageData;if(e){var n=function(t){var e=t.width,i=t.height,a=t.degree;if(90==(a=Math.abs(a)%180))return{width:i,height:e};var n=a%90*Math.PI/180,o=Math.sin(n),r=Math.cos(n),h=e*r+i*o,s=e*o+i*r;return a>90?{width:s,height:h}:{width:h,height:s}}({width:a.naturalWidth*Math.abs(a.scaleX||1),height:a.naturalHeight*Math.abs(a.scaleY||1),degree:a.rotate||0}),o=n.width,r=n.height,h=i.width*(o/i.naturalWidth),s=i.height*(r/i.naturalHeight);i.left-=(h-i.width)/2,i.top-=(s-i.height)/2,i.width=h,i.height=s,i.aspectRatio=o/r,i.naturalWidth=o,i.naturalHeight=r,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.width<i.minWidth)&&(i.left=i.oldLeft),(i.height>i.maxHeight||i.height<i.minHeight)&&(i.top=i.oldTop),i.width=Math.min(Math.max(i.width,i.minWidth),i.maxWidth),i.height=Math.min(Math.max(i.height,i.minHeight),i.maxHeight),this.limitCanvas(!1,!0),i.left=Math.min(Math.max(i.left,i.minLeft),i.maxLeft),i.top=Math.min(Math.max(i.top,i.minTop),i.maxTop),i.oldLeft=i.left,i.oldTop=i.top,ft(this.canvas,pt({width:i.width,height:i.height},zt({translateX:i.left,translateY:i.top}))),this.renderImage(t),this.cropped&&this.limited&&this.limitCropBox(!0,!0)},renderImage:function(t){var e=this.canvasData,i=this.imageData,a=i.naturalWidth*(e.width/e.naturalWidth),n=i.naturalHeight*(e.height/e.naturalHeight);pt(i,{width:a,height:n,left:(e.width-a)/2,top:(e.height-n)/2}),ft(this.image,pt({width:i.width,height:i.height},zt(pt({translateX:i.left,translateY:i.top},i)))),t&&this.output()},initCropBox:function(){var t=this.options,e=this.canvasData,i=t.aspectRatio||t.initialAspectRatio,a=Number(t.autoCropArea)||.8,n={width:e.width,height:e.height};i&&(e.height*i>e.width?n.height=n.width/i:n.width=n.height*i),this.cropBoxData=n,this.limitCropBox(!0,!0),n.width=Math.min(Math.max(n.width,n.minWidth),n.maxWidth),n.height=Math.min(Math.max(n.height,n.minHeight),n.maxHeight),n.width=Math.max(n.minWidth,n.width*a),n.height=Math.max(n.minHeight,n.height*a),n.left=e.left+(e.width-n.width)/2,n.top=e.top+(e.height-n.height)/2,n.oldLeft=n.left,n.oldTop=n.top,this.initialCropBoxData=pt({},n)},limitCropBox:function(t,e){var i=this.options,a=this.containerData,n=this.canvasData,o=this.cropBoxData,r=this.limited,h=i.aspectRatio;if(t){var s=Number(i.minCropBoxWidth)||0,c=Number(i.minCropBoxHeight)||0,l=r?Math.min(a.width,n.width,n.width+n.left,a.width-n.left):a.width,d=r?Math.min(a.height,n.height,n.height+n.top,a.height-n.top):a.height;s=Math.min(s,a.width),c=Math.min(c,a.height),h&&(s&&c?c*h>s?c=s/h:s=c*h:s?c=s/h:c&&(s=c*h),d*h>l?d=l/h:l=d*h),o.minWidth=Math.min(s,l),o.minHeight=Math.min(c,d),o.maxWidth=l,o.maxHeight=d}e&&(r?(o.minLeft=Math.max(0,n.left),o.minTop=Math.max(0,n.top),o.maxLeft=Math.min(a.width,n.left+n.width)-o.width,o.maxTop=Math.min(a.height,n.top+n.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=a.width-o.width,o.maxTop=a.height-o.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.width<i.minWidth)&&(i.left=i.oldLeft),(i.height>i.maxHeight||i.height<i.minHeight)&&(i.top=i.oldTop),i.width=Math.min(Math.max(i.width,i.minWidth),i.maxWidth),i.height=Math.min(Math.max(i.height,i.minHeight),i.maxHeight),this.limitCropBox(!1,!0),i.left=Math.min(Math.max(i.left,i.minLeft),i.maxLeft),i.top=Math.min(Math.max(i.top,i.minTop),i.maxTop),i.oldLeft=i.left,i.oldTop=i.top,t.movable&&t.cropBoxMovable&&Ct(this.face,N,i.width>=e.width&&i.height>=e.height?g:m),ft(this.cropBox,pt({width:i.width,height:i.height},zt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),Tt(this.element,R,this.getData())}},Pt={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,a=e?this.crossOriginUrl:this.url,n=t.alt||"The image to preview",o=document.createElement("img");if(e&&(o.crossOrigin=e),o.src=a,o.alt=n,this.viewBox.appendChild(o),this.viewBoxImage=o,i){var r=i;"string"==typeof i?r=t.ownerDocument.querySelectorAll(i):i.querySelector&&(r=[i]),this.previews=r,dt(r,(function(t){var i=document.createElement("img");Ct(t,L,{width:t.offsetWidth,height:t.offsetHeight,html:t.innerHTML}),e&&(i.crossOrigin=e),i.src=a,i.alt=n,i.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',t.innerHTML="",t.appendChild(i)}))}},resetPreview:function(){dt(this.previews,(function(t){var e=Mt(t,L);ft(t,{width:e.width,height:e.height}),t.innerHTML=e.html,function(t,e){if(ot(t[e]))try{delete t[e]}catch(i){t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch(i){t.dataset[e]=void 0}else t.removeAttribute("data-".concat(xt(e)))}(t,L)}))},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,a=i.width,n=i.height,o=t.width,r=t.height,h=i.left-e.left-t.left,s=i.top-e.top-t.top;this.cropped&&!this.disabled&&(ft(this.viewBoxImage,pt({width:o,height:r},zt(pt({translateX:-h,translateY:-s},t)))),dt(this.previews,(function(e){var i=Mt(e,L),c=i.width,l=i.height,d=c,p=l,m=1;a&&(p=n*(m=c/a)),n&&p>l&&(d=a*(m=l/n),p=l),ft(e,{width:d,height:p}),ft(e.getElementsByTagName("img")[0],pt({width:o*m,height:r*m},zt(pt({translateX:-h*m,translateY:-s*m},t))))})))}},It={bind:function(){var t=this.element,e=this.options,i=this.cropper;st(e.cropstart)&&Ot(t,A,e.cropstart),st(e.cropmove)&&Ot(t,j,e.cropmove),st(e.cropend)&&Ot(t,S,e.cropend),st(e.crop)&&Ot(t,R,e.crop),st(e.zoom)&&Ot(t,Z,e.zoom),Ot(i,I,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&Ot(i,K,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&Ot(i,P,this.onDblclick=this.dblclick.bind(this)),Ot(t.ownerDocument,U,this.onCropMove=this.cropMove.bind(this)),Ot(t.ownerDocument,q,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&Ot(window,Q,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;st(e.cropstart)&&kt(t,A,e.cropstart),st(e.cropmove)&&kt(t,j,e.cropmove),st(e.cropend)&&kt(t,S,e.cropend),st(e.crop)&&kt(t,R,e.crop),st(e.zoom)&&kt(t,Z,e.zoom),kt(i,I,this.onCropStart),e.zoomable&&e.zoomOnWheel&&kt(i,K,this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&kt(i,P,this.onDblclick),kt(t.ownerDocument,U,this.onCropMove),kt(t.ownerDocument,q,this.onCropEnd),e.responsive&&kt(window,Q,this.onResize)}},Ut={resize:function(){if(!this.disabled){var t,e,i=this.options,a=this.container,n=this.containerData,o=a.offsetWidth/n.width,r=a.offsetHeight/n.height,h=Math.abs(o-1)>Math.abs(r-1)?o:r;if(1!==h)i.restore&&(t=this.getCanvasData(),e=this.getCropBoxData()),this.render(),i.restore&&(this.setCanvasData(dt(t,(function(e,i){t[i]=e*h}))),this.setCropBoxData(dt(e,(function(t,i){e[i]=t*h}))))}},dblclick:function(){var t,e;this.disabled||this.options.dragMode===X||this.setDragMode((t=this.dragBox,e=B,(t.classList?t.classList.contains(e):t.className.indexOf(e)>-1)?Y:z))},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,a=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout((function(){e.wheeling=!1}),50),t.deltaY?a=t.deltaY>0?1:-1:t.wheelDelta?a=-t.wheelDelta/120:t.detail&&(a=t.detail>0?1:-1),this.zoom(-a*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||("mousedown"===t.type||"pointerdown"===t.type&&"mouse"===t.pointerType)&&(it(e)&&1!==e||it(i)&&0!==i||t.ctrlKey))){var a,n=this.options,o=this.pointers;t.changedTouches?dt(t.changedTouches,(function(t){o[t.identifier]=Yt(t)})):o[t.pointerId||0]=Yt(t),a=Object.keys(o).length>1&&n.zoomable&&n.zoomOnTouch?f:Mt(t.target,N),V.test(a)&&!1!==Tt(this.element,A,{originalEvent:t,action:a})&&(t.preventDefault(),this.action=a,this.cropping=!1,a===u&&(this.cropping=!0,vt(this.dragBox,W)))}},cropMove:function(t){var e=this.action;if(!this.disabled&&e){var i=this.pointers;t.preventDefault(),!1!==Tt(this.element,j,{originalEvent:t,action:e})&&(t.changedTouches?dt(t.changedTouches,(function(t){pt(i[t.identifier]||{},Yt(t,!0))})):pt(i[t.pointerId||0]||{},Yt(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?dt(t.changedTouches,(function(t){delete i[t.identifier]})):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,bt(this.dragBox,W,this.cropped&&this.options.modal)),Tt(this.element,S,{originalEvent:t,action:e}))}}},qt={change:function(t){var i,a=this.options,n=this.canvasData,o=this.containerData,r=this.cropBoxData,h=this.pointers,s=this.action,c=a.aspectRatio,l=r.left,d=r.top,p=r.width,B=r.height,k=l+p,T=d+B,E=0,W=0,H=o.width,N=o.height,L=!0;!c&&t.shiftKey&&(c=p&&B?p/B:1),this.limited&&(E=r.minLeft,W=r.minTop,H=E+Math.min(o.width,n.width,n.left+n.width),N=W+Math.min(o.height,n.height,n.top+n.height));var z=h[Object.keys(h)[0]],Y={x:z.endX-z.startX,y:z.endY-z.startY},X=function(t){switch(t){case v:k+Y.x>H&&(Y.x=H-k);break;case w:l+Y.x<E&&(Y.x=E-l);break;case y:d+Y.y<W&&(Y.y=W-d);break;case b:T+Y.y>N&&(Y.y=N-T)}};switch(s){case m:l+=Y.x,d+=Y.y;break;case v:if(Y.x>=0&&(k>=H||c&&(d<=W||T>=N))){L=!1;break}X(v),(p+=Y.x)<0&&(s=w,l-=p=-p),c&&(B=p/c,d+=(r.height-B)/2);break;case y:if(Y.y<=0&&(d<=W||c&&(l<=E||k>=H))){L=!1;break}X(y),B-=Y.y,d+=Y.y,B<0&&(s=b,d-=B=-B),c&&(p=B*c,l+=(r.width-p)/2);break;case w:if(Y.x<=0&&(l<=E||c&&(d<=W||T>=N))){L=!1;break}X(w),p-=Y.x,l+=Y.x,p<0&&(s=v,l-=p=-p),c&&(B=p/c,d+=(r.height-B)/2);break;case b:if(Y.y>=0&&(T>=N||c&&(l<=E||k>=H))){L=!1;break}X(b),(B+=Y.y)<0&&(s=y,d-=B=-B),c&&(p=B*c,l+=(r.width-p)/2);break;case x:if(c){if(Y.y<=0&&(d<=W||k>=H)){L=!1;break}X(y),B-=Y.y,d+=Y.y,p=B*c}else X(y),X(v),Y.x>=0?k<H?p+=Y.x:Y.y<=0&&d<=W&&(L=!1):p+=Y.x,Y.y<=0?d>W&&(B-=Y.y,d+=Y.y):(B-=Y.y,d+=Y.y);p<0&&B<0?(s=D,d-=B=-B,l-=p=-p):p<0?(s=M,l-=p=-p):B<0&&(s=C,d-=B=-B);break;case M:if(c){if(Y.y<=0&&(d<=W||l<=E)){L=!1;break}X(y),B-=Y.y,d+=Y.y,p=B*c,l+=r.width-p}else X(y),X(w),Y.x<=0?l>E?(p-=Y.x,l+=Y.x):Y.y<=0&&d<=W&&(L=!1):(p-=Y.x,l+=Y.x),Y.y<=0?d>W&&(B-=Y.y,d+=Y.y):(B-=Y.y,d+=Y.y);p<0&&B<0?(s=C,d-=B=-B,l-=p=-p):p<0?(s=x,l-=p=-p):B<0&&(s=D,d-=B=-B);break;case D:if(c){if(Y.x<=0&&(l<=E||T>=N)){L=!1;break}X(w),p-=Y.x,l+=Y.x,B=p/c}else X(b),X(w),Y.x<=0?l>E?(p-=Y.x,l+=Y.x):Y.y>=0&&T>=N&&(L=!1):(p-=Y.x,l+=Y.x),Y.y>=0?T<N&&(B+=Y.y):B+=Y.y;p<0&&B<0?(s=x,d-=B=-B,l-=p=-p):p<0?(s=C,l-=p=-p):B<0&&(s=M,d-=B=-B);break;case C:if(c){if(Y.x>=0&&(k>=H||T>=N)){L=!1;break}X(v),B=(p+=Y.x)/c}else X(b),X(v),Y.x>=0?k<H?p+=Y.x:Y.y>=0&&T>=N&&(L=!1):p+=Y.x,Y.y>=0?T<N&&(B+=Y.y):B+=Y.y;p<0&&B<0?(s=M,d-=B=-B,l-=p=-p):p<0?(s=D,l-=p=-p):B<0&&(s=x,d-=B=-B);break;case g:this.move(Y.x,Y.y),L=!1;break;case f:this.zoom(function(t){var i=e({},t),a=0;return dt(t,(function(t,e){delete i[e],dt(i,(function(e){var i=Math.abs(t.startX-e.startX),n=Math.abs(t.startY-e.startY),o=Math.abs(t.endX-e.endX),r=Math.abs(t.endY-e.endY),h=Math.sqrt(i*i+n*n),s=(Math.sqrt(o*o+r*r)-h)/h;Math.abs(s)>Math.abs(a)&&(a=s)}))})),a}(h),t),L=!1;break;case u:if(!Y.x||!Y.y){L=!1;break}i=Et(this.cropper),l=z.startX-i.left,d=z.startY-i.top,p=r.minWidth,B=r.minHeight,Y.x>0?s=Y.y>0?C:x:Y.x<0&&(l-=p,s=Y.y>0?D:M),Y.y<0&&(d-=B),this.cropped||(wt(this.cropBox,O),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}L&&(r.width=p,r.height=B,r.left=l,r.top=d,this.action=s,this.renderCropBox()),dt(h,(function(t){t.startX=t.endX,t.startY=t.endY}))}},$t={crop:function(){return!this.ready||this.cropped||this.disabled||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&vt(this.dragBox,W),wt(this.cropBox,O),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=pt({},this.initialImageData),this.canvasData=pt({},this.initialCanvasData),this.cropBoxData=pt({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(pt(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),wt(this.dragBox,W),vt(this.cropBox,O)),this},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,dt(this.previews,(function(e){e.getElementsByTagName("img")[0].src=t})))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,wt(this.cropper,k)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,vt(this.cropper,k)),this},destroy:function(){var t=this.element;return t[p]?(t[p]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,a=i.left,n=i.top;return this.moveTo(nt(t)?t:a+Number(t),nt(e)?e:n+Number(e))},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(it(t)&&(i.left=t,a=!0),it(e)&&(i.top=e,a=!0),a&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=(t=Number(t))<0?1/(1-t):1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var a=this.options,n=this.canvasData,o=n.width,r=n.height,h=n.naturalWidth,s=n.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&a.zoomable){var c=h*t,l=s*t;if(!1===Tt(this.element,Z,{ratio:t,oldRatio:o/h,originalEvent:i}))return this;if(i){var d=this.pointers,p=Et(this.cropper),m=d&&Object.keys(d).length?function(t){var e=0,i=0,a=0;return dt(t,(function(t){var n=t.startX,o=t.startY;e+=n,i+=o,a+=1})),{pageX:e/=a,pageY:i/=a}}(d):{pageX:i.pageX,pageY:i.pageY};n.left-=(c-o)*((m.pageX-p.left-n.left)/o),n.top-=(l-r)*((m.pageY-p.top-n.top)/r)}else ht(e)&&it(e.x)&&it(e.y)?(n.left-=(c-o)*((e.x-n.left)/o),n.top-=(l-r)*((e.y-n.top)/r)):(n.left-=(c-o)/2,n.top-=(l-r)/2);n.width=c,n.height=l,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return it(t=Number(t))&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,it(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(it(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.imageData,a=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(it(t)&&(i.scaleX=t,a=!0),it(e)&&(i.scaleY=e,a=!0),a&&this.renderCanvas(!0,!0)),this},getData:function(){var t,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,a=this.imageData,n=this.canvasData,o=this.cropBoxData;if(this.ready&&this.cropped){t={x:o.left-n.left,y:o.top-n.top,width:o.width,height:o.height};var r=a.width/a.naturalWidth;if(dt(t,(function(e,i){t[i]=e/r})),e){var h=Math.round(t.y+t.height),s=Math.round(t.x+t.width);t.x=Math.round(t.x),t.y=Math.round(t.y),t.width=s-t.x,t.height=h-t.y}}else t={x:0,y:0,width:0,height:0};return i.rotatable&&(t.rotate=a.rotate||0),i.scalable&&(t.scaleX=a.scaleX||1,t.scaleY=a.scaleY||1),t},setData:function(t){var e=this.options,i=this.imageData,a=this.canvasData,n={};if(this.ready&&!this.disabled&&ht(t)){var o=!1;e.rotatable&&it(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,o=!0),e.scalable&&(it(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,o=!0),it(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var r=i.width/i.naturalWidth;it(t.x)&&(n.left=t.x*r+a.left),it(t.y)&&(n.top=t.y*r+a.top),it(t.width)&&(n.width=t.width*r),it(t.height)&&(n.height=t.height*r),this.setCropBoxData(n)}return this},getContainerData:function(){return this.ready?pt({},this.containerData):{}},getImageData:function(){return this.sized?pt({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&&dt(["left","top","width","height","naturalWidth","naturalHeight"],(function(i){e[i]=t[i]})),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&ht(t)&&(it(t.left)&&(e.left=t.left),it(t.top)&&(e.top=t.top),it(t.width)?(e.width=t.width,e.height=t.width/i):it(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t,e=this.cropBoxData;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(t){var e,i,a=this.cropBoxData,n=this.options.aspectRatio;return this.ready&&this.cropped&&!this.disabled&&ht(t)&&(it(t.left)&&(a.left=t.left),it(t.top)&&(a.top=t.top),it(t.width)&&t.width!==a.width&&(e=!0,a.width=t.width),it(t.height)&&t.height!==a.height&&(i=!0,a.height=t.height),n&&(e?a.height=a.width/n:i&&(a.width=a.height*n)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=function(t,e,i,a){var n=e.aspectRatio,o=e.naturalWidth,h=e.naturalHeight,s=e.rotate,c=void 0===s?0:s,l=e.scaleX,d=void 0===l?1:l,p=e.scaleY,m=void 0===p?1:p,u=i.aspectRatio,g=i.naturalWidth,f=i.naturalHeight,v=a.fillColor,w=void 0===v?"transparent":v,b=a.imageSmoothingEnabled,y=void 0===b||b,x=a.imageSmoothingQuality,M=void 0===x?"low":x,C=a.maxWidth,D=void 0===C?1/0:C,B=a.maxHeight,k=void 0===B?1/0:B,O=a.minWidth,T=void 0===O?0:O,E=a.minHeight,W=void 0===E?0:E,H=document.createElement("canvas"),N=H.getContext("2d"),L=Xt({aspectRatio:u,width:D,height:k}),z=Xt({aspectRatio:u,width:T,height:W},"cover"),Y=Math.min(L.width,Math.max(z.width,g)),X=Math.min(L.height,Math.max(z.height,f)),R=Xt({aspectRatio:n,width:D,height:k}),S=Xt({aspectRatio:n,width:T,height:W},"cover"),j=Math.min(R.width,Math.max(S.width,o)),A=Math.min(R.height,Math.max(S.height,h)),P=[-j/2,-A/2,j,A];return H.width=ut(Y),H.height=ut(X),N.fillStyle=w,N.fillRect(0,0,Y,X),N.save(),N.translate(Y/2,X/2),N.rotate(c*Math.PI/180),N.scale(d,m),N.imageSmoothingEnabled=y,N.imageSmoothingQuality=M,N.drawImage.apply(N,[t].concat(r(P.map((function(t){return Math.floor(ut(t))}))))),N.restore(),H}(this.image,this.imageData,e,t);if(!this.cropped)return i;var a=this.getData(t.rounded),n=a.x,o=a.y,h=a.width,s=a.height,c=i.width/Math.floor(e.naturalWidth);1!==c&&(n*=c,o*=c,h*=c,s*=c);var l=h/s,d=Xt({aspectRatio:l,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),p=Xt({aspectRatio:l,width:t.minWidth||0,height:t.minHeight||0},"cover"),m=Xt({aspectRatio:l,width:t.width||(1!==c?i.width:h),height:t.height||(1!==c?i.height:s)}),u=m.width,g=m.height;u=Math.min(d.width,Math.max(p.width,u)),g=Math.min(d.height,Math.max(p.height,g));var f=document.createElement("canvas"),v=f.getContext("2d");f.width=ut(u),f.height=ut(g),v.fillStyle=t.fillColor||"transparent",v.fillRect(0,0,u,g);var w=t.imageSmoothingEnabled,b=void 0===w||w,y=t.imageSmoothingQuality;v.imageSmoothingEnabled=b,y&&(v.imageSmoothingQuality=y);var x,M,C,D,B,k,O=i.width,T=i.height,E=n,W=o;E<=-h||E>O?(E=0,x=0,C=0,B=0):E<=0?(C=-E,E=0,B=x=Math.min(O,h+E)):E<=O&&(C=0,B=x=Math.min(h,O-E)),x<=0||W<=-s||W>T?(W=0,M=0,D=0,k=0):W<=0?(D=-W,W=0,k=M=Math.min(T,s+W)):W<=T&&(D=0,k=M=Math.min(s,T-W));var H=[E,W,x,M];if(B>0&&k>0){var N=u/h;H.push(C*N,D*N,B*N,k*N)}return v.drawImage.apply(v,[i].concat(r(H.map((function(t){return Math.floor(ut(t))}))))),f},setAspectRatio:function(t){var e=this.options;return this.disabled||nt(t)||(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,a=this.face;if(this.ready&&!this.disabled){var n=t===z,o=e.movable&&t===Y;t=n||o?t:X,e.dragMode=t,Ct(i,N,t),bt(i,B,n),bt(i,H,o),e.cropBoxMovable||(Ct(a,N,t),bt(a,B,n),bt(a,H,o))}return this}},Qt=c.Cropper,Kt=function(){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!e||!_.test(e.tagName))throw new Error("The first argument is required and must be an <img> or <canvas> element.");this.element=e,this.options=pt({},tt,ht(i)&&i),this.cropped=!1,this.disabled=!1,this.pointers={},this.ready=!1,this.reloading=!1,this.replaced=!1,this.sized=!1,this.sizing=!1,this.init()}return e=t,a=[{key:"noConflict",value:function(){return window.Cropper=Qt,t}},{key:"setDefaults",value:function(t){pt(tt,ht(t)&&t)}}],(i=[{key:"init",value:function(){var t,e=this.element,i=e.tagName.toLowerCase();if(!e[p]){if(e[p]=this,"img"===i){if(this.isImg=!0,t=e.getAttribute("src")||"",this.originalUrl=t,!t)return;t=e.src}else"canvas"===i&&window.HTMLCanvasElement&&(t=e.toDataURL());this.load(t)}}},{key:"load",value:function(t){var e=this;if(t){this.url=t,this.imageData={};var i=this.element,a=this.options;if(a.rotatable||a.scalable||(a.checkOrientation=!1),a.checkOrientation&&window.ArrayBuffer)if(F.test(t))J.test(t)?this.read((n=t.replace(St,""),o=atob(n),r=new ArrayBuffer(o.length),dt(h=new Uint8Array(r),(function(t,e){h[e]=o.charCodeAt(e)})),r)):this.clone();else{var n,o,r,h,s=new XMLHttpRequest,c=this.clone.bind(this);this.reloading=!0,this.xhr=s,s.onabort=c,s.onerror=c,s.ontimeout=c,s.onprogress=function(){s.getResponseHeader("content-type")!==G&&s.abort()},s.onload=function(){e.read(s.response)},s.onloadend=function(){e.reloading=!1,e.xhr=null},a.checkCrossOrigin&&Nt(t)&&i.crossOrigin&&(t=Lt(t)),s.open("GET",t,!0),s.responseType="arraybuffer",s.withCredentials="use-credentials"===i.crossOrigin,s.send()}else this.clone()}}},{key:"read",value:function(t){var e=this.options,i=this.imageData,a=jt(t),n=0,o=1,r=1;if(a>1){this.url=function(t,e){for(var i=[],a=new Uint8Array(t);a.length>0;)i.push(Rt.apply(null,lt(a.subarray(0,8192)))),a=a.subarray(8192);return"data:".concat(e,";base64,").concat(btoa(i.join("")))}(t,G);var h=function(t){var e=0,i=1,a=1;switch(t){case 2:i=-1;break;case 3:e=-180;break;case 4:a=-1;break;case 5:e=90,a=-1;break;case 6:e=90;break;case 7:e=90,i=-1;break;case 8:e=-90}return{rotate:e,scaleX:i,scaleY:a}}(a);n=h.rotate,o=h.scaleX,r=h.scaleY}e.rotatable&&(i.rotate=n),e.scalable&&(i.scaleX=o,i.scaleY=r),this.clone()}},{key:"clone",value:function(){var t=this.element,e=this.url,i=t.crossOrigin,a=e;this.options.checkCrossOrigin&&Nt(e)&&(i||(i="anonymous"),a=Lt(e)),this.crossOrigin=i,this.crossOriginUrl=a;var n=document.createElement("img");i&&(n.crossOrigin=i),n.src=a||e,n.alt=t.alt||"The image to crop",this.image=n,n.onload=this.start.bind(this),n.onerror=this.stop.bind(this),vt(n,T),t.parentNode.insertBefore(n,t.nextSibling)}},{key:"start",value:function(){var t=this,e=this.image;e.onload=null,e.onerror=null,this.sizing=!0;var i=c.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(c.navigator.userAgent),a=function(e,i){pt(t.imageData,{naturalWidth:e,naturalHeight:i,aspectRatio:e/i}),t.initialImageData=pt({},t.imageData),t.sizing=!1,t.sized=!0,t.build()};if(!e.naturalWidth||i){var n=document.createElement("img"),o=document.body||document.documentElement;this.sizingImage=n,n.onload=function(){a(n.width,n.height),i||o.removeChild(n)},n.src=e.src,i||(n.style.cssText="left:0;max-height:none!important;max-width:none!important;min-height:0!important;min-width:0!important;opacity:0;position:absolute;top:0;z-index:-1;",o.appendChild(n))}else a(e.naturalWidth,e.naturalHeight)}},{key:"stop",value:function(){var t=this.image;t.onload=null,t.onerror=null,t.parentNode.removeChild(t),this.image=null}},{key:"build",value:function(){if(this.sized&&!this.ready){var t=this.element,e=this.options,i=this.image,a=t.parentNode,n=document.createElement("div");n.innerHTML='<div class="cropper-container" touch-action="none"><div class="cropper-wrap-box"><div class="cropper-canvas"></div></div><div class="cropper-drag-box"></div><div class="cropper-crop-box"><span class="cropper-view-box"></span><span class="cropper-dashed dashed-h"></span><span class="cropper-dashed dashed-v"></span><span class="cropper-center"></span><span class="cropper-face"></span><span class="cropper-line line-e" data-cropper-action="e"></span><span class="cropper-line line-n" data-cropper-action="n"></span><span class="cropper-line line-w" data-cropper-action="w"></span><span class="cropper-line line-s" data-cropper-action="s"></span><span class="cropper-point point-e" data-cropper-action="e"></span><span class="cropper-point point-n" data-cropper-action="n"></span><span class="cropper-point point-w" data-cropper-action="w"></span><span class="cropper-point point-s" data-cropper-action="s"></span><span class="cropper-point point-ne" data-cropper-action="ne"></span><span class="cropper-point point-nw" data-cropper-action="nw"></span><span class="cropper-point point-sw" data-cropper-action="sw"></span><span class="cropper-point point-se" data-cropper-action="se"></span></div></div>';var o=n.querySelector(".".concat(p,"-container")),r=o.querySelector(".".concat(p,"-canvas")),h=o.querySelector(".".concat(p,"-drag-box")),s=o.querySelector(".".concat(p,"-crop-box")),c=s.querySelector(".".concat(p,"-face"));this.container=a,this.cropper=o,this.canvas=r,this.dragBox=h,this.cropBox=s,this.viewBox=o.querySelector(".".concat(p,"-view-box")),this.face=c,r.appendChild(i),vt(t,O),a.insertBefore(o,t.nextSibling),wt(i,T),this.initPreview(),this.bind(),e.initialAspectRatio=Math.max(0,e.initialAspectRatio)||NaN,e.aspectRatio=Math.max(0,e.aspectRatio)||NaN,e.viewMode=Math.max(0,Math.min(3,Math.round(e.viewMode)))||0,vt(s,O),e.guides||vt(s.getElementsByClassName("".concat(p,"-dashed")),O),e.center||vt(s.getElementsByClassName("".concat(p,"-center")),O),e.background&&vt(o,"".concat(p,"-bg")),e.highlight||vt(c,E),e.cropBoxMovable&&(vt(c,H),Ct(c,N,m)),e.cropBoxResizable||(vt(s.getElementsByClassName("".concat(p,"-line")),O),vt(s.getElementsByClassName("".concat(p,"-point")),O)),this.render(),this.ready=!0,this.setDragMode(e.dragMode),e.autoCrop&&this.crop(),this.setData(e.data),st(e.ready)&&Ot(t,$,e.ready,{once:!0}),Tt(t,$)}}},{key:"unbuild",value:function(){if(this.ready){this.ready=!1,this.unbind(),this.resetPreview();var t=this.cropper.parentNode;t&&t.removeChild(this.cropper),wt(this.element,O)}}},{key:"uncreate",value:function(){this.ready?(this.unbuild(),this.ready=!1,this.cropped=!1):this.sizing?(this.sizingImage.onload=null,this.sizing=!1,this.sized=!1):this.reloading?(this.xhr.onabort=null,this.xhr.abort()):this.image&&this.stop()}}])&&n(e.prototype,i),a&&n(e,a),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,i,a}();pt(Kt.prototype,At,Pt,It,Ut,qt,$t);export{Kt as default};
|