cloudinary 1.23.0 → 1.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +19 -0
- data/lib/active_storage/service/cloudinary_service.rb +34 -9
- data/lib/cloudinary/api.rb +24 -1
- data/lib/cloudinary/carrier_wave/process.rb +1 -1
- data/lib/cloudinary/uploader.rb +58 -55
- data/lib/cloudinary/version.rb +1 -1
- data/vendor/assets/javascripts/cloudinary/canvas-to-blob.min.js +0 -1
- data/vendor/assets/javascripts/cloudinary/jquery.cloudinary.js +6 -3
- data/vendor/assets/javascripts/cloudinary/load-image.all.min.js +0 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4dfd5beeebb091b480f5b9e43dec47fea57c876c62499c8a93356d4b9318051f
|
4
|
+
data.tar.gz: 588c68c6ccd722bdfd9d303ca76b34aee2eab30d64cbedfb57d1411160d60ff5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb8daa2242a6ad57553aeb65f9bef53440a075518922510e4901eef1c29d952e15c75456a1b4cdfbc35aaced3ac3adcbca18f3b307e72521bebad48138139095
|
7
|
+
data.tar.gz: 67fb1cb9c9e299fd0a914b49a7083afdd076b064690afc25faa4250a04bed0a1e9077cac72cb102fe70c8da23399e1e62066395c53ba2c34d9e1e5d6b8dfa9fa
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
1.24.0 / 2022-12-06
|
2
|
+
==================
|
3
|
+
|
4
|
+
New functionality and features
|
5
|
+
------------------------------
|
6
|
+
|
7
|
+
* Add support for `resources_by_asset_folder` Admin API
|
8
|
+
* Add support for `asset_folder`, `display_name` and `unique_display_name` parameters
|
9
|
+
* Add support for `use_asset_folder_as_public_id_prefix` parameter
|
10
|
+
* Add support for `metadata` in `update` Admin API
|
11
|
+
* Add support for `clear_invalid` metadata parameter
|
12
|
+
|
13
|
+
Other Changes
|
14
|
+
-------------
|
15
|
+
|
16
|
+
* Fix Active Storage public id of the raw asset handling
|
17
|
+
* Fix Active Storage resource type for direct upload
|
18
|
+
* Fix CarrierWave identifier obtainment
|
19
|
+
|
1
20
|
1.23.0 / 2022-04-05
|
2
21
|
==================
|
3
22
|
|
@@ -56,8 +56,8 @@ module ActiveStorage
|
|
56
56
|
def url(key, filename: nil, content_type: '', **options)
|
57
57
|
instrument :url, key: key do |payload|
|
58
58
|
url = Cloudinary::Utils.cloudinary_url(
|
59
|
-
|
60
|
-
resource_type: resource_type(nil, key),
|
59
|
+
full_public_id_internal(key),
|
60
|
+
resource_type: resource_type(nil, key, content_type),
|
61
61
|
format: ext_for_file(key, filename, content_type),
|
62
62
|
**@options.merge(options.symbolize_keys)
|
63
63
|
)
|
@@ -70,7 +70,8 @@ module ActiveStorage
|
|
70
70
|
|
71
71
|
def url_for_direct_upload(key, **options)
|
72
72
|
instrument :url, key: key do |payload|
|
73
|
-
options =
|
73
|
+
options = @options.merge(options.symbolize_keys)
|
74
|
+
options[:resource_type] ||= resource_type(nil, key, options[:content_type])
|
74
75
|
options[:public_id] = public_id_internal(key)
|
75
76
|
# Provide file format for raw files, since js client does not include original file name.
|
76
77
|
#
|
@@ -164,10 +165,23 @@ module ActiveStorage
|
|
164
165
|
|
165
166
|
end
|
166
167
|
|
167
|
-
|
168
|
-
|
168
|
+
# Returns the public id of the asset.
|
169
|
+
#
|
170
|
+
# Public id includes both folder(defined globally in the configuration) and the active storage key.
|
171
|
+
# For raw files it also includes the file extension, since that's how Cloudinary stores raw files.
|
172
|
+
#
|
173
|
+
# @param [ActiveStorage::BlobKey] key The blob key with attributes.
|
174
|
+
# @param [ActiveStorage::Filename] filename The original filename.
|
175
|
+
# @param [string] content_type The content type of the file.
|
176
|
+
#
|
177
|
+
# @return [string] The public id of the asset.
|
178
|
+
def public_id(key, filename = nil, content_type = '')
|
179
|
+
public_id = key
|
180
|
+
if resource_type(nil, key) == 'raw'
|
181
|
+
public_id = [key, ext_for_file(key, filename, content_type)].reject(&:blank?).join('.')
|
182
|
+
end
|
169
183
|
|
170
|
-
|
184
|
+
full_public_id_internal(public_id)
|
171
185
|
end
|
172
186
|
|
173
187
|
private
|
@@ -212,6 +226,15 @@ module ActiveStorage
|
|
212
226
|
@formats[content_type]
|
213
227
|
end
|
214
228
|
|
229
|
+
# Returns the full public id including folder.
|
230
|
+
def full_public_id_internal(key)
|
231
|
+
public_id = public_id_internal(key)
|
232
|
+
|
233
|
+
return public_id unless @options[:folder]
|
234
|
+
|
235
|
+
File.join(@options.fetch(:folder), public_id)
|
236
|
+
end
|
237
|
+
|
215
238
|
def public_id_internal(key)
|
216
239
|
# TODO: Allow custom manipulation of key to obscure how we store in Cloudinary
|
217
240
|
key
|
@@ -240,9 +263,11 @@ module ActiveStorage
|
|
240
263
|
end
|
241
264
|
end
|
242
265
|
|
243
|
-
def resource_type(io, key = "")
|
244
|
-
|
245
|
-
|
266
|
+
def resource_type(io, key = "", content_type = "")
|
267
|
+
if content_type.blank?
|
268
|
+
options = key.respond_to?(:attributes) ? key.attributes : {}
|
269
|
+
content_type = options[:content_type] || (io.nil? ? '' : Marcel::MimeType.for(io))
|
270
|
+
end
|
246
271
|
content_type_to_resource_type(content_type)
|
247
272
|
end
|
248
273
|
end
|
data/lib/cloudinary/api.rb
CHANGED
@@ -189,6 +189,24 @@ class Cloudinary::Api
|
|
189
189
|
call_api(:get, uri, params, options)
|
190
190
|
end
|
191
191
|
|
192
|
+
# Returns all assets stored directly in a specified asset folder, regardless of the public ID paths of those assets.
|
193
|
+
#
|
194
|
+
# @param [String] asset_folder The requested asset folder.
|
195
|
+
# @param [Hash] options The optional parameters. See the
|
196
|
+
# <a href=https://cloudinary.com/documentation/dynamic_folders#new_admin_api_endpoints target="_blank"> Admin API</a> documentation.
|
197
|
+
#
|
198
|
+
# @return [Cloudinary::Api::Response]
|
199
|
+
#
|
200
|
+
# @raise [Cloudinary::Api::Error]
|
201
|
+
#
|
202
|
+
# @see https://cloudinary.com/documentation/dynamic_folders#new_admin_api_endpoints
|
203
|
+
def self.resources_by_asset_folder(asset_folder, options={})
|
204
|
+
uri = "resources/by_asset_folder"
|
205
|
+
params = only(options, :next_cursor, :max_results, :tags, :context, :moderations, :direction, :key, :value, :metadata)
|
206
|
+
params[:asset_folder] = asset_folder
|
207
|
+
call_api(:get, uri, params, options)
|
208
|
+
end
|
209
|
+
|
192
210
|
# Returns the details of the specified asset and all its derived assets.
|
193
211
|
#
|
194
212
|
# Note that if you only need details about the original asset,
|
@@ -250,20 +268,25 @@ class Cloudinary::Api
|
|
250
268
|
uri = "resources/#{resource_type}/#{type}/#{public_id}"
|
251
269
|
update_options = {
|
252
270
|
:access_control => Cloudinary::Utils.json_array_param(options[:access_control]),
|
271
|
+
:asset_folder => options[:asset_folder],
|
253
272
|
:auto_tagging => options[:auto_tagging] && options[:auto_tagging].to_f,
|
254
273
|
:background_removal => options[:background_removal],
|
255
274
|
:categorization => options[:categorization],
|
256
275
|
:context => Cloudinary::Utils.encode_context(options[:context]),
|
257
276
|
:custom_coordinates => Cloudinary::Utils.encode_double_array(options[:custom_coordinates]),
|
258
277
|
:detection => options[:detection],
|
278
|
+
:display_name => options[:display_name],
|
259
279
|
:face_coordinates => Cloudinary::Utils.encode_double_array(options[:face_coordinates]),
|
280
|
+
:metadata => Cloudinary::Utils.encode_context(options[:metadata]),
|
260
281
|
:moderation_status => options[:moderation_status],
|
261
282
|
:notification_url => options[:notification_url],
|
262
283
|
:quality_override => options[:quality_override],
|
263
284
|
:ocr => options[:ocr],
|
264
285
|
:raw_convert => options[:raw_convert],
|
265
286
|
:similarity_search => options[:similarity_search],
|
266
|
-
:tags => options[:tags] && Cloudinary::Utils.build_array(options[:tags]).join(",")
|
287
|
+
:tags => options[:tags] && Cloudinary::Utils.build_array(options[:tags]).join(","),
|
288
|
+
:clear_invalid => Cloudinary::Utils.as_safe_bool(options[:clear_invalid]),
|
289
|
+
:unique_display_name=> options[:unique_display_name]
|
267
290
|
}
|
268
291
|
call_api(:post, uri, update_options, options)
|
269
292
|
end
|
@@ -163,7 +163,7 @@ module Cloudinary::CarrierWave
|
|
163
163
|
super
|
164
164
|
|
165
165
|
column = model.send(:_mounter, mounted_as).send(:serialization_column)
|
166
|
-
identifier = model.
|
166
|
+
identifier = model.read_attribute(column)
|
167
167
|
retrieve_from_store!(identifier) unless identifier.nil?
|
168
168
|
end
|
169
169
|
end
|
data/lib/cloudinary/uploader.rb
CHANGED
@@ -18,60 +18,62 @@ class Cloudinary::Uploader
|
|
18
18
|
options.keys.each { |key| options[key.to_sym] = options.delete(key) if key.is_a?(String) }
|
19
19
|
|
20
20
|
params = {
|
21
|
-
:access_control
|
22
|
-
:access_mode
|
23
|
-
:allowed_formats
|
24
|
-
:asset_folder
|
25
|
-
:async
|
26
|
-
:auto_tagging
|
27
|
-
:background_removal
|
28
|
-
:backup
|
29
|
-
:callback
|
30
|
-
:categorization
|
31
|
-
:cinemagraph_analysis
|
32
|
-
:colors
|
33
|
-
:context
|
34
|
-
:custom_coordinates
|
35
|
-
:detection
|
36
|
-
:discard_original_filename
|
37
|
-
:display_name
|
38
|
-
:eager
|
39
|
-
:eager_async
|
40
|
-
:eager_notification_url
|
41
|
-
:exif
|
42
|
-
:eval
|
43
|
-
:face_coordinates
|
44
|
-
:faces
|
45
|
-
:folder
|
46
|
-
:format
|
47
|
-
:filename_override
|
48
|
-
:headers
|
49
|
-
:image_metadata
|
50
|
-
:invalidate
|
51
|
-
:moderation
|
52
|
-
:notification_url
|
53
|
-
:ocr
|
54
|
-
:overwrite
|
55
|
-
:phash
|
56
|
-
:proxy
|
57
|
-
:public_id
|
58
|
-
:public_id_prefix
|
59
|
-
:quality_analysis
|
60
|
-
:quality_override
|
61
|
-
:raw_convert
|
62
|
-
:responsive_breakpoints
|
63
|
-
:return_delete_token
|
64
|
-
:similarity_search
|
65
|
-
:tags
|
66
|
-
:timestamp
|
67
|
-
:transformation
|
68
|
-
:type
|
69
|
-
:unique_filename
|
70
|
-
:upload_preset
|
71
|
-
:use_filename
|
72
|
-
:use_filename_as_display_name
|
73
|
-
:
|
74
|
-
:
|
21
|
+
:access_control => Cloudinary::Utils.json_array_param(options[:access_control]),
|
22
|
+
:access_mode => options[:access_mode],
|
23
|
+
:allowed_formats => Cloudinary::Utils.build_array(options[:allowed_formats]).join(","),
|
24
|
+
:asset_folder => options[:asset_folder],
|
25
|
+
:async => Cloudinary::Utils.as_safe_bool(options[:async]),
|
26
|
+
:auto_tagging => options[:auto_tagging] && options[:auto_tagging].to_f,
|
27
|
+
:background_removal => options[:background_removal],
|
28
|
+
:backup => Cloudinary::Utils.as_safe_bool(options[:backup]),
|
29
|
+
:callback => options[:callback],
|
30
|
+
:categorization => options[:categorization],
|
31
|
+
:cinemagraph_analysis => Cloudinary::Utils.as_safe_bool(options[:cinemagraph_analysis]),
|
32
|
+
:colors => Cloudinary::Utils.as_safe_bool(options[:colors]),
|
33
|
+
:context => Cloudinary::Utils.encode_context(options[:context]),
|
34
|
+
:custom_coordinates => Cloudinary::Utils.encode_double_array(options[:custom_coordinates]),
|
35
|
+
:detection => options[:detection],
|
36
|
+
:discard_original_filename => Cloudinary::Utils.as_safe_bool(options[:discard_original_filename]),
|
37
|
+
:display_name => options[:display_name],
|
38
|
+
:eager => Cloudinary::Utils.build_eager(options[:eager]),
|
39
|
+
:eager_async => Cloudinary::Utils.as_safe_bool(options[:eager_async]),
|
40
|
+
:eager_notification_url => options[:eager_notification_url],
|
41
|
+
:exif => Cloudinary::Utils.as_safe_bool(options[:exif]),
|
42
|
+
:eval => options[:eval],
|
43
|
+
:face_coordinates => Cloudinary::Utils.encode_double_array(options[:face_coordinates]),
|
44
|
+
:faces => Cloudinary::Utils.as_safe_bool(options[:faces]),
|
45
|
+
:folder => options[:folder],
|
46
|
+
:format => options[:format],
|
47
|
+
:filename_override => options[:filename_override],
|
48
|
+
:headers => build_custom_headers(options[:headers]),
|
49
|
+
:image_metadata => Cloudinary::Utils.as_safe_bool(options[:image_metadata]),
|
50
|
+
:invalidate => Cloudinary::Utils.as_safe_bool(options[:invalidate]),
|
51
|
+
:moderation => options[:moderation],
|
52
|
+
:notification_url => options[:notification_url],
|
53
|
+
:ocr => options[:ocr],
|
54
|
+
:overwrite => Cloudinary::Utils.as_safe_bool(options[:overwrite]),
|
55
|
+
:phash => Cloudinary::Utils.as_safe_bool(options[:phash]),
|
56
|
+
:proxy => options[:proxy],
|
57
|
+
:public_id => options[:public_id],
|
58
|
+
:public_id_prefix => options[:public_id_prefix],
|
59
|
+
:quality_analysis => Cloudinary::Utils.as_safe_bool(options[:quality_analysis]),
|
60
|
+
:quality_override => options[:quality_override],
|
61
|
+
:raw_convert => options[:raw_convert],
|
62
|
+
:responsive_breakpoints => Cloudinary::Utils.generate_responsive_breakpoints_string(options[:responsive_breakpoints]),
|
63
|
+
:return_delete_token => Cloudinary::Utils.as_safe_bool(options[:return_delete_token]),
|
64
|
+
:similarity_search => options[:similarity_search],
|
65
|
+
:tags => options[:tags] && Cloudinary::Utils.build_array(options[:tags]).join(","),
|
66
|
+
:timestamp => (options[:timestamp] || Time.now.to_i),
|
67
|
+
:transformation => Cloudinary::Utils.generate_transformation_string(options.clone),
|
68
|
+
:type => options[:type],
|
69
|
+
:unique_filename => Cloudinary::Utils.as_safe_bool(options[:unique_filename]),
|
70
|
+
:upload_preset => options[:upload_preset],
|
71
|
+
:use_filename => Cloudinary::Utils.as_safe_bool(options[:use_filename]),
|
72
|
+
:use_filename_as_display_name => Cloudinary::Utils.as_safe_bool(options[:use_filename_as_display_name]),
|
73
|
+
:use_asset_folder_as_public_id_prefix => Cloudinary::Utils.as_safe_bool(options[:use_asset_folder_as_public_id_prefix]),
|
74
|
+
:unique_display_name => Cloudinary::Utils.as_safe_bool(options[:unique_display_name]),
|
75
|
+
:accessibility_analysis => Cloudinary::Utils.as_safe_bool(options[:accessibility_analysis]),
|
76
|
+
:metadata => Cloudinary::Utils.encode_context(options[:metadata])
|
75
77
|
}
|
76
78
|
params
|
77
79
|
end
|
@@ -325,7 +327,8 @@ class Cloudinary::Uploader
|
|
325
327
|
timestamp: (options[:timestamp] || Time.now.to_i),
|
326
328
|
type: options[:type],
|
327
329
|
public_ids: Cloudinary::Utils.build_array(public_ids),
|
328
|
-
metadata: Cloudinary::Utils.encode_context(metadata)
|
330
|
+
metadata: Cloudinary::Utils.encode_context(metadata),
|
331
|
+
clear_invalid: Cloudinary::Utils.as_safe_bool(options[:clear_invalid])
|
329
332
|
}
|
330
333
|
end
|
331
334
|
end
|
data/lib/cloudinary/version.rb
CHANGED
@@ -1,2 +1 @@
|
|
1
1
|
!function(t){"use strict";var e=t.HTMLCanvasElement&&t.HTMLCanvasElement.prototype,o=t.Blob&&function(){try{return Boolean(new Blob)}catch(t){return!1}}(),n=o&&t.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(t){return!1}}(),r=t.BlobBuilder||t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder,a=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,i=(o||r)&&t.atob&&t.ArrayBuffer&&t.Uint8Array&&function(t){var e,i,l,u,c,f,b,d,B;if(!(e=t.match(a)))throw new Error("invalid data URI");for(i=e[2]?e[1]:"text/plain"+(e[3]||";charset=US-ASCII"),l=!!e[4],u=t.slice(e[0].length),c=l?atob(u):decodeURIComponent(u),f=new ArrayBuffer(c.length),b=new Uint8Array(f),d=0;d<c.length;d+=1)b[d]=c.charCodeAt(d);return o?new Blob([n?b:f],{type:i}):((B=new r).append(f),B.getBlob(i))};t.HTMLCanvasElement&&!e.toBlob&&(e.mozGetAsFile?e.toBlob=function(t,o,n){var r=this;setTimeout(function(){t(n&&e.toDataURL&&i?i(r.toDataURL(o,n)):r.mozGetAsFile("blob",o))})}:e.toDataURL&&i&&(e.toBlob=function(t,e,o){var n=this;setTimeout(function(){t(i(n.toDataURL(e,o)))})})),"function"==typeof define&&define.amd?define(function(){return i}):"object"==typeof module&&module.exports?module.exports=i:t.dataURLtoBlob=i}(window);
|
2
|
-
//# sourceMappingURL=canvas-to-blob.min.js.map
|
@@ -1093,11 +1093,11 @@ var slice = [].slice,
|
|
1093
1093
|
*
|
1094
1094
|
* If the parameter is an object,
|
1095
1095
|
* @param {(string|Object)} param - the video codec as either a String or a Hash
|
1096
|
-
* @return {string} the video codec string in the format codec:profile:level
|
1096
|
+
* @return {string} the video codec string in the format codec:profile:level:b_frames
|
1097
1097
|
* @example
|
1098
|
-
* vc_[ :profile : [level]]
|
1098
|
+
* vc_[ :profile : [level : [b_frames]]]
|
1099
1099
|
* or
|
1100
|
-
{ codec: 'h264', profile: 'basic', level: '3.1' }
|
1100
|
+
{ codec: 'h264', profile: 'basic', level: '3.1', b_frames: false }
|
1101
1101
|
* @ignore
|
1102
1102
|
*/
|
1103
1103
|
|
@@ -1112,6 +1112,9 @@ var slice = [].slice,
|
|
1112
1112
|
video += ":" + param['profile'];
|
1113
1113
|
if ('level' in param) {
|
1114
1114
|
video += ":" + param['level'];
|
1115
|
+
if ('b_frames' in param && param['b_frames'] === false) {
|
1116
|
+
video += ":bframes_no";
|
1117
|
+
}
|
1115
1118
|
}
|
1116
1119
|
}
|
1117
1120
|
}
|
@@ -1,2 +1 @@
|
|
1
1
|
!function(e){"use strict";function t(e,i,a){var o,n=document.createElement("img");return n.onerror=function(o){return t.onerror(n,o,e,i,a)},n.onload=function(o){return t.onload(n,o,e,i,a)},"string"==typeof e?(t.fetchBlob(e,function(i){i?(e=i,o=t.createObjectURL(e)):(o=e,a&&a.crossOrigin&&(n.crossOrigin=a.crossOrigin)),n.src=o},a),n):t.isInstanceOf("Blob",e)||t.isInstanceOf("File",e)?(o=n._objectURL=t.createObjectURL(e))?(n.src=o,n):t.readFile(e,function(e){var t=e.target;t&&t.result?n.src=t.result:i&&i(e)}):void 0}function i(e,i){!e._objectURL||i&&i.noRevoke||(t.revokeObjectURL(e._objectURL),delete e._objectURL)}var a=e.createObjectURL&&e||e.URL&&URL.revokeObjectURL&&URL||e.webkitURL&&webkitURL;t.fetchBlob=function(e,t,i){t()},t.isInstanceOf=function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"},t.transform=function(e,t,i,a,o){i(e,o)},t.onerror=function(e,t,a,o,n){i(e,n),o&&o.call(e,t)},t.onload=function(e,a,o,n,r){i(e,r),n&&t.transform(e,r,n,o,{})},t.createObjectURL=function(e){return!!a&&a.createObjectURL(e)},t.revokeObjectURL=function(e){return!!a&&a.revokeObjectURL(e)},t.readFile=function(t,i,a){if(e.FileReader){var o=new FileReader;if(o.onload=o.onerror=i,a=a||"readAsDataURL",o[a])return o[a](t),o}return!1},"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:e.loadImage=t}("undefined"!=typeof window&&window||this),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image"],e):e("object"==typeof module&&module.exports?require("./load-image"):window.loadImage)}(function(e){"use strict";var t=e.transform;e.transform=function(i,a,o,n,r){t.call(e,e.scale(i,a,r),a,o,n,r)},e.transformCoordinates=function(){},e.getTransformedOptions=function(e,t){var i,a,o,n,r=t.aspectRatio;if(!r)return t;i={};for(a in t)t.hasOwnProperty(a)&&(i[a]=t[a]);return i.crop=!0,o=e.naturalWidth||e.width,n=e.naturalHeight||e.height,o/n>r?(i.maxWidth=n*r,i.maxHeight=n):(i.maxWidth=o,i.maxHeight=o/r),i},e.renderImageToCanvas=function(e,t,i,a,o,n,r,s,l,c){return e.getContext("2d").drawImage(t,i,a,o,n,r,s,l,c),e},e.hasCanvasOption=function(e){return e.canvas||e.crop||!!e.aspectRatio},e.scale=function(t,i,a){function o(){var e=Math.max((l||I)/I,(c||v)/v);e>1&&(I*=e,v*=e)}function n(){var e=Math.min((r||I)/I,(s||v)/v);e<1&&(I*=e,v*=e)}i=i||{};var r,s,l,c,d,u,f,g,p,m,h,S=document.createElement("canvas"),b=t.getContext||e.hasCanvasOption(i)&&S.getContext,y=t.naturalWidth||t.width,x=t.naturalHeight||t.height,I=y,v=x;if(b&&(f=(i=e.getTransformedOptions(t,i,a)).left||0,g=i.top||0,i.sourceWidth?(d=i.sourceWidth,void 0!==i.right&&void 0===i.left&&(f=y-d-i.right)):d=y-f-(i.right||0),i.sourceHeight?(u=i.sourceHeight,void 0!==i.bottom&&void 0===i.top&&(g=x-u-i.bottom)):u=x-g-(i.bottom||0),I=d,v=u),r=i.maxWidth,s=i.maxHeight,l=i.minWidth,c=i.minHeight,b&&r&&s&&i.crop?(I=r,v=s,(h=d/u-r/s)<0?(u=s*d/r,void 0===i.top&&void 0===i.bottom&&(g=(x-u)/2)):h>0&&(d=r*u/s,void 0===i.left&&void 0===i.right&&(f=(y-d)/2))):((i.contain||i.cover)&&(l=r=r||l,c=s=s||c),i.cover?(n(),o()):(o(),n())),b){if((p=i.pixelRatio)>1&&(S.style.width=I+"px",S.style.height=v+"px",I*=p,v*=p,S.getContext("2d").scale(p,p)),(m=i.downsamplingRatio)>0&&m<1&&I<d&&v<u)for(;d*m>I;)S.width=d*m,S.height=u*m,e.renderImageToCanvas(S,t,f,g,d,u,0,0,S.width,S.height),f=0,g=0,d=S.width,u=S.height,(t=document.createElement("canvas")).width=d,t.height=u,e.renderImageToCanvas(t,S,0,0,d,u,0,0,d,u);return S.width=I,S.height=v,e.transformCoordinates(S,i),e.renderImageToCanvas(S,t,f,g,d,u,0,0,I,v)}return t.width=I,t.height=v,t}}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image"],e):e("object"==typeof module&&module.exports?require("./load-image"):window.loadImage)}(function(e){"use strict";var t="undefined"!=typeof Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice);e.blobSlice=t&&function(){return(this.slice||this.webkitSlice||this.mozSlice).apply(this,arguments)},e.metaDataParsers={jpeg:{65505:[],65517:[]}},e.parseMetaData=function(t,i,a,o){a=a||{},o=o||{};var n=this,r=a.maxMetaDataSize||262144;!!("undefined"!=typeof DataView&&t&&t.size>=12&&"image/jpeg"===t.type&&e.blobSlice)&&e.readFile(e.blobSlice.call(t,0,r),function(t){if(t.target.error)return console.log(t.target.error),void i(o);var r,s,l,c,d=t.target.result,u=new DataView(d),f=2,g=u.byteLength-4,p=f;if(65496===u.getUint16(0)){for(;f<g&&((r=u.getUint16(f))>=65504&&r<=65519||65534===r);){if(s=u.getUint16(f+2)+2,f+s>u.byteLength){console.log("Invalid meta data: Invalid segment size.");break}if(l=e.metaDataParsers.jpeg[r])for(c=0;c<l.length;c+=1)l[c].call(n,u,f,s,o,a);p=f+=s}!a.disableImageHead&&p>6&&(d.slice?o.imageHead=d.slice(0,p):o.imageHead=new Uint8Array(d).subarray(0,p))}else console.log("Invalid JPEG file: Missing JPEG marker.");i(o)},"readAsArrayBuffer")||i(o)},e.hasMetaOption=function(e){return e&&e.meta};var i=e.transform;e.transform=function(t,a,o,n,r){e.hasMetaOption(a)?e.parseMetaData(n,function(r){i.call(e,t,a,o,n,r)},a,r):i.apply(e,arguments)}}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-meta"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-meta")):e(window.loadImage)}(function(e){"use strict";"undefined"!=typeof fetch&&"undefined"!=typeof Request&&(e.fetchBlob=function(t,i,a){if(e.hasMetaOption(a))return fetch(new Request(t,a)).then(function(e){return e.blob()}).then(i).catch(function(e){console.log(e),i()});i()})}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-scale","./load-image-meta"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-scale"),require("./load-image-meta")):e(window.loadImage)}(function(e){"use strict";var t=e.hasCanvasOption,i=e.hasMetaOption,a=e.transformCoordinates,o=e.getTransformedOptions;e.hasCanvasOption=function(i){return!!i.orientation||t.call(e,i)},e.hasMetaOption=function(t){return t&&!0===t.orientation||i.call(e,t)},e.transformCoordinates=function(t,i){a.call(e,t,i);var o=t.getContext("2d"),n=t.width,r=t.height,s=t.style.width,l=t.style.height,c=i.orientation;if(c&&!(c>8))switch(c>4&&(t.width=r,t.height=n,t.style.width=l,t.style.height=s),c){case 2:o.translate(n,0),o.scale(-1,1);break;case 3:o.translate(n,r),o.rotate(Math.PI);break;case 4:o.translate(0,r),o.scale(1,-1);break;case 5:o.rotate(.5*Math.PI),o.scale(1,-1);break;case 6:o.rotate(.5*Math.PI),o.translate(0,-r);break;case 7:o.rotate(.5*Math.PI),o.translate(n,-r),o.scale(-1,1);break;case 8:o.rotate(-.5*Math.PI),o.translate(-n,0)}},e.getTransformedOptions=function(t,i,a){var n,r,s=o.call(e,t,i),l=s.orientation;if(!0===l&&a&&a.exif&&(l=a.exif.get("Orientation")),!l||l>8||1===l)return s;n={};for(r in s)s.hasOwnProperty(r)&&(n[r]=s[r]);switch(n.orientation=l,l){case 2:n.left=s.right,n.right=s.left;break;case 3:n.left=s.right,n.top=s.bottom,n.right=s.left,n.bottom=s.top;break;case 4:n.top=s.bottom,n.bottom=s.top;break;case 5:n.left=s.top,n.top=s.left,n.right=s.bottom,n.bottom=s.right;break;case 6:n.left=s.top,n.top=s.right,n.right=s.bottom,n.bottom=s.left;break;case 7:n.left=s.bottom,n.top=s.right,n.right=s.top,n.bottom=s.left;break;case 8:n.left=s.bottom,n.top=s.left,n.right=s.top,n.bottom=s.right}return n.orientation>4&&(n.maxWidth=s.maxHeight,n.maxHeight=s.maxWidth,n.minWidth=s.minHeight,n.minHeight=s.minWidth,n.sourceWidth=s.sourceHeight,n.sourceHeight=s.sourceWidth),n}}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-meta"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-meta")):e(window.loadImage)}(function(e){"use strict";e.ExifMap=function(){return this},e.ExifMap.prototype.map={Orientation:274},e.ExifMap.prototype.get=function(e){return this[e]||this[this.map[e]]},e.getExifThumbnail=function(t,i,a){if(a&&!(i+a>t.byteLength))return e.createObjectURL(new Blob([t.buffer.slice(i,i+a)]));console.log("Invalid Exif data: Invalid thumbnail data.")},e.exifTagTypes={1:{getValue:function(e,t){return e.getUint8(t)},size:1},2:{getValue:function(e,t){return String.fromCharCode(e.getUint8(t))},size:1,ascii:!0},3:{getValue:function(e,t,i){return e.getUint16(t,i)},size:2},4:{getValue:function(e,t,i){return e.getUint32(t,i)},size:4},5:{getValue:function(e,t,i){return e.getUint32(t,i)/e.getUint32(t+4,i)},size:8},9:{getValue:function(e,t,i){return e.getInt32(t,i)},size:4},10:{getValue:function(e,t,i){return e.getInt32(t,i)/e.getInt32(t+4,i)},size:8}},e.exifTagTypes[7]=e.exifTagTypes[1],e.getExifValue=function(t,i,a,o,n,r){var s,l,c,d,u,f,g=e.exifTagTypes[o];if(g){if(s=g.size*n,!((l=s>4?i+t.getUint32(a+8,r):a+8)+s>t.byteLength)){if(1===n)return g.getValue(t,l,r);for(c=[],d=0;d<n;d+=1)c[d]=g.getValue(t,l+d*g.size,r);if(g.ascii){for(u="",d=0;d<c.length&&"\0"!==(f=c[d]);d+=1)u+=f;return u}return c}console.log("Invalid Exif data: Invalid data offset.")}else console.log("Invalid Exif data: Invalid tag type.")},e.parseExifTag=function(t,i,a,o,n){var r=t.getUint16(a,o);n.exif[r]=e.getExifValue(t,i,a,t.getUint16(a+2,o),t.getUint32(a+4,o),o)},e.parseExifTags=function(e,t,i,a,o){var n,r,s;if(i+6>e.byteLength)console.log("Invalid Exif data: Invalid directory offset.");else{if(n=e.getUint16(i,a),!((r=i+2+12*n)+4>e.byteLength)){for(s=0;s<n;s+=1)this.parseExifTag(e,t,i+2+12*s,a,o);return e.getUint32(r,a)}console.log("Invalid Exif data: Invalid directory size.")}},e.parseExifData=function(t,i,a,o,n){if(!n.disableExif){var r,s,l,c=i+10;if(1165519206===t.getUint32(i+4))if(c+8>t.byteLength)console.log("Invalid Exif data: Invalid segment size.");else if(0===t.getUint16(i+8)){switch(t.getUint16(c)){case 18761:r=!0;break;case 19789:r=!1;break;default:return void console.log("Invalid Exif data: Invalid byte alignment marker.")}42===t.getUint16(c+2,r)?(s=t.getUint32(c+4,r),o.exif=new e.ExifMap,(s=e.parseExifTags(t,c,c+s,r,o))&&!n.disableExifThumbnail&&(l={exif:{}},s=e.parseExifTags(t,c,c+s,r,l),l.exif[513]&&(o.exif.Thumbnail=e.getExifThumbnail(t,c+l.exif[513],l.exif[514]))),o.exif[34665]&&!n.disableExifSub&&e.parseExifTags(t,c,c+o.exif[34665],r,o),o.exif[34853]&&!n.disableExifGps&&e.parseExifTags(t,c,c+o.exif[34853],r,o)):console.log("Invalid Exif data: Missing TIFF marker.")}else console.log("Invalid Exif data: Missing byte alignment offset.")}},e.metaDataParsers.jpeg[65505].push(e.parseExifData)}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-exif"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-exif")):e(window.loadImage)}(function(e){"use strict";e.ExifMap.prototype.tags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright",36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",42240:"Gamma",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubSecTime",37521:"SubSecTimeOriginal",37522:"SubSecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"PhotographicSensitivity",34856:"OECF",34864:"SensitivityType",34865:"StandardOutputSensitivity",34866:"RecommendedExposureIndex",34867:"ISOSpeed",34868:"ISOSpeedLatitudeyyy",34869:"ISOSpeedLatitudezzz",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRatio",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",42016:"ImageUniqueID",42032:"CameraOwnerName",42033:"BodySerialNumber",42034:"LensSpecification",42035:"LensMake",42036:"LensModel",42037:"LensSerialNumber",0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential",31:"GPSHPositioningError"},e.ExifMap.prototype.stringValues={ExposureProgram:{0:"Undefined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Undefined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},ComponentsConfiguration:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"},Orientation:{1:"top-left",2:"top-right",3:"bottom-right",4:"bottom-left",5:"left-top",6:"right-top",7:"right-bottom",8:"left-bottom"}},e.ExifMap.prototype.getText=function(e){var t=this.get(e);switch(e){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":case"Orientation":return this.stringValues[e][t];case"ExifVersion":case"FlashpixVersion":if(!t)return;return String.fromCharCode(t[0],t[1],t[2],t[3]);case"ComponentsConfiguration":if(!t)return;return this.stringValues[e][t[0]]+this.stringValues[e][t[1]]+this.stringValues[e][t[2]]+this.stringValues[e][t[3]];case"GPSVersionID":if(!t)return;return t[0]+"."+t[1]+"."+t[2]+"."+t[3]}return String(t)},function(e){var t,i=e.tags,a=e.map;for(t in i)i.hasOwnProperty(t)&&(a[i[t]]=t)}(e.ExifMap.prototype),e.ExifMap.prototype.getAll=function(){var e,t,i={};for(e in this)this.hasOwnProperty(e)&&(t=this.tags[e])&&(i[t]=this.getText(t));return i}}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-meta"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-meta")):e(window.loadImage)}(function(e){"use strict";e.IptcMap=function(){return this},e.IptcMap.prototype.map={ObjectName:5},e.IptcMap.prototype.get=function(e){return this[e]||this[this.map[e]]},e.parseIptcTags=function(e,t,i,a){for(var o,n,r=t;r<t+i;)28===e.getUint8(r)&&2===e.getUint8(r+1)&&(n=e.getUint8(r+2))in a.iptc.tags&&(o=function(e,t,i){for(var a="",o=t;o<t+i;o++)a+=String.fromCharCode(e.getUint8(o));return a}(e,r+5,e.getInt16(r+3)),a.iptc.hasOwnProperty(n)?a.iptc[n]instanceof Array?a.iptc[n].push(o):a.iptc[n]=[a.iptc[n],o]:a.iptc[n]=o),r++},e.parseIptcData=function(t,i,a,o,n){if(!n.disableIptc){for(var r=i+a;i+8<r;){if(function(e,t){return 943868237===e.getUint32(t)&&1028===e.getUint16(t+4)}(t,i)){var s=t.getUint8(i+7);s%2!=0&&(s+=1),0===s&&(s=4);var l=i+8+s;if(l>r){console.log("Invalid IPTC data: Invalid segment offset.");break}var c=t.getUint16(i+6+s);if(i+c>r){console.log("Invalid IPTC data: Invalid segment size.");break}return o.iptc=new e.IptcMap,e.parseIptcTags(t,l,c,o)}i++}console.log("No IPTC data at this offset - could be XMP")}},e.metaDataParsers.jpeg[65517].push(e.parseIptcData)}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-iptc"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-iptc")):e(window.loadImage)}(function(e){"use strict";e.IptcMap.prototype.tags={3:"ObjectType",4:"ObjectAttribute",5:"ObjectName",7:"EditStatus",8:"EditorialUpdate",10:"Urgency",12:"SubjectRef",15:"Category",20:"SupplCategory",22:"FixtureID",25:"Keywords",26:"ContentLocCode",27:"ContentLocName",30:"ReleaseDate",35:"ReleaseTime",37:"ExpirationDate",38:"ExpirationTime",40:"SpecialInstructions",42:"ActionAdvised",45:"RefService",47:"RefDate",50:"RefNumber",55:"DateCreated",60:"TimeCreated",62:"DigitalCreationDate",63:"DigitalCreationTime",65:"OriginatingProgram",70:"ProgramVersion",75:"ObjectCycle",80:"Byline",85:"BylineTitle",90:"City",92:"Sublocation",95:"State",100:"CountryCode",101:"CountryName",103:"OrigTransRef",105:"Headline",110:"Credit",115:"Source",116:"CopyrightNotice",118:"Contact",120:"Caption",122:"WriterEditor",130:"ImageType",131:"ImageOrientation",135:"LanguageID"},e.IptcMap.prototype.getText=function(e){var t=this.get(e);return String(t)},function(e){var t,i=e.tags,a=e.map||{};for(t in i)i.hasOwnProperty(t)&&(a[i[t]]=t)}(e.IptcMap.prototype),e.IptcMap.prototype.getAll=function(){var e,t,i={};for(e in this)this.hasOwnProperty(e)&&(t=this.tags[e])&&(i[t]=this.getText(t));return i}});
|
2
|
-
//# sourceMappingURL=load-image.all.min.js.map
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudinary
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.24.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nadav Soferman
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-12-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: aws_cf_signer
|