gitextract_zvcmyhvl/ ├── .eslintrc ├── .github/ │ ├── ISSUE_TEMPLATE.md │ ├── stale.yml │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .node-version ├── .npmignore ├── CODE_OF_CONDUCT.md ├── LICENSE ├── README.md ├── action_text-trix/ │ ├── .gitignore │ ├── Gemfile │ ├── LICENSE │ ├── README.md │ ├── Rakefile │ ├── action_text-trix.gemspec │ ├── app/ │ │ └── assets/ │ │ ├── javascripts/ │ │ │ ├── .gitattributes │ │ │ └── trix.js │ │ └── stylesheets/ │ │ └── trix.css │ ├── bin/ │ │ └── rails │ ├── lib/ │ │ └── action_text/ │ │ ├── trix/ │ │ │ ├── engine.rb │ │ │ └── version.rb │ │ └── trix.rb │ └── test/ │ ├── application_system_test_case.rb │ ├── dummy/ │ │ ├── Rakefile │ │ ├── app/ │ │ │ ├── assets/ │ │ │ │ ├── images/ │ │ │ │ │ └── .keep │ │ │ │ └── stylesheets/ │ │ │ │ ├── actiontext.css │ │ │ │ └── application.css │ │ │ ├── controllers/ │ │ │ │ ├── application_controller.rb │ │ │ │ ├── concerns/ │ │ │ │ │ └── .keep │ │ │ │ └── messages_controller.rb │ │ │ ├── javascript/ │ │ │ │ └── application.js │ │ │ ├── models/ │ │ │ │ ├── application_record.rb │ │ │ │ ├── concerns/ │ │ │ │ │ └── .keep │ │ │ │ └── message.rb │ │ │ └── views/ │ │ │ ├── active_storage/ │ │ │ │ └── blobs/ │ │ │ │ └── _blob.html.erb │ │ │ ├── layouts/ │ │ │ │ ├── action_text/ │ │ │ │ │ └── contents/ │ │ │ │ │ └── _content.html.erb │ │ │ │ ├── application.html.erb │ │ │ │ ├── mailer.html.erb │ │ │ │ └── mailer.text.erb │ │ │ ├── messages/ │ │ │ │ ├── _form.html.erb │ │ │ │ ├── index.html.erb │ │ │ │ └── new.html.erb │ │ │ └── pwa/ │ │ │ ├── manifest.json.erb │ │ │ └── service-worker.js │ │ ├── bin/ │ │ │ ├── dev │ │ │ ├── importmap │ │ │ ├── rails │ │ │ ├── rake │ │ │ └── setup │ │ ├── config/ │ │ │ ├── application.rb │ │ │ ├── boot.rb │ │ │ ├── cable.yml │ │ │ ├── database.yml │ │ │ ├── environment.rb │ │ │ ├── environments/ │ │ │ │ ├── development.rb │ │ │ │ ├── production.rb │ │ │ │ └── test.rb │ │ │ ├── importmap.rb │ │ │ ├── initializers/ │ │ │ │ ├── assets.rb │ │ │ │ ├── content_security_policy.rb │ │ │ │ ├── filter_parameter_logging.rb │ │ │ │ └── inflections.rb │ │ │ ├── locales/ │ │ │ │ └── en.yml │ │ │ ├── puma.rb │ │ │ ├── routes.rb │ │ │ └── storage.yml │ │ ├── config.ru │ │ ├── db/ │ │ │ ├── migrate/ │ │ │ │ ├── 20250926170812_create_active_storage_tables.active_storage.rb │ │ │ │ ├── 20250926170813_create_action_text_tables.action_text.rb │ │ │ │ └── 20250926170921_create_messages.rb │ │ │ └── schema.rb │ │ └── public/ │ │ ├── 400.html │ │ ├── 404.html │ │ ├── 406-unsupported-browser.html │ │ ├── 422.html │ │ └── 500.html │ ├── fixtures/ │ │ └── action_text/ │ │ └── rich_texts.yml │ ├── system/ │ │ └── action_text_test.rb │ └── test_helper.rb ├── assets/ │ ├── index.html │ ├── test.html │ ├── trix/ │ │ ├── images/ │ │ │ └── README.md │ │ └── stylesheets/ │ │ ├── attachments.scss │ │ ├── content.scss │ │ ├── editor.scss │ │ ├── icons.scss │ │ ├── media-queries.scss │ │ ├── selection.scss │ │ └── toolbar.scss │ └── trix.scss ├── babel.config.json ├── bin/ │ ├── ci │ ├── sass-build │ └── setup ├── package.json ├── rollup.config.js ├── src/ │ ├── inspector/ │ │ ├── control_element.js │ │ ├── debugger.js │ │ ├── element.js │ │ ├── global.js │ │ ├── inspector.js │ │ ├── templates/ │ │ │ ├── debug.js │ │ │ ├── document.js │ │ │ ├── performance.js │ │ │ ├── render.js │ │ │ ├── selection.js │ │ │ └── undo.js │ │ ├── templates.js │ │ ├── view.js │ │ ├── views/ │ │ │ ├── debug_view.js │ │ │ ├── document_view.js │ │ │ ├── performance_view.js │ │ │ ├── render_view.js │ │ │ ├── selection_view.js │ │ │ └── undo_view.js │ │ ├── watchdog/ │ │ │ ├── deserializer.js │ │ │ ├── player.js │ │ │ ├── player_controller.js │ │ │ ├── player_element.js │ │ │ ├── player_view.js │ │ │ ├── recorder.js │ │ │ ├── recording.js │ │ │ └── serializer.js │ │ └── watchdog.js │ ├── test/ │ │ ├── system/ │ │ │ ├── accessibility_test.js │ │ │ ├── attachment_caption_test.js │ │ │ ├── attachment_gallery_test.js │ │ │ ├── attachment_test.js │ │ │ ├── basic_input_test.js │ │ │ ├── block_formatting_test.js │ │ │ ├── caching_test.js │ │ │ ├── canceled_input_test.js │ │ │ ├── composition_input_test.js │ │ │ ├── cursor_movement_test.js │ │ │ ├── custom_element_test.js │ │ │ ├── html_loading_test.js │ │ │ ├── html_reparsing_test.js │ │ │ ├── html_replacement_test.js │ │ │ ├── installation_process_test.js │ │ │ ├── level_2_input_test.js │ │ │ ├── list_formatting_test.js │ │ │ ├── morphing_test.js │ │ │ ├── mutation_input_test.js │ │ │ ├── pasting_test.js │ │ │ ├── text_formatting_test.js │ │ │ └── undo_test.js │ │ ├── system.js │ │ ├── test.js │ │ ├── test_helper.js │ │ ├── test_helpers/ │ │ │ ├── assertions.js │ │ │ ├── editor_helpers.js │ │ │ ├── event_helpers.js │ │ │ ├── fixtures/ │ │ │ │ ├── editor_default_aria_label.js │ │ │ │ ├── editor_empty.js │ │ │ │ ├── editor_html.js │ │ │ │ ├── editor_in_table.js │ │ │ │ ├── editor_with_block_styles.js │ │ │ │ ├── editor_with_bold_styles.js │ │ │ │ ├── editor_with_image.js │ │ │ │ ├── editor_with_labels.js │ │ │ │ ├── editor_with_styled_content.js │ │ │ │ ├── editor_with_toolbar_and_input.js │ │ │ │ ├── editors_with_forms.js │ │ │ │ ├── fixtures.js │ │ │ │ └── test_image_url.js │ │ │ ├── functions.js │ │ │ ├── input_helpers.js │ │ │ ├── selection_helpers.js │ │ │ ├── test_helpers.js │ │ │ ├── test_stubs.js │ │ │ ├── timing_helpers.js │ │ │ └── toolbar_helpers.js │ │ ├── unit/ │ │ │ ├── attachment_test.js │ │ │ ├── bidi_test.js │ │ │ ├── block_test.js │ │ │ ├── composition_test.js │ │ │ ├── document_test.js │ │ │ ├── document_view_test.js │ │ │ ├── helpers/ │ │ │ │ └── custom_elements_test.js │ │ │ ├── html_parser_test.js │ │ │ ├── html_sanitizer_test.js │ │ │ ├── location_mapper_test.js │ │ │ ├── mutation_observer_test.js │ │ │ ├── serialization_test.js │ │ │ ├── string_change_summary_test.js │ │ │ └── text_test.js │ │ └── unit.js │ └── trix/ │ ├── config/ │ │ ├── attachments.js │ │ ├── block_attributes.js │ │ ├── browser.js │ │ ├── css.js │ │ ├── dompurify.js │ │ ├── file_size_formatting.js │ │ ├── index.js │ │ ├── input.js │ │ ├── key_names.js │ │ ├── lang.js │ │ ├── parser.js │ │ ├── text_attributes.js │ │ ├── toolbar.js │ │ └── undo.js │ ├── constants.js │ ├── controllers/ │ │ ├── attachment_editor_controller.js │ │ ├── composition_controller.js │ │ ├── controller.js │ │ ├── editor_controller.js │ │ ├── index.js │ │ ├── input_controller.js │ │ ├── level_0_input_controller.js │ │ ├── level_2_input_controller.js │ │ └── toolbar_controller.js │ ├── core/ │ │ ├── basic_object.js │ │ ├── collections/ │ │ │ ├── element_store.js │ │ │ ├── hash.js │ │ │ ├── index.js │ │ │ ├── object_group.js │ │ │ └── object_map.js │ │ ├── helpers/ │ │ │ ├── arrays.js │ │ │ ├── bidi.js │ │ │ ├── config.js │ │ │ ├── custom_elements.js │ │ │ ├── dom.js │ │ │ ├── events.js │ │ │ ├── extend.js │ │ │ ├── functions.js │ │ │ ├── global.js │ │ │ ├── index.js │ │ │ ├── objects.js │ │ │ ├── ranges.js │ │ │ ├── selection.js │ │ │ └── strings.js │ │ ├── index.js │ │ ├── object.js │ │ ├── serialization.js │ │ ├── utilities/ │ │ │ ├── index.js │ │ │ ├── operation.js │ │ │ └── utf16_string.js │ │ └── utilities.js │ ├── elements/ │ │ ├── index.js │ │ ├── trix_editor_element.js │ │ └── trix_toolbar_element.js │ ├── filters/ │ │ ├── attachment_gallery_filter.js │ │ ├── filter.js │ │ └── index.js │ ├── models/ │ │ ├── attachment.js │ │ ├── attachment_manager.js │ │ ├── attachment_piece.js │ │ ├── block.js │ │ ├── composition.js │ │ ├── document.js │ │ ├── editor.js │ │ ├── flaky_android_keyboard_detector.js │ │ ├── html_parser.js │ │ ├── html_sanitizer.js │ │ ├── index.js │ │ ├── line_break_insertion.js │ │ ├── location_mapper.js │ │ ├── managed_attachment.js │ │ ├── piece.js │ │ ├── point_mapper.js │ │ ├── selection_manager.js │ │ ├── splittable_list.js │ │ ├── string_piece.js │ │ ├── text.js │ │ └── undo_manager.js │ ├── observers/ │ │ ├── index.js │ │ ├── mutation_observer.js │ │ └── selection_change_observer.js │ ├── operations/ │ │ ├── file_verification_operation.js │ │ ├── image_preload_operation.js │ │ └── index.js │ ├── trix.js │ └── views/ │ ├── attachment_view.js │ ├── block_view.js │ ├── document_view.js │ ├── index.js │ ├── object_view.js │ ├── piece_view.js │ ├── previewable_attachment_view.js │ └── text_view.js └── web-test-runner.config.mjs