panda-editor 0.3.0 → 0.5.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 +25 -0
- data/README.md +24 -0
- data/app/services/panda/editor/html_to_editor_js_converter.rb +68 -68
- data/config/importmap.rb +9 -9
- data/docs/FOOTNOTES.md +51 -2
- data/lib/panda/editor/asset_loader.rb +30 -32
- data/lib/panda/editor/blocks/alert.rb +10 -10
- data/lib/panda/editor/blocks/base.rb +1 -1
- data/lib/panda/editor/blocks/header.rb +2 -2
- data/lib/panda/editor/blocks/image.rb +11 -11
- data/lib/panda/editor/blocks/list.rb +5 -5
- data/lib/panda/editor/blocks/paragraph.rb +10 -10
- data/lib/panda/editor/blocks/quote.rb +6 -6
- data/lib/panda/editor/blocks/table.rb +6 -6
- data/lib/panda/editor/content.rb +8 -8
- data/lib/panda/editor/engine.rb +7 -9
- data/lib/panda/editor/footnote_registry.rb +48 -6
- data/lib/panda/editor/renderer.rb +33 -32
- data/lib/panda/editor/version.rb +1 -1
- data/lib/panda/editor.rb +14 -14
- data/lib/tasks/assets.rake +28 -28
- data/panda-editor.gemspec +23 -22
- metadata +29 -18
data/lib/tasks/assets.rake
CHANGED
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
namespace :panda_editor do
|
|
4
4
|
namespace :assets do
|
|
5
|
-
desc
|
|
5
|
+
desc 'Compile Panda Editor assets for production'
|
|
6
6
|
task compile: :environment do
|
|
7
|
-
require
|
|
7
|
+
require 'fileutils'
|
|
8
8
|
|
|
9
|
-
puts
|
|
9
|
+
puts 'Compiling Panda Editor assets...'
|
|
10
10
|
|
|
11
11
|
# Create temporary directory for assets
|
|
12
|
-
tmp_dir = Rails.root.join(
|
|
12
|
+
tmp_dir = Rails.root.join('tmp', 'panda_editor_assets')
|
|
13
13
|
FileUtils.mkdir_p(tmp_dir)
|
|
14
14
|
|
|
15
15
|
# Get version from gem
|
|
@@ -22,51 +22,51 @@ namespace :panda_editor do
|
|
|
22
22
|
compile_css(tmp_dir, version)
|
|
23
23
|
|
|
24
24
|
# Copy to public directory
|
|
25
|
-
public_dir = Rails.root.join(
|
|
25
|
+
public_dir = Rails.root.join('public', 'panda-editor-assets')
|
|
26
26
|
FileUtils.mkdir_p(public_dir)
|
|
27
|
-
FileUtils.cp_r(Dir.glob(tmp_dir.join(
|
|
27
|
+
FileUtils.cp_r(Dir.glob(tmp_dir.join('*')), public_dir)
|
|
28
28
|
|
|
29
|
-
puts
|
|
29
|
+
puts '✅ Assets compiled successfully'
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
desc
|
|
32
|
+
desc 'Download Panda Editor assets from GitHub'
|
|
33
33
|
task download: :environment do
|
|
34
|
-
require
|
|
34
|
+
require 'panda/editor/asset_loader'
|
|
35
35
|
|
|
36
|
-
puts
|
|
36
|
+
puts 'Downloading Panda Editor assets from GitHub...'
|
|
37
37
|
Panda::Editor::AssetLoader.send(:download_assets_from_github)
|
|
38
|
-
puts
|
|
38
|
+
puts '✅ Assets downloaded successfully'
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
desc
|
|
41
|
+
desc 'Upload compiled assets to GitHub release'
|
|
42
42
|
task upload: :environment do
|
|
43
|
-
require
|
|
44
|
-
require
|
|
43
|
+
require 'net/http'
|
|
44
|
+
require 'json'
|
|
45
45
|
|
|
46
|
-
puts
|
|
46
|
+
puts 'Uploading Panda Editor assets to GitHub release...'
|
|
47
47
|
|
|
48
48
|
# This task would be run in CI to upload compiled assets
|
|
49
49
|
# to the GitHub release when a new version is tagged
|
|
50
50
|
|
|
51
|
-
version = ENV[
|
|
52
|
-
token = ENV[
|
|
51
|
+
version = ENV['GITHUB_REF_NAME'] || "v#{Panda::Editor::VERSION}"
|
|
52
|
+
token = ENV['GITHUB_TOKEN']
|
|
53
53
|
|
|
54
54
|
unless token
|
|
55
|
-
puts
|
|
55
|
+
puts '❌ GITHUB_TOKEN environment variable required'
|
|
56
56
|
exit 1
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
# Find compiled assets
|
|
60
|
-
assets_dir = Rails.root.join(
|
|
61
|
-
js_file = Dir.glob(assets_dir.join(
|
|
62
|
-
css_file = Dir.glob(assets_dir.join(
|
|
60
|
+
assets_dir = Rails.root.join('public', 'panda-editor-assets')
|
|
61
|
+
js_file = Dir.glob(assets_dir.join('panda-editor-*.js')).first
|
|
62
|
+
css_file = Dir.glob(assets_dir.join('panda-editor-*.css')).first
|
|
63
63
|
|
|
64
64
|
if js_file && css_file
|
|
65
65
|
upload_to_release(js_file, version, token)
|
|
66
66
|
upload_to_release(css_file, version, token)
|
|
67
|
-
puts
|
|
67
|
+
puts '✅ Assets uploaded successfully'
|
|
68
68
|
else
|
|
69
|
-
puts
|
|
69
|
+
puts '❌ Compiled assets not found'
|
|
70
70
|
exit 1
|
|
71
71
|
end
|
|
72
72
|
end
|
|
@@ -74,9 +74,9 @@ namespace :panda_editor do
|
|
|
74
74
|
private
|
|
75
75
|
|
|
76
76
|
def compile_javascript(tmp_dir, version)
|
|
77
|
-
puts
|
|
77
|
+
puts ' Compiling JavaScript...'
|
|
78
78
|
|
|
79
|
-
js_files = Dir.glob(Panda::Editor::Engine.root.join(
|
|
79
|
+
js_files = Dir.glob(Panda::Editor::Engine.root.join('app/javascript/panda/editor/**/*.js'))
|
|
80
80
|
|
|
81
81
|
output = js_files.map { |file| File.read(file) }.join("\n\n")
|
|
82
82
|
|
|
@@ -88,9 +88,9 @@ namespace :panda_editor do
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
def compile_css(tmp_dir, version)
|
|
91
|
-
puts
|
|
91
|
+
puts ' Compiling CSS...'
|
|
92
92
|
|
|
93
|
-
css_files = Dir.glob(Panda::Editor::Engine.root.join(
|
|
93
|
+
css_files = Dir.glob(Panda::Editor::Engine.root.join('app/assets/stylesheets/panda/editor/**/*.css'))
|
|
94
94
|
|
|
95
95
|
output = css_files.map { |file| File.read(file) }.join("\n\n")
|
|
96
96
|
|
|
@@ -101,7 +101,7 @@ namespace :panda_editor do
|
|
|
101
101
|
File.write(tmp_dir.join("panda-editor-#{version}.css"), output)
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
-
def upload_to_release(file,
|
|
104
|
+
def upload_to_release(file, _version, _token)
|
|
105
105
|
# Implementation would upload to GitHub release
|
|
106
106
|
# This is a placeholder for the actual upload logic
|
|
107
107
|
puts " Uploading #{File.basename(file)}..."
|
data/panda-editor.gemspec
CHANGED
|
@@ -1,42 +1,43 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative
|
|
3
|
+
require_relative 'lib/panda/editor/version'
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name =
|
|
6
|
+
spec.name = 'panda-editor'
|
|
7
7
|
spec.version = Panda::Editor::VERSION
|
|
8
|
-
spec.authors = [
|
|
9
|
-
spec.email = [
|
|
8
|
+
spec.authors = ['Otaina Limited', 'James Inman']
|
|
9
|
+
spec.email = ['james@otaina.co.uk']
|
|
10
10
|
|
|
11
|
-
spec.summary =
|
|
12
|
-
spec.description =
|
|
13
|
-
spec.homepage =
|
|
14
|
-
spec.license =
|
|
15
|
-
spec.required_ruby_version =
|
|
11
|
+
spec.summary = 'EditorJS integration for Rails applications'
|
|
12
|
+
spec.description = 'A modular, extensible rich text editor using EditorJS for Rails applications. Extracted from Panda CMS.'
|
|
13
|
+
spec.homepage = 'https://github.com/tastybamboo/panda-editor'
|
|
14
|
+
spec.license = 'BSD-3-Clause'
|
|
15
|
+
spec.required_ruby_version = '>= 3.2.0'
|
|
16
16
|
|
|
17
|
-
spec.metadata[
|
|
18
|
-
spec.metadata[
|
|
19
|
-
spec.metadata[
|
|
20
|
-
spec.metadata[
|
|
17
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
|
18
|
+
spec.metadata['homepage_uri'] = spec.homepage
|
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/tastybamboo/panda-editor'
|
|
20
|
+
spec.metadata['changelog_uri'] = 'https://github.com/tastybamboo/panda-editor/blob/main/CHANGELOG.md'
|
|
21
21
|
|
|
22
22
|
spec.files = Dir.chdir(__dir__) do
|
|
23
23
|
`git ls-files -z`.split("\x0").reject do |f|
|
|
24
24
|
(File.expand_path(f) == __FILE__) ||
|
|
25
25
|
f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile]) ||
|
|
26
|
-
f.end_with?(
|
|
26
|
+
f.end_with?('.gem')
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
|
-
spec.bindir =
|
|
29
|
+
spec.bindir = 'exe'
|
|
30
30
|
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
|
31
|
-
spec.require_paths = [
|
|
31
|
+
spec.require_paths = ['lib']
|
|
32
32
|
|
|
33
33
|
# Rails dependencies
|
|
34
|
-
spec.add_dependency
|
|
35
|
-
spec.add_dependency
|
|
36
|
-
spec.add_dependency
|
|
34
|
+
spec.add_dependency 'dry-configurable', '~> 1.0'
|
|
35
|
+
spec.add_dependency 'rails', '>= 7.1'
|
|
36
|
+
spec.add_dependency 'redcarpet', '~> 3.6'
|
|
37
|
+
spec.add_dependency 'sanitize', '~> 6.0'
|
|
37
38
|
|
|
38
39
|
# Development dependencies
|
|
39
|
-
spec.add_development_dependency
|
|
40
|
-
spec.add_development_dependency
|
|
41
|
-
spec.add_development_dependency
|
|
40
|
+
spec.add_development_dependency 'factory_bot_rails', '~> 6.2'
|
|
41
|
+
spec.add_development_dependency 'rspec-rails', '~> 6.0'
|
|
42
|
+
spec.add_development_dependency 'standard', '>= 1.35.1'
|
|
42
43
|
end
|
metadata
CHANGED
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: panda-editor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Otaina Limited
|
|
8
8
|
- James Inman
|
|
9
|
-
autorequire:
|
|
10
9
|
bindir: exe
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date:
|
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: dry-configurable
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.0'
|
|
14
27
|
- !ruby/object:Gem::Dependency
|
|
15
28
|
name: rails
|
|
16
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -26,61 +39,61 @@ dependencies:
|
|
|
26
39
|
- !ruby/object:Gem::Version
|
|
27
40
|
version: '7.1'
|
|
28
41
|
- !ruby/object:Gem::Dependency
|
|
29
|
-
name:
|
|
42
|
+
name: redcarpet
|
|
30
43
|
requirement: !ruby/object:Gem::Requirement
|
|
31
44
|
requirements:
|
|
32
45
|
- - "~>"
|
|
33
46
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '6
|
|
47
|
+
version: '3.6'
|
|
35
48
|
type: :runtime
|
|
36
49
|
prerelease: false
|
|
37
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
51
|
requirements:
|
|
39
52
|
- - "~>"
|
|
40
53
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: '6
|
|
54
|
+
version: '3.6'
|
|
42
55
|
- !ruby/object:Gem::Dependency
|
|
43
|
-
name:
|
|
56
|
+
name: sanitize
|
|
44
57
|
requirement: !ruby/object:Gem::Requirement
|
|
45
58
|
requirements:
|
|
46
59
|
- - "~>"
|
|
47
60
|
- !ruby/object:Gem::Version
|
|
48
|
-
version: '
|
|
61
|
+
version: '6.0'
|
|
49
62
|
type: :runtime
|
|
50
63
|
prerelease: false
|
|
51
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
52
65
|
requirements:
|
|
53
66
|
- - "~>"
|
|
54
67
|
- !ruby/object:Gem::Version
|
|
55
|
-
version: '
|
|
68
|
+
version: '6.0'
|
|
56
69
|
- !ruby/object:Gem::Dependency
|
|
57
|
-
name:
|
|
70
|
+
name: factory_bot_rails
|
|
58
71
|
requirement: !ruby/object:Gem::Requirement
|
|
59
72
|
requirements:
|
|
60
73
|
- - "~>"
|
|
61
74
|
- !ruby/object:Gem::Version
|
|
62
|
-
version: '6.
|
|
75
|
+
version: '6.2'
|
|
63
76
|
type: :development
|
|
64
77
|
prerelease: false
|
|
65
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
66
79
|
requirements:
|
|
67
80
|
- - "~>"
|
|
68
81
|
- !ruby/object:Gem::Version
|
|
69
|
-
version: '6.
|
|
82
|
+
version: '6.2'
|
|
70
83
|
- !ruby/object:Gem::Dependency
|
|
71
|
-
name:
|
|
84
|
+
name: rspec-rails
|
|
72
85
|
requirement: !ruby/object:Gem::Requirement
|
|
73
86
|
requirements:
|
|
74
87
|
- - "~>"
|
|
75
88
|
- !ruby/object:Gem::Version
|
|
76
|
-
version: '6.
|
|
89
|
+
version: '6.0'
|
|
77
90
|
type: :development
|
|
78
91
|
prerelease: false
|
|
79
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
80
93
|
requirements:
|
|
81
94
|
- - "~>"
|
|
82
95
|
- !ruby/object:Gem::Version
|
|
83
|
-
version: '6.
|
|
96
|
+
version: '6.0'
|
|
84
97
|
- !ruby/object:Gem::Dependency
|
|
85
98
|
name: standard
|
|
86
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -147,7 +160,6 @@ metadata:
|
|
|
147
160
|
homepage_uri: https://github.com/tastybamboo/panda-editor
|
|
148
161
|
source_code_uri: https://github.com/tastybamboo/panda-editor
|
|
149
162
|
changelog_uri: https://github.com/tastybamboo/panda-editor/blob/main/CHANGELOG.md
|
|
150
|
-
post_install_message:
|
|
151
163
|
rdoc_options: []
|
|
152
164
|
require_paths:
|
|
153
165
|
- lib
|
|
@@ -162,8 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
162
174
|
- !ruby/object:Gem::Version
|
|
163
175
|
version: '0'
|
|
164
176
|
requirements: []
|
|
165
|
-
rubygems_version: 3.
|
|
166
|
-
signing_key:
|
|
177
|
+
rubygems_version: 3.7.2
|
|
167
178
|
specification_version: 4
|
|
168
179
|
summary: EditorJS integration for Rails applications
|
|
169
180
|
test_files: []
|