xlsxrb 0.1.11 → 0.1.13

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.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +86 -34
  3. data/README.md +26 -21
  4. data/lib/xlsxrb/chart_builder.rb +18 -18
  5. data/lib/xlsxrb/dsl_helpers.rb +175 -0
  6. data/lib/xlsxrb/elements/cell.rb +56 -22
  7. data/lib/xlsxrb/elements/column.rb +27 -3
  8. data/lib/xlsxrb/elements/row.rb +27 -8
  9. data/lib/xlsxrb/elements/workbook.rb +27 -14
  10. data/lib/xlsxrb/elements/worksheet.rb +17 -1
  11. data/lib/xlsxrb/ooxml/cfb.rb +9 -6
  12. data/lib/xlsxrb/ooxml/crypto/agile.rb +5 -5
  13. data/lib/xlsxrb/ooxml/reader/listeners/core_listeners.rb +784 -0
  14. data/lib/xlsxrb/ooxml/reader/listeners/drawing_listeners.rb +3478 -0
  15. data/lib/xlsxrb/ooxml/reader/listeners/feature_listeners.rb +1796 -0
  16. data/lib/xlsxrb/ooxml/reader/listeners/style_listeners.rb +428 -0
  17. data/lib/xlsxrb/ooxml/reader/listeners.rb +4 -6446
  18. data/lib/xlsxrb/ooxml/shared_strings_parser.rb +3 -5
  19. data/lib/xlsxrb/ooxml/utils.rb +5 -6
  20. data/lib/xlsxrb/ooxml/workbook_writer.rb +5 -7
  21. data/lib/xlsxrb/ooxml/worksheet_parser.rb +172 -9
  22. data/lib/xlsxrb/ooxml/writer/drawing_xml.rb +1602 -0
  23. data/lib/xlsxrb/ooxml/writer/features_xml.rb +731 -0
  24. data/lib/xlsxrb/ooxml/writer/styles_xml.rb +348 -0
  25. data/lib/xlsxrb/ooxml/writer.rb +9 -2646
  26. data/lib/xlsxrb/ooxml/xml_builder.rb +31 -2
  27. data/lib/xlsxrb/ooxml/zip_generator.rb +26 -5
  28. data/lib/xlsxrb/ooxml/zip_reader.rb +364 -78
  29. data/lib/xlsxrb/ooxml/zip_writer.rb +32 -5
  30. data/lib/xlsxrb/stream_sheet.rb +94 -6
  31. data/lib/xlsxrb/stream_writer.rb +48 -115
  32. data/lib/xlsxrb/style_builder.rb +10 -1
  33. data/lib/xlsxrb/version.rb +1 -1
  34. data/lib/xlsxrb/workbook_builder.rb +1 -1
  35. data/lib/xlsxrb/worksheet_builder.rb +19 -81
  36. data/lib/xlsxrb.rb +449 -171
  37. data/sig/generated/xlsxrb/chart_builder.rbs +36 -36
  38. data/sig/generated/xlsxrb/dsl_helpers.rbs +92 -0
  39. data/sig/generated/xlsxrb/elements/cell.rbs +29 -0
  40. data/sig/generated/xlsxrb/elements/column.rbs +32 -21
  41. data/sig/generated/xlsxrb/elements/row.rbs +94 -14
  42. data/sig/generated/xlsxrb/elements/workbook.rbs +102 -10
  43. data/sig/generated/xlsxrb/elements/worksheet.rbs +9 -0
  44. data/sig/generated/xlsxrb/ooxml/reader/listeners/core_listeners.rbs +173 -0
  45. data/sig/generated/xlsxrb/ooxml/reader/listeners/drawing_listeners.rbs +400 -0
  46. data/sig/generated/xlsxrb/ooxml/reader/listeners/feature_listeners.rbs +442 -0
  47. data/sig/generated/xlsxrb/ooxml/reader/listeners/style_listeners.rbs +80 -0
  48. data/sig/generated/xlsxrb/ooxml/reader/listeners.rbs +0 -1072
  49. data/sig/generated/xlsxrb/ooxml/shared_strings_parser.rbs +0 -2
  50. data/sig/generated/xlsxrb/ooxml/utils.rbs +2 -0
  51. data/sig/generated/xlsxrb/ooxml/worksheet_parser.rbs +5 -4
  52. data/sig/generated/xlsxrb/ooxml/writer/drawing_xml.rbs +79 -0
  53. data/sig/generated/xlsxrb/ooxml/writer/features_xml.rbs +83 -0
  54. data/sig/generated/xlsxrb/ooxml/writer/styles_xml.rbs +53 -0
  55. data/sig/generated/xlsxrb/ooxml/writer.rbs +6 -185
  56. data/sig/generated/xlsxrb/ooxml/xml_builder.rbs +18 -0
  57. data/sig/generated/xlsxrb/ooxml/zip_generator.rbs +15 -0
  58. data/sig/generated/xlsxrb/ooxml/zip_reader.rbs +96 -8
  59. data/sig/generated/xlsxrb/ooxml/zip_writer.rbs +5 -1
  60. data/sig/generated/xlsxrb/stream_sheet.rbs +43 -3
  61. data/sig/generated/xlsxrb/style_builder.rbs +7 -0
  62. data/sig/generated/xlsxrb.rbs +18 -11
  63. metadata +22 -144
  64. data/.devcontainer/Dockerfile +0 -65
  65. data/.devcontainer/devcontainer.json +0 -17
  66. data/.gem_rbs_collection/ast/2.4/.rbs_meta.yaml +0 -9
  67. data/.gem_rbs_collection/ast/2.4/ast.rbs +0 -73
  68. data/.gem_rbs_collection/concurrent-ruby/1.1/.rbs_meta.yaml +0 -9
  69. data/.gem_rbs_collection/concurrent-ruby/1.1/array.rbs +0 -4
  70. data/.gem_rbs_collection/concurrent-ruby/1.1/atomic_reference.rbs +0 -16
  71. data/.gem_rbs_collection/concurrent-ruby/1.1/executor.rbs +0 -96
  72. data/.gem_rbs_collection/concurrent-ruby/1.1/hash.rbs +0 -4
  73. data/.gem_rbs_collection/concurrent-ruby/1.1/map.rbs +0 -68
  74. data/.gem_rbs_collection/concurrent-ruby/1.1/promises.rbs +0 -249
  75. data/.gem_rbs_collection/concurrent-ruby/1.1/set.rbs +0 -4
  76. data/.gem_rbs_collection/concurrent-ruby/1.1/timer_task.rbs +0 -47
  77. data/.gem_rbs_collection/concurrent-ruby/1.1/utility/processor_counter.rbs +0 -5
  78. data/.gem_rbs_collection/csv/3.3/.rbs_meta.yaml +0 -9
  79. data/.gem_rbs_collection/csv/3.3/csv.rbs +0 -3871
  80. data/.gem_rbs_collection/csv/3.3/manifest.yaml +0 -3
  81. data/.gem_rbs_collection/lint_roller/1.1/.rbs_meta.yaml +0 -9
  82. data/.gem_rbs_collection/lint_roller/1.1/lint_roller.rbs +0 -48
  83. data/.gem_rbs_collection/listen/3.9/.rbs_meta.yaml +0 -9
  84. data/.gem_rbs_collection/listen/3.9/listen.rbs +0 -25
  85. data/.gem_rbs_collection/listen/3.9/listener.rbs +0 -24
  86. data/.gem_rbs_collection/logger/1.7/.rbs_meta.yaml +0 -9
  87. data/.gem_rbs_collection/logger/1.7/formatter.rbs +0 -45
  88. data/.gem_rbs_collection/logger/1.7/log_device.rbs +0 -100
  89. data/.gem_rbs_collection/logger/1.7/logger.rbs +0 -796
  90. data/.gem_rbs_collection/logger/1.7/manifest.yaml +0 -2
  91. data/.gem_rbs_collection/logger/1.7/period.rbs +0 -17
  92. data/.gem_rbs_collection/logger/1.7/severity.rbs +0 -34
  93. data/.gem_rbs_collection/nokogiri/1.11/.rbs_meta.yaml +0 -9
  94. data/.gem_rbs_collection/nokogiri/1.11/nokogiri.rbs +0 -2332
  95. data/.gem_rbs_collection/nokogiri/1.11/patch.rbs +0 -4
  96. data/.gem_rbs_collection/parallel/1.20/.rbs_meta.yaml +0 -9
  97. data/.gem_rbs_collection/parallel/1.20/parallel.rbs +0 -86
  98. data/.gem_rbs_collection/parser/3.2/.rbs_meta.yaml +0 -9
  99. data/.gem_rbs_collection/parser/3.2/manifest.yaml +0 -7
  100. data/.gem_rbs_collection/parser/3.2/parser.rbs +0 -194
  101. data/.gem_rbs_collection/parser/3.2/polyfill.rbs +0 -4
  102. data/.gem_rbs_collection/rainbow/3.0/.rbs_meta.yaml +0 -9
  103. data/.gem_rbs_collection/rainbow/3.0/global.rbs +0 -7
  104. data/.gem_rbs_collection/rainbow/3.0/presenter.rbs +0 -209
  105. data/.gem_rbs_collection/rainbow/3.0/rainbow.rbs +0 -5
  106. data/.gem_rbs_collection/rake/13.0/.rbs_meta.yaml +0 -9
  107. data/.gem_rbs_collection/rake/13.0/manifest.yaml +0 -2
  108. data/.gem_rbs_collection/rake/13.0/rake.rbs +0 -39
  109. data/.gem_rbs_collection/regexp_parser/2.8/.rbs_meta.yaml +0 -9
  110. data/.gem_rbs_collection/regexp_parser/2.8/regexp_parser.rbs +0 -17
  111. data/.gem_rbs_collection/rubocop/1.57/.rbs_meta.yaml +0 -9
  112. data/.gem_rbs_collection/rubocop/1.57/rubocop.rbs +0 -208
  113. data/.gem_rbs_collection/rubocop-ast/1.46/.rbs_meta.yaml +0 -9
  114. data/.gem_rbs_collection/rubocop-ast/1.46/rubocop-ast.rbs +0 -903
  115. data/.gem_rbs_collection/rubyzip/3.2/.rbs_meta.yaml +0 -9
  116. data/.gem_rbs_collection/rubyzip/3.2/manifest.yaml +0 -8
  117. data/.gem_rbs_collection/rubyzip/3.2/zip/central_directory.rbs +0 -42
  118. data/.gem_rbs_collection/rubyzip/3.2/zip/compressor.rbs +0 -5
  119. data/.gem_rbs_collection/rubyzip/3.2/zip/constants.rbs +0 -47
  120. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/aes_encryption.rbs +0 -30
  121. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/decrypted_io.rbs +0 -9
  122. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/encryption.rbs +0 -7
  123. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/null_encryption.rbs +0 -19
  124. data/.gem_rbs_collection/rubyzip/3.2/zip/crypto/traditional_encryption.rbs +0 -31
  125. data/.gem_rbs_collection/rubyzip/3.2/zip/decompressor.rbs +0 -18
  126. data/.gem_rbs_collection/rubyzip/3.2/zip/deflater.rbs +0 -12
  127. data/.gem_rbs_collection/rubyzip/3.2/zip/dirtyable.rbs +0 -11
  128. data/.gem_rbs_collection/rubyzip/3.2/zip/dos_time.rbs +0 -13
  129. data/.gem_rbs_collection/rubyzip/3.2/zip/entry.rbs +0 -95
  130. data/.gem_rbs_collection/rubyzip/3.2/zip/entry_set.rbs +0 -31
  131. data/.gem_rbs_collection/rubyzip/3.2/zip/errors.rbs +0 -58
  132. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/aes.rbs +0 -24
  133. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/generic.rbs +0 -17
  134. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/ntfs.rbs +0 -23
  135. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/old_unix.rbs +0 -22
  136. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/universal_time.rbs +0 -30
  137. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/unix.rbs +0 -20
  138. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/unknown.rbs +0 -15
  139. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field/zip64.rbs +0 -26
  140. data/.gem_rbs_collection/rubyzip/3.2/zip/extra_field.rbs +0 -21
  141. data/.gem_rbs_collection/rubyzip/3.2/zip/file.rbs +0 -131
  142. data/.gem_rbs_collection/rubyzip/3.2/zip/file_split.rbs +0 -14
  143. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/dir.rbs +0 -33
  144. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/directory_iterator.rbs +0 -21
  145. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/file.rbs +0 -63
  146. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/file_stat.rbs +0 -55
  147. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem/zip_file_name_mapper.rbs +0 -35
  148. data/.gem_rbs_collection/rubyzip/3.2/zip/filesystem.rbs +0 -7
  149. data/.gem_rbs_collection/rubyzip/3.2/zip/inflater.rbs +0 -10
  150. data/.gem_rbs_collection/rubyzip/3.2/zip/input_stream.rbs +0 -22
  151. data/.gem_rbs_collection/rubyzip/3.2/zip/ioextras/abstract_input_stream.rbs +0 -29
  152. data/.gem_rbs_collection/rubyzip/3.2/zip/ioextras/abstract_output_stream.rbs +0 -17
  153. data/.gem_rbs_collection/rubyzip/3.2/zip/ioextras.rbs +0 -13
  154. data/.gem_rbs_collection/rubyzip/3.2/zip/null_compressor.rbs +0 -10
  155. data/.gem_rbs_collection/rubyzip/3.2/zip/null_decompressor.rbs +0 -8
  156. data/.gem_rbs_collection/rubyzip/3.2/zip/null_input_stream.rbs +0 -6
  157. data/.gem_rbs_collection/rubyzip/3.2/zip/output_stream.rbs +0 -30
  158. data/.gem_rbs_collection/rubyzip/3.2/zip/pass_thru_compressor.rbs +0 -10
  159. data/.gem_rbs_collection/rubyzip/3.2/zip/pass_thru_decompressor.rbs +0 -10
  160. data/.gem_rbs_collection/rubyzip/3.2/zip/streamable_directory.rbs +0 -5
  161. data/.gem_rbs_collection/rubyzip/3.2/zip/streamable_stream.rbs +0 -15
  162. data/.gem_rbs_collection/rubyzip/3.2/zip/version.rbs +0 -3
  163. data/.gem_rbs_collection/rubyzip/3.2/zip.rbs +0 -40
  164. data/Rakefile +0 -567
  165. data/Steepfile +0 -18
  166. data/benchmark.rb +0 -406
  167. data/docs/ARCHITECTURE.md +0 -514
  168. data/docs/DEVELOPMENT.md +0 -133
  169. data/docs/PEER_LIBRARIES.md +0 -121
  170. data/docs/QUALITY_ASSURANCE.md +0 -25
  171. data/docs/SPEC_SOURCES.md +0 -48
  172. data/docs/assets/benchmark_results.svg +0 -144
  173. data/docs/assets/lsp_autocompletion.png +0 -0
  174. data/docs/assets/playground_preview.png +0 -0
  175. data/docs/coi-serviceworker.js +0 -82
  176. data/docs/office_thread.js +0 -77
  177. data/docs/preview.html +0 -719
  178. data/docs/visual/VisualGallery.md +0 -4672
  179. data/docs/wasm/ruby.wasm +0 -0
  180. data/docs/wasm/wasm_doc_helper.css +0 -351
  181. data/docs/wasm/wasm_doc_helper.js +0 -439
  182. data/docs/zeta.js +0 -1107
  183. data/rbs_collection.lock.yaml +0 -252
  184. data/rbs_collection.yaml +0 -19
  185. data/vendor/sdk_runner/Program.cs +0 -93
  186. data/vendor/sdk_runner/sdk_runner.csproj +0 -13
data/docs/wasm/ruby.wasm DELETED
Binary file
@@ -1,351 +0,0 @@
1
- /* wasm_doc_helper.css */
2
- .wasm-playground-wrapper {
3
- margin: 1.5em 0;
4
- position: relative;
5
- }
6
-
7
- /* Quick Actions Button Bar */
8
- .wasm-quick-action-bar {
9
- display: flex;
10
- flex-wrap: wrap;
11
- gap: 8px;
12
- margin-bottom: 12px;
13
- }
14
-
15
- .wasm-quick-btn {
16
- display: inline-flex;
17
- align-items: center;
18
- justify-content: center;
19
- padding: 8px 16px;
20
- font-size: 13px;
21
- font-weight: 600;
22
- font-family: inherit; /* Inherit font-family from RDoc/Aliki theme */
23
- border-radius: 6px;
24
- cursor: pointer;
25
- transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
26
- outline: none;
27
- border: 1px solid transparent;
28
- }
29
-
30
- /* 1. Live Preview Button: High-visibility Accent Green */
31
- .wasm-quick-preview-btn {
32
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
33
- color: white !important;
34
- box-shadow: 0 4px 12px rgba(16, 185, 129, 0.25);
35
- }
36
-
37
- .wasm-quick-preview-btn:hover {
38
- background: linear-gradient(135deg, #059669 0%, #047857 100%);
39
- transform: translateY(-1px);
40
- box-shadow: 0 6px 16px rgba(16, 185, 129, 0.35);
41
- }
42
-
43
- /* 2. Edit Code Button: Sleek Indigo */
44
- .wasm-quick-edit-btn {
45
- background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);
46
- color: white !important;
47
- box-shadow: 0 4px 12px rgba(99, 102, 241, 0.25);
48
- }
49
-
50
- .wasm-quick-edit-btn:hover {
51
- background: linear-gradient(135deg, #4f46e5 0%, #3730a3 100%);
52
- transform: translateY(-1px);
53
- box-shadow: 0 6px 16px rgba(99, 102, 241, 0.35);
54
- }
55
-
56
- /* 3. Download XLSX Button: Clean slate style */
57
- .wasm-quick-download-btn {
58
- background-color: #ffffff;
59
- color: #475569 !important;
60
- border: 1px solid #e2e8f0;
61
- box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
62
- }
63
-
64
- .wasm-quick-download-btn:hover {
65
- background-color: #f8fafc;
66
- color: #0f172a !important;
67
- border-color: #cbd5e1;
68
- transform: translateY(-1px);
69
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
70
- }
71
-
72
- .wasm-quick-btn:active {
73
- transform: translateY(1px);
74
- box-shadow: none;
75
- }
76
-
77
- /* Loader indicator */
78
- .wasm-loader {
79
- display: flex;
80
- align-items: center;
81
- gap: 12px;
82
- padding: 16px;
83
- background-color: #f3f4f6;
84
- border: 1px solid #e5e7eb;
85
- border-radius: 8px;
86
- font-size: 14px;
87
- color: #374151;
88
- }
89
-
90
- .wasm-loader-text {
91
- font-weight: 500;
92
- }
93
-
94
- .wasm-spinner {
95
- width: 20px;
96
- height: 20px;
97
- border: 3px solid rgba(59, 130, 246, 0.2);
98
- border-top-color: #3b82f6;
99
- border-radius: 50%;
100
- animation: wasm-spin 0.8s linear infinite;
101
- }
102
-
103
- @keyframes wasm-spin {
104
- to { transform: rotate(360deg); }
105
- }
106
-
107
- /* Inline Editor Overlay and Wrapper */
108
- .wasm-playground-wrapper {
109
- position: relative;
110
- border: 1px solid #e2e8f0;
111
- border-radius: 8px;
112
- background-color: #f8fafc; /* Matches Aliki/RDoc tones */
113
- transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
114
- margin: 1.5em 0 8px 0;
115
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.02);
116
- cursor: text;
117
- }
118
-
119
- .wasm-playground-wrapper:hover {
120
- border-color: #cbd5e1;
121
- }
122
-
123
- .wasm-playground-wrapper:focus-within {
124
- border-color: #2563eb;
125
- box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
126
- background-color: #ffffff;
127
- }
128
-
129
- .wasm-inline-editor {
130
- background-color: transparent !important;
131
- color: transparent !important;
132
- caret-color: #2563eb !important; /* Indigo caret visible over transparent text */
133
- border: none !important;
134
- resize: none !important;
135
- outline: none !important;
136
- box-sizing: border-box !important;
137
- white-space: pre-wrap !important;
138
- word-wrap: break-word !important;
139
- overflow-wrap: break-word !important;
140
- overflow: hidden !important;
141
- }
142
-
143
- /* Reset Button Style */
144
- .wasm-quick-reset-btn {
145
- background-color: white;
146
- color: #64748b !important;
147
- border: 1px solid #e2e8f0;
148
- }
149
-
150
- .wasm-quick-reset-btn:hover {
151
- background-color: #f8fafc;
152
- color: #0f172a !important;
153
- border-color: #cbd5e1;
154
- }
155
-
156
- /* Ruby highlight custom classes override to align with Aliki theme */
157
- .wasm-playground-wrapper pre.ruby {
158
- background-color: transparent !important;
159
- border: none !important;
160
- padding: 16px !important;
161
- margin: 0 !important;
162
- white-space: pre-wrap !important;
163
- word-wrap: break-word !important;
164
- overflow-wrap: break-word !important;
165
- overflow: hidden !important;
166
- box-sizing: border-box !important;
167
- }
168
-
169
- /* Align inline bar styles */
170
- .wasm-quick-action-bar {
171
- display: flex;
172
- flex-wrap: wrap;
173
- gap: 8px;
174
- padding: 10px 16px;
175
- background-color: #f8fafc;
176
- border-top: 1px solid #e2e8f0;
177
- border-radius: 0 0 8px 8px;
178
- }
179
-
180
- /* Sliding Drawer Panel */
181
- .wasm-preview-drawer {
182
- position: fixed;
183
- top: 0;
184
- right: 0;
185
- bottom: 0;
186
- width: 50vw;
187
- max-width: 800px;
188
- min-width: 480px;
189
- background-color: #ffffff; /* Premium white background to match RDoc */
190
- border-left: 1px solid #e2e8f0;
191
- box-shadow: -8px 0 24px rgba(15, 23, 42, 0.08);
192
- z-index: 10000;
193
- display: flex;
194
- flex-direction: column;
195
- transform: translateX(100%);
196
- transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
197
- }
198
-
199
- .wasm-preview-drawer.open {
200
- transform: translateX(0);
201
- }
202
-
203
- /* Drawer Header */
204
- .drawer-header {
205
- display: flex;
206
- justify-content: space-between;
207
- align-items: center;
208
- padding: 16px 20px;
209
- background-color: #f8fafc;
210
- border-bottom: 1px solid #e2e8f0;
211
- }
212
-
213
- .drawer-title {
214
- color: #1e293b;
215
- font-size: 15px;
216
- font-weight: 600;
217
- }
218
-
219
- .drawer-close-btn {
220
- background: none;
221
- border: none;
222
- color: #64748b;
223
- font-size: 24px;
224
- cursor: pointer;
225
- line-height: 1;
226
- padding: 4px;
227
- transition: color 0.15s ease;
228
- }
229
-
230
- .drawer-close-btn:hover {
231
- color: #0f172a;
232
- }
233
-
234
- /* Drawer Body & IFrame */
235
- .drawer-body {
236
- flex: 1;
237
- overflow: hidden;
238
- position: relative;
239
- background-color: #ffffff;
240
- }
241
-
242
- .drawer-iframe {
243
- width: 100%;
244
- height: 100%;
245
- border: none;
246
- background-color: transparent;
247
- }
248
-
249
- /* ==========================================
250
- Dark Mode Support (RDoc data-theme="dark")
251
- ========================================== */
252
- [data-theme="dark"] .wasm-playground-wrapper {
253
- border-color: #334155;
254
- background-color: #0f172a;
255
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
256
- }
257
-
258
- [data-theme="dark"] .wasm-playground-wrapper:hover {
259
- border-color: #475569;
260
- }
261
-
262
- [data-theme="dark"] .wasm-playground-wrapper:focus-within {
263
- border-color: #3b82f6;
264
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.25);
265
- background-color: #020617;
266
- }
267
-
268
- [data-theme="dark"] .wasm-inline-editor {
269
- caret-color: #60a5fa !important;
270
- }
271
-
272
- [data-theme="dark"] .wasm-quick-action-bar {
273
- background-color: #1e293b;
274
- border-top: 1px solid #334155;
275
- }
276
-
277
- [data-theme="dark"] .wasm-quick-btn {
278
- background-color: #334155;
279
- color: #e2e8f0;
280
- border-color: #475569;
281
- }
282
-
283
- [data-theme="dark"] .wasm-quick-btn:hover {
284
- background-color: #475569;
285
- border-color: #64748b;
286
- color: #ffffff;
287
- }
288
-
289
- [data-theme="dark"] .wasm-quick-preview-btn {
290
- background-color: #064e3b;
291
- color: #6ee7b7;
292
- border-color: #047857;
293
- }
294
-
295
- [data-theme="dark"] .wasm-quick-preview-btn:hover {
296
- background-color: #047857;
297
- color: #ffffff;
298
- }
299
-
300
- [data-theme="dark"] .wasm-quick-download-btn {
301
- background-color: #334155;
302
- color: #cbd5e1 !important;
303
- border-color: #475569;
304
- }
305
-
306
- [data-theme="dark"] .wasm-quick-download-btn:hover {
307
- background-color: #475569;
308
- color: #ffffff !important;
309
- border-color: #cbd5e1;
310
- }
311
-
312
- [data-theme="dark"] .wasm-quick-reset-btn {
313
- background-color: #334155;
314
- color: #94a3b8 !important;
315
- border-color: #475569;
316
- }
317
-
318
- [data-theme="dark"] .wasm-quick-reset-btn:hover {
319
- background-color: #475569;
320
- color: #cbd5e1 !important;
321
- }
322
-
323
- /* Side Drawer Dark Theme */
324
- [data-theme="dark"] .wasm-preview-drawer {
325
- background-color: #0f172a;
326
- border-left: 1px solid #334155;
327
- box-shadow: -8px 0 25px rgba(0, 0, 0, 0.3);
328
- }
329
-
330
- [data-theme="dark"] .drawer-header {
331
- background-color: #1e293b;
332
- border-bottom: 1px solid #334155;
333
- color: #f1f5f9;
334
- }
335
-
336
- [data-theme="dark"] .drawer-title {
337
- color: #f1f5f9;
338
- }
339
-
340
- [data-theme="dark"] .drawer-close-btn {
341
- color: #94a3b8;
342
- }
343
-
344
- [data-theme="dark"] .drawer-close-btn:hover {
345
- color: #f1f5f9;
346
- background-color: #334155;
347
- }
348
-
349
- [data-theme="dark"] .drawer-body {
350
- background-color: #0f172a;
351
- }