decidim-participatory_documents 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.erb-lint.yml +30 -0
- data/.eslintignore +3 -0
- data/.eslintrc.json +3 -0
- data/.github/workflows/lint.yml +43 -0
- data/.github/workflows/test.yml +60 -0
- data/.gitignore +27 -0
- data/.rspec +3 -0
- data/.rubocop-disabled.yml +11 -0
- data/.rubocop.yml +4 -0
- data/.rubocop_rails.yml +91 -0
- data/.rubocop_ruby.yml +1768 -0
- data/.ruby-version +1 -0
- data/.simplecov +13 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +39 -0
- data/Gemfile.lock +817 -0
- data/LICENSE-AGPLv3.txt +661 -0
- data/README.md +166 -0
- data/Rakefile +44 -0
- data/app/cells/decidim/participatory_documents/edit_suggestion_note_modal/show.erb +20 -0
- data/app/cells/decidim/participatory_documents/edit_suggestion_note_modal_cell.rb +35 -0
- data/app/cells/decidim/participatory_documents/suggestion/admin_answer.erb +7 -0
- data/app/cells/decidim/participatory_documents/suggestion/show.erb +11 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/avatar.erb +3 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/date.erb +1 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/name.erb +3 -0
- data/app/cells/decidim/participatory_documents/suggestion_author/show.erb +9 -0
- data/app/cells/decidim/participatory_documents/suggestion_author_cell.rb +50 -0
- data/app/cells/decidim/participatory_documents/suggestion_cell.rb +41 -0
- data/app/commands/decidim/participatory_documents/admin/answer_suggestion.rb +62 -0
- data/app/commands/decidim/participatory_documents/admin/assign_suggestions_to_valuator.rb +59 -0
- data/app/commands/decidim/participatory_documents/admin/create_document.rb +55 -0
- data/app/commands/decidim/participatory_documents/admin/create_suggestion_note.rb +49 -0
- data/app/commands/decidim/participatory_documents/admin/destroy_annotation.rb +67 -0
- data/app/commands/decidim/participatory_documents/admin/notify_suggestion_answer.rb +52 -0
- data/app/commands/decidim/participatory_documents/admin/publish_answers.rb +59 -0
- data/app/commands/decidim/participatory_documents/admin/publish_document.rb +26 -0
- data/app/commands/decidim/participatory_documents/admin/unassign_suggestions_from_valuator.rb +60 -0
- data/app/commands/decidim/participatory_documents/admin/update_document.rb +85 -0
- data/app/commands/decidim/participatory_documents/admin/update_or_create_annotation.rb +98 -0
- data/app/commands/decidim/participatory_documents/admin/update_section.rb +52 -0
- data/app/commands/decidim/participatory_documents/admin/update_suggestion_note.rb +36 -0
- data/app/commands/decidim/participatory_documents/create_suggestion.rb +65 -0
- data/app/controllers/concerns/decidim/participatory_documents/admin/needs_admin_snippets.rb +25 -0
- data/app/controllers/concerns/decidim/participatory_documents/needs_pdf_document.rb +105 -0
- data/app/controllers/decidim/participatory_documents/admin/annotations_controller.rb +51 -0
- data/app/controllers/decidim/participatory_documents/admin/application_controller.rb +18 -0
- data/app/controllers/decidim/participatory_documents/admin/documents_controller.rb +104 -0
- data/app/controllers/decidim/participatory_documents/admin/sections_controller.rb +39 -0
- data/app/controllers/decidim/participatory_documents/admin/suggestion_notes_controller.rb +59 -0
- data/app/controllers/decidim/participatory_documents/admin/suggestions_controller.rb +160 -0
- data/app/controllers/decidim/participatory_documents/admin/valuation_assignments_controller.rb +58 -0
- data/app/controllers/decidim/participatory_documents/application_controller.rb +14 -0
- data/app/controllers/decidim/participatory_documents/document_suggestions_controller.rb +40 -0
- data/app/controllers/decidim/participatory_documents/documents_controller.rb +18 -0
- data/app/controllers/decidim/participatory_documents/section_suggestions_controller.rb +40 -0
- data/app/events/decidim/participatory_documents/suggestion_answer_event.rb +43 -0
- data/app/forms/decidim/participatory_documents/admin/annotation_form.rb +26 -0
- data/app/forms/decidim/participatory_documents/admin/answer_suggestion_form.rb +21 -0
- data/app/forms/decidim/participatory_documents/admin/document_form.rb +29 -0
- data/app/forms/decidim/participatory_documents/admin/section_form.rb +17 -0
- data/app/forms/decidim/participatory_documents/admin/suggestion_note_form.rb +15 -0
- data/app/forms/decidim/participatory_documents/admin/valuation_assignment_form.rb +38 -0
- data/app/forms/decidim/participatory_documents/suggestion_form.rb +39 -0
- data/app/helpers/decidim/participatory_documents/admin/button_helper.rb +17 -0
- data/app/helpers/decidim/participatory_documents/admin/documents_helper.rb +71 -0
- data/app/helpers/decidim/participatory_documents/admin/suggestion_helper.rb +54 -0
- data/app/helpers/decidim/participatory_documents/documents_helper.rb +41 -0
- data/app/models/concerns/decidim/participatory_documents/participatory_space_user_role_override.rb +19 -0
- data/app/models/concerns/decidim/participatory_documents/valuator_override.rb +18 -0
- data/app/models/decidim/participatory_documents/annotation.rb +28 -0
- data/app/models/decidim/participatory_documents/application_record.rb +10 -0
- data/app/models/decidim/participatory_documents/document.rb +67 -0
- data/app/models/decidim/participatory_documents/section.rb +44 -0
- data/app/models/decidim/participatory_documents/suggestion.rb +167 -0
- data/app/models/decidim/participatory_documents/suggestion_note.rb +18 -0
- data/app/models/decidim/participatory_documents/valuation_assignment.rb +21 -0
- data/app/packs/entrypoints/decidim_participatory_documents.js +6 -0
- data/app/packs/entrypoints/decidim_participatory_documents.scss +18 -0
- data/app/packs/entrypoints/decidim_participatory_documents_admin.js +7 -0
- data/app/packs/entrypoints/decidim_participatory_documents_admin.scss +69 -0
- data/app/packs/entrypoints/decidim_participatory_documents_editor.js +12 -0
- data/app/packs/entrypoints/decidim_participatory_documents_editor.scss +33 -0
- data/app/packs/entrypoints/decidim_participatory_documents_viewer.js +6 -0
- data/app/packs/entrypoints/decidim_participatory_documents_viewer.scss +11 -0
- data/app/packs/images/.keep +0 -0
- data/app/packs/images/badge.svg +6 -0
- data/app/packs/images/fullscreen.svg +6 -0
- data/app/packs/images/fullscreen_exit.svg +14 -0
- data/app/packs/images/group.svg +1 -0
- data/app/packs/images/move.svg +49 -0
- data/app/packs/images/participatory_documents.svg +14 -0
- data/app/packs/src/decidim/participatory_documents/admin/manage_bulk_suggestions.js +133 -0
- data/app/packs/src/decidim/participatory_documents/admin/preview_box_color.js +14 -0
- data/app/packs/src/decidim/participatory_documents/global.js +22 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box.js +234 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box_control_group.js +80 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box_control_move.js +55 -0
- data/app/packs/src/decidim/participatory_documents/pdf/box_controls.js +18 -0
- data/app/packs/src/decidim/participatory_documents/pdf/pdf_modal_manager.js +129 -0
- data/app/packs/src/decidim/participatory_documents/pdf/pdf_state_manager.js +141 -0
- data/app/packs/src/decidim/participatory_documents/pdf/polygon_editor.js +99 -0
- data/app/packs/src/decidim/participatory_documents/pdf/polygon_viewer.js +55 -0
- data/app/packs/src/decidim/participatory_documents/pdf/suggestion_form.js +142 -0
- data/app/packs/src/decidim/participatory_documents/pdf.js +37 -0
- data/app/packs/src/decidim/participatory_documents/pdf_admin.js +60 -0
- data/app/packs/src/decidim/participatory_documents/pdf_notifications.js +20 -0
- data/app/packs/src/decidim/participatory_documents/skip_cookie_warning.js +10 -0
- data/app/packs/stylesheets/decidim/participatory_documents/decidim_admin_classes.scss +13 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/admin_modals.scss +41 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/admin_polygons.scss +131 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/admin_tweaks.scss +44 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/defaults.scss +7 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/document.scss +7 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/modals.scss +152 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/notifications.scss +31 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/polygons.scss +80 -0
- data/app/packs/stylesheets/decidim/participatory_documents/pdf/tweaks.scss +147 -0
- data/app/permissions/decidim/participatory_documents/admin/permissions.rb +118 -0
- data/app/permissions/decidim/participatory_documents/permissions.rb +16 -0
- data/app/presenters/decidim/participatory_documents/admin_log/annotation_presenter.rb +25 -0
- data/app/presenters/decidim/participatory_documents/admin_log/document_presenter.rb +13 -0
- data/app/presenters/decidim/participatory_documents/admin_log/section_presenter.rb +25 -0
- data/app/presenters/decidim/participatory_documents/admin_log/suggestion_note_presenter.rb +49 -0
- data/app/serializers/decidim/participatory_documents/suggestion_serializer.rb +67 -0
- data/app/uploaders/decidim/participatory_documents/pdf_document_uploader.rb +11 -0
- data/app/views/decidim/admin/exports/_dropdown.html.erb +16 -0
- data/app/views/decidim/participatory_documents/admin/documents/_editor_modal.html.erb +3 -0
- data/app/views/decidim/participatory_documents/admin/documents/_form.html.erb +39 -0
- data/app/views/decidim/participatory_documents/admin/documents/_title.html.erb +7 -0
- data/app/views/decidim/participatory_documents/admin/documents/edit.html.erb +18 -0
- data/app/views/decidim/participatory_documents/admin/documents/edit_pdf.html.erb +15 -0
- data/app/views/decidim/participatory_documents/admin/documents/index.html.erb +11 -0
- data/app/views/decidim/participatory_documents/admin/documents/new.html.erb +17 -0
- data/app/views/decidim/participatory_documents/admin/documents/pdf_viewer.html.erb +105 -0
- data/app/views/decidim/participatory_documents/admin/sections/_form.html.erb +24 -0
- data/app/views/decidim/participatory_documents/admin/suggestion_notes/_editing_suggestion_note.html.erb +18 -0
- data/app/views/decidim/participatory_documents/admin/suggestion_notes/_form.html.erb +8 -0
- data/app/views/decidim/participatory_documents/admin/suggestion_notes/_suggestion_notes.html.erb +46 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_add_valuators.html.erb +17 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_bulk-actions.html.erb +7 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_form.html.erb +30 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_js-callout.html.erb +6 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_suggestion.html.erb +33 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/_valuators.html.erb +43 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_assign_to_valuator.html.erb +15 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_dropdown.html.erb +36 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_publish_answers.html.erb +14 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/bulk_actions/_unassign_from_valuator.html.erb +15 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/index.html.erb +45 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/publish_answers.js.erb +17 -0
- data/app/views/decidim/participatory_documents/admin/suggestions/show.html.erb +55 -0
- data/app/views/decidim/participatory_documents/document_suggestions/_form.html.erb +29 -0
- data/app/views/decidim/participatory_documents/document_suggestions/index.html.erb +14 -0
- data/app/views/decidim/participatory_documents/documents/_pdfjs_base.html.erb +428 -0
- data/app/views/decidim/participatory_documents/documents/index.html.erb +27 -0
- data/app/views/decidim/participatory_documents/documents/pdf_viewer.html.erb +63 -0
- data/app/views/decidim/participatory_documents/section_suggestions/_form.html.erb +8 -0
- data/app/views/decidim/participatory_documents/section_suggestions/index.html.erb +14 -0
- data/babel.config.json +25 -0
- data/bin/bundle +62 -0
- data/bin/rails +6 -0
- data/bin/webpack-dev-server +6 -0
- data/codecov.yml +11 -0
- data/config/assets.rb +11 -0
- data/config/i18n-tasks.yml +12 -0
- data/config/locales/en.yml +266 -0
- data/crowdin.yml +45 -0
- data/db/migrate/20221018112720_create_decidim_participatory_documents_document.rb +17 -0
- data/db/migrate/20221115233021_create_decidim_participatory_documents_participation_sections.rb +12 -0
- data/db/migrate/20221115233022_create_decidim_participatory_documents_annotations.rb +13 -0
- data/db/migrate/20221115233023_create_decidim_participatory_documents_suggestions.rb +17 -0
- data/db/migrate/20221115233024_create_decidim_participatory_documents_suggestion_notes.rb +15 -0
- data/db/migrate/20221115233024_create_decidim_participatory_documents_valuation_assignments.rb +12 -0
- data/db/migrate/20230616100340_add_published_at_to_decidim_participatory_documents_documents.rb +8 -0
- data/db/migrate/20230622081831_add_decidim_participatory_documents_box_positions.rb +37 -0
- data/decidim-participatory_documents.gemspec +30 -0
- data/lib/decidim/participatory_documents/admin.rb +8 -0
- data/lib/decidim/participatory_documents/admin_engine.rb +45 -0
- data/lib/decidim/participatory_documents/component.rb +202 -0
- data/lib/decidim/participatory_documents/engine.rb +46 -0
- data/lib/decidim/participatory_documents/seeds/Exampledocument.pdf +0 -0
- data/lib/decidim/participatory_documents/test/factories.rb +144 -0
- data/lib/decidim/participatory_documents/version.rb +9 -0
- data/lib/decidim/participatory_documents.rb +29 -0
- data/lib/tasks/decidim_participatory_documents.rake +27 -0
- data/package-lock.json +12687 -0
- data/package.json +52 -0
- data/pdfjs/LICENSE +177 -0
- data/pdfjs/README.md +12 -0
- data/pdfjs/build/pdf.js +15629 -0
- data/pdfjs/build/pdf.js.map +1 -0
- data/pdfjs/build/pdf.sandbox.js +280 -0
- data/pdfjs/build/pdf.sandbox.js.map +1 -0
- data/pdfjs/build/pdf.worker.js +64496 -0
- data/pdfjs/build/pdf.worker.js.map +1 -0
- data/pdfjs/web/cmaps/78-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/78-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/78-V.bcmap +0 -0
- data/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Add-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-3.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-4.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-5.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap +0 -0
- data/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- data/pdfjs/web/cmaps/B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/B5pc-H.bcmap +0 -0
- data/pdfjs/web/cmaps/B5pc-V.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS1-H.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS1-V.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/CNS2-V.bcmap +3 -0
- data/pdfjs/web/cmaps/ETHK-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/ETHK-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/ETen-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/ETen-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/ETenms-B5-H.bcmap +3 -0
- data/pdfjs/web/cmaps/ETenms-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Ext-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GB-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GB-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GB-H.bcmap +4 -0
- data/pdfjs/web/cmaps/GB-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK2K-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBK2K-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBKp-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBKp-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBT-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/GBpc-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/GBpc-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdla-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdla-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdlb-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKdlb-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKgccs-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKgccs-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm314-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm314-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm471-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKm471-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/HKscs-B5-H.bcmap +0 -0
- data/pdfjs/web/cmaps/HKscs-B5-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Hankaku.bcmap +0 -0
- data/pdfjs/web/cmaps/Hiragana.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-Johab-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-Johab-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCms-UHC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap +0 -0
- data/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Katakana.bcmap +0 -0
- data/pdfjs/web/cmaps/LICENSE +36 -0
- data/pdfjs/web/cmaps/NWP-H.bcmap +0 -0
- data/pdfjs/web/cmaps/NWP-V.bcmap +0 -0
- data/pdfjs/web/cmaps/RKSJ-H.bcmap +0 -0
- data/pdfjs/web/cmaps/RKSJ-V.bcmap +0 -0
- data/pdfjs/web/cmaps/Roman.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap +0 -0
- data/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap +0 -0
- data/pdfjs/web/cmaps/V.bcmap +0 -0
- data/pdfjs/web/cmaps/WP-Symbol.bcmap +0 -0
- data/pdfjs/web/compressed.tracemonkey-pldi-09.pdf +0 -0
- data/pdfjs/web/debugger.css +113 -0
- data/pdfjs/web/debugger.js +612 -0
- data/pdfjs/web/images/annotation-check.svg +11 -0
- data/pdfjs/web/images/annotation-comment.svg +16 -0
- data/pdfjs/web/images/annotation-help.svg +26 -0
- data/pdfjs/web/images/annotation-insert.svg +10 -0
- data/pdfjs/web/images/annotation-key.svg +11 -0
- data/pdfjs/web/images/annotation-newparagraph.svg +11 -0
- data/pdfjs/web/images/annotation-noicon.svg +7 -0
- data/pdfjs/web/images/annotation-note.svg +42 -0
- data/pdfjs/web/images/annotation-paperclip.svg +6 -0
- data/pdfjs/web/images/annotation-paragraph.svg +16 -0
- data/pdfjs/web/images/annotation-pushpin.svg +7 -0
- data/pdfjs/web/images/cursor-editorFreeText.svg +3 -0
- data/pdfjs/web/images/cursor-editorInk.svg +4 -0
- data/pdfjs/web/images/findbarButton-next.svg +3 -0
- data/pdfjs/web/images/findbarButton-previous.svg +3 -0
- data/pdfjs/web/images/loading-dark.svg +24 -0
- data/pdfjs/web/images/loading-icon.gif +0 -0
- data/pdfjs/web/images/loading.svg +1 -0
- data/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-firstPage.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-handTool.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-lastPage.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-selectTool.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg +3 -0
- data/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg +3 -0
- data/pdfjs/web/images/shadow.png +0 -0
- data/pdfjs/web/images/toolbarButton-bookmark.svg +3 -0
- data/pdfjs/web/images/toolbarButton-currentOutlineItem.svg +3 -0
- data/pdfjs/web/images/toolbarButton-download.svg +4 -0
- data/pdfjs/web/images/toolbarButton-editorFreeText.svg +3 -0
- data/pdfjs/web/images/toolbarButton-editorInk.svg +4 -0
- data/pdfjs/web/images/toolbarButton-menuArrow.svg +3 -0
- data/pdfjs/web/images/toolbarButton-openFile.svg +3 -0
- data/pdfjs/web/images/toolbarButton-pageDown.svg +3 -0
- data/pdfjs/web/images/toolbarButton-pageUp.svg +3 -0
- data/pdfjs/web/images/toolbarButton-presentationMode.svg +3 -0
- data/pdfjs/web/images/toolbarButton-print.svg +3 -0
- data/pdfjs/web/images/toolbarButton-search.svg +3 -0
- data/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg +3 -0
- data/pdfjs/web/images/toolbarButton-sidebarToggle.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewAttachments.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewLayers.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewOutline.svg +3 -0
- data/pdfjs/web/images/toolbarButton-viewThumbnail.svg +3 -0
- data/pdfjs/web/images/toolbarButton-zoomIn.svg +3 -0
- data/pdfjs/web/images/toolbarButton-zoomOut.svg +3 -0
- data/pdfjs/web/images/treeitem-collapsed.svg +1 -0
- data/pdfjs/web/images/treeitem-expanded.svg +1 -0
- data/pdfjs/web/locale/ach/viewer.properties +200 -0
- data/pdfjs/web/locale/af/viewer.properties +177 -0
- data/pdfjs/web/locale/an/viewer.properties +243 -0
- data/pdfjs/web/locale/ar/viewer.properties +247 -0
- data/pdfjs/web/locale/ast/viewer.properties +207 -0
- data/pdfjs/web/locale/az/viewer.properties +243 -0
- data/pdfjs/web/locale/be/viewer.properties +274 -0
- data/pdfjs/web/locale/bg/viewer.properties +235 -0
- data/pdfjs/web/locale/bn/viewer.properties +239 -0
- data/pdfjs/web/locale/bo/viewer.properties +238 -0
- data/pdfjs/web/locale/br/viewer.properties +247 -0
- data/pdfjs/web/locale/brx/viewer.properties +205 -0
- data/pdfjs/web/locale/bs/viewer.properties +194 -0
- data/pdfjs/web/locale/ca/viewer.properties +251 -0
- data/pdfjs/web/locale/cak/viewer.properties +249 -0
- data/pdfjs/web/locale/ckb/viewer.properties +234 -0
- data/pdfjs/web/locale/cs/viewer.properties +274 -0
- data/pdfjs/web/locale/cy/viewer.properties +274 -0
- data/pdfjs/web/locale/da/viewer.properties +274 -0
- data/pdfjs/web/locale/de/viewer.properties +274 -0
- data/pdfjs/web/locale/dsb/viewer.properties +274 -0
- data/pdfjs/web/locale/el/viewer.properties +274 -0
- data/pdfjs/web/locale/en-CA/viewer.properties +274 -0
- data/pdfjs/web/locale/en-GB/viewer.properties +274 -0
- data/pdfjs/web/locale/en-US/viewer.properties +253 -0
- data/pdfjs/web/locale/eo/viewer.properties +274 -0
- data/pdfjs/web/locale/es-AR/viewer.properties +274 -0
- data/pdfjs/web/locale/es-CL/viewer.properties +274 -0
- data/pdfjs/web/locale/es-ES/viewer.properties +274 -0
- data/pdfjs/web/locale/es-MX/viewer.properties +274 -0
- data/pdfjs/web/locale/et/viewer.properties +262 -0
- data/pdfjs/web/locale/eu/viewer.properties +272 -0
- data/pdfjs/web/locale/fa/viewer.properties +216 -0
- data/pdfjs/web/locale/ff/viewer.properties +235 -0
- data/pdfjs/web/locale/fi/viewer.properties +274 -0
- data/pdfjs/web/locale/fr/viewer.properties +274 -0
- data/pdfjs/web/locale/fy-NL/viewer.properties +274 -0
- data/pdfjs/web/locale/ga-IE/viewer.properties +202 -0
- data/pdfjs/web/locale/gd/viewer.properties +249 -0
- data/pdfjs/web/locale/gl/viewer.properties +249 -0
- data/pdfjs/web/locale/gn/viewer.properties +274 -0
- data/pdfjs/web/locale/gu-IN/viewer.properties +235 -0
- data/pdfjs/web/locale/he/viewer.properties +274 -0
- data/pdfjs/web/locale/hi-IN/viewer.properties +235 -0
- data/pdfjs/web/locale/hr/viewer.properties +249 -0
- data/pdfjs/web/locale/hsb/viewer.properties +274 -0
- data/pdfjs/web/locale/hu/viewer.properties +274 -0
- data/pdfjs/web/locale/hy-AM/viewer.properties +239 -0
- data/pdfjs/web/locale/hye/viewer.properties +252 -0
- data/pdfjs/web/locale/ia/viewer.properties +274 -0
- data/pdfjs/web/locale/id/viewer.properties +274 -0
- data/pdfjs/web/locale/is/viewer.properties +274 -0
- data/pdfjs/web/locale/it/viewer.properties +215 -0
- data/pdfjs/web/locale/ja/viewer.properties +274 -0
- data/pdfjs/web/locale/ka/viewer.properties +274 -0
- data/pdfjs/web/locale/kab/viewer.properties +274 -0
- data/pdfjs/web/locale/kk/viewer.properties +274 -0
- data/pdfjs/web/locale/km/viewer.properties +210 -0
- data/pdfjs/web/locale/kn/viewer.properties +187 -0
- data/pdfjs/web/locale/ko/viewer.properties +274 -0
- data/pdfjs/web/locale/lij/viewer.properties +235 -0
- data/pdfjs/web/locale/lo/viewer.properties +145 -0
- data/pdfjs/web/locale/locale.properties +327 -0
- data/pdfjs/web/locale/lt/viewer.properties +260 -0
- data/pdfjs/web/locale/ltg/viewer.properties +213 -0
- data/pdfjs/web/locale/lv/viewer.properties +235 -0
- data/pdfjs/web/locale/meh/viewer.properties +111 -0
- data/pdfjs/web/locale/mk/viewer.properties +139 -0
- data/pdfjs/web/locale/mr/viewer.properties +231 -0
- data/pdfjs/web/locale/ms/viewer.properties +235 -0
- data/pdfjs/web/locale/my/viewer.properties +191 -0
- data/pdfjs/web/locale/nb-NO/viewer.properties +274 -0
- data/pdfjs/web/locale/ne-NP/viewer.properties +218 -0
- data/pdfjs/web/locale/nl/viewer.properties +274 -0
- data/pdfjs/web/locale/nn-NO/viewer.properties +274 -0
- data/pdfjs/web/locale/oc/viewer.properties +274 -0
- data/pdfjs/web/locale/pa-IN/viewer.properties +285 -0
- data/pdfjs/web/locale/pl/viewer.properties +274 -0
- data/pdfjs/web/locale/pt-BR/viewer.properties +274 -0
- data/pdfjs/web/locale/pt-PT/viewer.properties +274 -0
- data/pdfjs/web/locale/rm/viewer.properties +274 -0
- data/pdfjs/web/locale/ro/viewer.properties +241 -0
- data/pdfjs/web/locale/ru/viewer.properties +274 -0
- data/pdfjs/web/locale/sat/viewer.properties +198 -0
- data/pdfjs/web/locale/sc/viewer.properties +240 -0
- data/pdfjs/web/locale/scn/viewer.properties +101 -0
- data/pdfjs/web/locale/sco/viewer.properties +249 -0
- data/pdfjs/web/locale/si/viewer.properties +237 -0
- data/pdfjs/web/locale/sk/viewer.properties +274 -0
- data/pdfjs/web/locale/sl/viewer.properties +274 -0
- data/pdfjs/web/locale/son/viewer.properties +173 -0
- data/pdfjs/web/locale/sq/viewer.properties +267 -0
- data/pdfjs/web/locale/sr/viewer.properties +253 -0
- data/pdfjs/web/locale/sv-SE/viewer.properties +274 -0
- data/pdfjs/web/locale/szl/viewer.properties +245 -0
- data/pdfjs/web/locale/ta/viewer.properties +194 -0
- data/pdfjs/web/locale/te/viewer.properties +237 -0
- data/pdfjs/web/locale/tg/viewer.properties +274 -0
- data/pdfjs/web/locale/th/viewer.properties +274 -0
- data/pdfjs/web/locale/tl/viewer.properties +243 -0
- data/pdfjs/web/locale/tr/viewer.properties +274 -0
- data/pdfjs/web/locale/trs/viewer.properties +206 -0
- data/pdfjs/web/locale/uk/viewer.properties +274 -0
- data/pdfjs/web/locale/ur/viewer.properties +239 -0
- data/pdfjs/web/locale/uz/viewer.properties +163 -0
- data/pdfjs/web/locale/vi/viewer.properties +274 -0
- data/pdfjs/web/locale/wo/viewer.properties +123 -0
- data/pdfjs/web/locale/xh/viewer.properties +177 -0
- data/pdfjs/web/locale/zh-CN/viewer.properties +274 -0
- data/pdfjs/web/locale/zh-TW/viewer.properties +274 -0
- data/pdfjs/web/standard_fonts/FoxitDingbats.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixed.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixedBold.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSans.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSansBold.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSansBoldItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSansItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerif.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerifBold.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb +0 -0
- data/pdfjs/web/standard_fonts/FoxitSymbol.pfb +0 -0
- data/pdfjs/web/standard_fonts/LICENSE_FOXIT +27 -0
- data/pdfjs/web/standard_fonts/LICENSE_LIBERATION +102 -0
- data/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf +0 -0
- data/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- data/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf +0 -0
- data/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf +0 -0
- data/pdfjs/web/viewer.css +3029 -0
- data/pdfjs/web/viewer.html +433 -0
- data/pdfjs/web/viewer.js +13566 -0
- data/pdfjs/web/viewer.js.map +1 -0
- metadata +643 -0
@@ -0,0 +1,99 @@
|
|
1
|
+
import PolygonViewer from "./polygon_viewer";
|
2
|
+
import Box from "./box";
|
3
|
+
|
4
|
+
export default class PolygonEditor extends PolygonViewer {
|
5
|
+
constructor(div, boxes, options) {
|
6
|
+
super(div, boxes, options);
|
7
|
+
this.div.classList.add("admin");
|
8
|
+
this.box = null;
|
9
|
+
this.creating = false;
|
10
|
+
this.top = 0;
|
11
|
+
this.left = 0;
|
12
|
+
}
|
13
|
+
|
14
|
+
init() {
|
15
|
+
super.init();
|
16
|
+
// The editor needs to draw boxes over the underlying layer
|
17
|
+
// this effectively disables pointer events on the layer (so links are not clickable).
|
18
|
+
// But that's okey for the editor, it's for creating the boxes.
|
19
|
+
this.div.style.pointerEvents = "all";
|
20
|
+
// add controls to existing boxes
|
21
|
+
this.getBoxes().map((box) => box.createControls());
|
22
|
+
this.div.addEventListener("mousedown", this._mouseDown.bind(this));
|
23
|
+
this.div.addEventListener("mousemove", this._mouseMove.bind(this));
|
24
|
+
this.div.addEventListener("mouseup", this._mouseUp.bind(this));
|
25
|
+
}
|
26
|
+
|
27
|
+
isBlocked() {
|
28
|
+
return this.div.classList.contains("blocked");
|
29
|
+
}
|
30
|
+
|
31
|
+
removeBox(box) {
|
32
|
+
Reflect.deleteProperty(this.boxes, box.id);
|
33
|
+
}
|
34
|
+
|
35
|
+
_mouseDown(evt) {
|
36
|
+
if (!this.creating && !this.isBlocked()) {
|
37
|
+
this.blockBoxes();
|
38
|
+
this.box = this._createBoxFromMouseEvent(evt);
|
39
|
+
this.creating = true;
|
40
|
+
this.left = this.div.getBoundingClientRect().x;
|
41
|
+
this.top = this.div.getBoundingClientRect().y;
|
42
|
+
// disable mouse events on all children
|
43
|
+
console.log("mousedown", "evt", evt, "this", this, "box div", this.box.div);
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
_mouseMove(evt) {
|
48
|
+
if (!this.isBlocked() && this.creating && this.box) {
|
49
|
+
let width = evt.clientX - this.left - 9;
|
50
|
+
let height = evt.clientY - this.top - 9;
|
51
|
+
let boxPercentLeft = parseInt(this.box.div.style.left, 10);
|
52
|
+
let boxPercentTop = parseInt(this.box.div.style.top, 10);
|
53
|
+
let mousePercentLeft = 100 * width / this.div.clientWidth;
|
54
|
+
let mousePercentTop = 100 * height / this.div.clientHeight;
|
55
|
+
this.box.div.style.width = `${mousePercentLeft - boxPercentLeft}%`;
|
56
|
+
this.box.div.style.height = `${mousePercentTop - boxPercentTop}%`;
|
57
|
+
// console.log('mousemove', evt,"mousePercent", mousePercentLeft,mousePercentTop, "box",this.box);
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
_mouseUp() {
|
62
|
+
if (!this.isBlocked() && this.creating && this.box) {
|
63
|
+
this.box.div.classList.remove("creating");
|
64
|
+
if (this.box.div.clientWidth <= 5 && this.box.div.clientHeight <= 5) {
|
65
|
+
this.box.div.remove();
|
66
|
+
this.box = null;
|
67
|
+
} else {
|
68
|
+
this._initBox();
|
69
|
+
}
|
70
|
+
// console.log('mouseup', evt, "box", this.box.div);
|
71
|
+
this.creating = false;
|
72
|
+
this.unBlockBoxes();
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
_createBoxFromMouseEvent(evt) {
|
77
|
+
const {left, top} = this.div.getBoundingClientRect();
|
78
|
+
let width = evt.clientX - left - 3;
|
79
|
+
let height = evt.clientY - top - 3;
|
80
|
+
let mousePercentLeft = 100 * width / this.div.clientWidth;
|
81
|
+
let mousePercentTop = 100 * height / this.div.clientHeight;
|
82
|
+
// % corresponding to 1px
|
83
|
+
width = 1 / this.div.clientWidth;
|
84
|
+
height = 1 / this.div.clientHeight;
|
85
|
+
|
86
|
+
return new Box(this, { rect: { left: mousePercentLeft, top: mousePercentTop, width: width, height: height} });
|
87
|
+
}
|
88
|
+
|
89
|
+
_initBox() {
|
90
|
+
console.log("init box", this.box)
|
91
|
+
if (!this.boxes[this.box.id]) {
|
92
|
+
this.box.createControls();
|
93
|
+
this.bindBoxEvents(this.box);
|
94
|
+
this.box.setInfo();
|
95
|
+
this.box.onChange();
|
96
|
+
this.boxes[this.box.id] = this.box;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import Box from "./box";
|
2
|
+
|
3
|
+
export default class PolygonViewer {
|
4
|
+
constructor(div, json, options) {
|
5
|
+
this.div = div;
|
6
|
+
this.json = json && json.length && json || [];
|
7
|
+
this.boxes = {};
|
8
|
+
this.i18n = options.i18n;
|
9
|
+
// events
|
10
|
+
this.onBoxClick = () => {};
|
11
|
+
this.onBoxBlur = () => {};
|
12
|
+
this.onBoxEnter = () => {};
|
13
|
+
this.onBoxLeave = () => {};
|
14
|
+
this.onBoxDestroy = () => {};
|
15
|
+
this.onBoxChange = () => {};
|
16
|
+
this.init();
|
17
|
+
}
|
18
|
+
|
19
|
+
init() {
|
20
|
+
// we don't handle pointer events here so links are clickable
|
21
|
+
// each box will handle its own evens
|
22
|
+
this.div.style.pointerEvents = "none";
|
23
|
+
this.div.classList.add("polygon-ready");
|
24
|
+
this.json.forEach((box) => {
|
25
|
+
this.addBox(new Box(this, box));
|
26
|
+
this.bindBoxEvents(this.boxes[box.id]);
|
27
|
+
});
|
28
|
+
}
|
29
|
+
|
30
|
+
// return all boxes in this layer
|
31
|
+
getBoxes() {
|
32
|
+
return Object.keys(this.boxes).map((id) => this.boxes[id]);
|
33
|
+
}
|
34
|
+
|
35
|
+
bindBoxEvents(box) {
|
36
|
+
box.onClick = (evt) => this.onBoxClick(box, evt);
|
37
|
+
box.onBlur = (evt) => this.onBoxBlur(box, evt);
|
38
|
+
box.onEnter = (evt) => this.onBoxEnter(box, evt);
|
39
|
+
box.onLeave = (evt) => this.onBoxLeave(box, evt);
|
40
|
+
box.onDestroy = (evt) => this.onBoxDestroy(box, evt);
|
41
|
+
box.onChange = (evt) => this.onBoxChange(box, evt);
|
42
|
+
}
|
43
|
+
|
44
|
+
blockBoxes() {
|
45
|
+
this.div.querySelectorAll(".box").forEach((div) => div.classList.add("blocked"));
|
46
|
+
}
|
47
|
+
|
48
|
+
unBlockBoxes() {
|
49
|
+
this.div.querySelectorAll(".box").forEach((div) => div.classList.remove("blocked"));
|
50
|
+
}
|
51
|
+
|
52
|
+
addBox(box) {
|
53
|
+
this.boxes[box.id] = box;
|
54
|
+
}
|
55
|
+
}
|
@@ -0,0 +1,142 @@
|
|
1
|
+
export default class SuggestionForm {
|
2
|
+
constructor(div, path, group = null) {
|
3
|
+
this.path = path;
|
4
|
+
this.group = group;
|
5
|
+
this.div = div;
|
6
|
+
}
|
7
|
+
|
8
|
+
open() {
|
9
|
+
if (this.div.classList.contains("active")) {
|
10
|
+
this.close(() => this.open());
|
11
|
+
} else {
|
12
|
+
// console.log("open!", "group:", this.group)
|
13
|
+
this.div.classList.add("active");
|
14
|
+
if (this.group) {
|
15
|
+
this.div.classList.add("section");
|
16
|
+
} else {
|
17
|
+
this.div.classList.add("document");
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
close(callback = () => {}) {
|
23
|
+
this.div.classList.remove("active");
|
24
|
+
this.div.addEventListener("transitionend", () => {
|
25
|
+
this.div.classList.remove("section", "document");
|
26
|
+
// console.log("end transition", this.div.classList);
|
27
|
+
if (callback) {
|
28
|
+
setTimeout(() => callback());
|
29
|
+
}
|
30
|
+
}, { once: true });
|
31
|
+
}
|
32
|
+
|
33
|
+
getCSRFToken() {
|
34
|
+
const token = document.getElementsByName("csrf-token")
|
35
|
+
|
36
|
+
return token.length && token[0].content;
|
37
|
+
}
|
38
|
+
|
39
|
+
// Sanitize internal path
|
40
|
+
getPath() {
|
41
|
+
return this.path.split("?")[0];
|
42
|
+
}
|
43
|
+
|
44
|
+
getQueryString() {
|
45
|
+
return this.path.indexOf("?") === -1 // eslint-disable-line no-ternary
|
46
|
+
? ""
|
47
|
+
: `?${this.path.split("?")[1]}`
|
48
|
+
}
|
49
|
+
|
50
|
+
getGroupUrl() {
|
51
|
+
if (this.group === null) {
|
52
|
+
return `${this.getPath()}/suggestions${this.getQueryString()}`;
|
53
|
+
}
|
54
|
+
return `${this.getPath()}/sections/${this.group}/suggestions${this.getQueryString()}`;
|
55
|
+
|
56
|
+
}
|
57
|
+
|
58
|
+
scrollToEnd() {
|
59
|
+
this.div.scrollTop = this.div.scrollHeight;
|
60
|
+
}
|
61
|
+
|
62
|
+
populateArea(data) {
|
63
|
+
this.div.innerHTML = data;
|
64
|
+
this.addCloseHandler();
|
65
|
+
this.addFormHandler();
|
66
|
+
this.scrollToEnd();
|
67
|
+
}
|
68
|
+
|
69
|
+
addCloseHandler() {
|
70
|
+
let close = document.getElementById("close-suggestions");
|
71
|
+
|
72
|
+
if (close) {
|
73
|
+
close.addEventListener("click", () => {
|
74
|
+
this.close();
|
75
|
+
}, { once: true });
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
addFormHandler() {
|
80
|
+
let form = document.getElementById("new_suggestion_");
|
81
|
+
if (form) {
|
82
|
+
let fileInput = document.getElementById("file-upload-field");
|
83
|
+
let fileNameContainer = document.getElementById("fileNameContainer");
|
84
|
+
|
85
|
+
if (fileInput) {
|
86
|
+
fileInput.addEventListener("change", () => {
|
87
|
+
if (fileInput.files.length > 0) {
|
88
|
+
fileNameContainer.textContent = fileInput.files[0].name;
|
89
|
+
} else {
|
90
|
+
fileNameContainer.textContent = "";
|
91
|
+
}
|
92
|
+
});
|
93
|
+
}
|
94
|
+
|
95
|
+
form.addEventListener("submit", (event) => {
|
96
|
+
event.preventDefault();
|
97
|
+
|
98
|
+
let formData = new FormData(event.target);
|
99
|
+
|
100
|
+
fetch(event.target.action, {
|
101
|
+
method: event.target.method,
|
102
|
+
body: formData,
|
103
|
+
headers: {
|
104
|
+
"X-CSRF-Token": this.getCSRFToken()
|
105
|
+
},
|
106
|
+
credentials: "include"
|
107
|
+
}).then((response) => {
|
108
|
+
return response.text();
|
109
|
+
}).then((data) => {
|
110
|
+
this.div.innerHTML = data;
|
111
|
+
this.addFormHandler();
|
112
|
+
this.addCloseHandler();
|
113
|
+
}).catch((error) => {
|
114
|
+
console.error(error);
|
115
|
+
});
|
116
|
+
});
|
117
|
+
document.getElementById("suggestion_body").focus();
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
fetchGroup() {
|
122
|
+
fetch(this.getGroupUrl(), {
|
123
|
+
headers: {
|
124
|
+
"Content-Type": "text/html; charset=utf-8",
|
125
|
+
"Accept": "text/html"
|
126
|
+
},
|
127
|
+
credentials: "include"
|
128
|
+
// body: JSON.stringify(data)
|
129
|
+
}).then((response) => {
|
130
|
+
if (response.ok) {
|
131
|
+
return response.text();
|
132
|
+
}
|
133
|
+
throw new Error(response);
|
134
|
+
}).
|
135
|
+
then((data) => {
|
136
|
+
this.populateArea(data);
|
137
|
+
}).
|
138
|
+
catch((error) => {
|
139
|
+
console.error(error);
|
140
|
+
});
|
141
|
+
}
|
142
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import PolygonViewer from "src/decidim/participatory_documents/pdf/polygon_viewer";
|
2
|
+
import SuggestionForm from "src/decidim/participatory_documents/pdf/suggestion_form";
|
3
|
+
import "src/decidim/participatory_documents/pdf_notifications";
|
4
|
+
import "src/decidim/participatory_documents/global";
|
5
|
+
|
6
|
+
window.currentSuggestionForm = null;
|
7
|
+
window.InitDocumentManagers = (options) => {
|
8
|
+
options.globalSuggestionsButton.addEventListener("click", (evt) => {
|
9
|
+
evt.stopPropagation();
|
10
|
+
if (window.currentSuggestionForm && !window.currentSuggestionForm.group && window.currentSuggestionForm.div.classList.contains("active")) {
|
11
|
+
window.currentSuggestionForm.close();
|
12
|
+
} else {
|
13
|
+
window.currentSuggestionForm = new SuggestionForm(options.participationLayout, options.documentPath, null);
|
14
|
+
window.currentSuggestionForm.fetchGroup();
|
15
|
+
window.currentSuggestionForm.open();
|
16
|
+
}
|
17
|
+
});
|
18
|
+
};
|
19
|
+
|
20
|
+
// Call this on an annotation layer to initialize the polygon viewer (public side)
|
21
|
+
window.InitPolygonViewer = (layer, boxes, options) => {
|
22
|
+
let viewer = new PolygonViewer(layer, boxes, { i18n: options.i18n});
|
23
|
+
|
24
|
+
viewer.onBoxClick = (box, evt) => {
|
25
|
+
console.log("click on box", box, evt);
|
26
|
+
window.currentSuggestionForm = new SuggestionForm(options.participationLayout, options.documentPath, box.section);
|
27
|
+
window.currentSuggestionForm.open();
|
28
|
+
window.currentSuggestionForm.fetchGroup();
|
29
|
+
}
|
30
|
+
|
31
|
+
viewer.onBoxBlur = (box, evt) => {
|
32
|
+
console.log("click outside box", box, evt);
|
33
|
+
window.currentSuggestionForm.close();
|
34
|
+
};
|
35
|
+
|
36
|
+
return viewer;
|
37
|
+
};
|
@@ -0,0 +1,60 @@
|
|
1
|
+
/* eslint-disable max-params */
|
2
|
+
|
3
|
+
import "src/decidim/participatory_documents/global";
|
4
|
+
import "src/decidim/participatory_documents/pdf_notifications";
|
5
|
+
import PolygonEditor from "src/decidim/participatory_documents/pdf/polygon_editor";
|
6
|
+
import PdfStateManager from "src/decidim/participatory_documents/pdf/pdf_state_manager";
|
7
|
+
import PdfModalManager from "src/decidim/participatory_documents/pdf/pdf_modal_manager";
|
8
|
+
|
9
|
+
|
10
|
+
window.InitDocumentManagers = (options) => {
|
11
|
+
window.PdfDocStateManager = new PdfStateManager(options);
|
12
|
+
// show message when saving
|
13
|
+
window.PdfDocStateManager.onSave = () => {
|
14
|
+
window.showInfo(options.i18n.allSaved);
|
15
|
+
};
|
16
|
+
window.PdfDocStateManager.onError = (errors) => {
|
17
|
+
window.showAlert(options.i18n.errorsSaving);
|
18
|
+
console.error("State Manager Errors:", errors);
|
19
|
+
};
|
20
|
+
|
21
|
+
window.PdfModalManager = new PdfModalManager(options);
|
22
|
+
|
23
|
+
// remove box from the global state manager if edited though the modal
|
24
|
+
window.PdfModalManager.onSave = (box) => {
|
25
|
+
window.PdfDocStateManager.remove(box);
|
26
|
+
window.showInfo(options.i18n.created);
|
27
|
+
};
|
28
|
+
window.PdfModalManager.onDestroy = (box) => {
|
29
|
+
window.PdfDocStateManager.remove(box);
|
30
|
+
window.showInfo(options.i18n.removed);
|
31
|
+
};
|
32
|
+
window.PdfModalManager.onError = (box, error) => {
|
33
|
+
window.showAlert(options.i18n.operationFailed);
|
34
|
+
console.error("Modal Manager Error:", error);
|
35
|
+
};
|
36
|
+
};
|
37
|
+
|
38
|
+
// Call this on an annotation layer to initialize the polygon editor (admin side)
|
39
|
+
window.InitPolygonEditor = (layer, boxes, options, changeCallback = () => {}) => {
|
40
|
+
let editor = new PolygonEditor(layer, boxes, { i18n: options.i18n });
|
41
|
+
// Open the global box modal settings when a box is clicked
|
42
|
+
editor.onBoxClick = (box) => {
|
43
|
+
if (box.isPersisted()) {
|
44
|
+
window.PdfModalManager.loadBoxModal(box);
|
45
|
+
} else {
|
46
|
+
window.showAlert(options.i18n.needsSaving);
|
47
|
+
}
|
48
|
+
};
|
49
|
+
// update the global state manager when a box is edited or destroyed using the polygon editor (mouse interaction)
|
50
|
+
editor.onBoxChange = (box) => {
|
51
|
+
window.PdfDocStateManager.add(box);
|
52
|
+
changeCallback(box);
|
53
|
+
};
|
54
|
+
editor.onBoxDestroy = (box) => {
|
55
|
+
window.PdfDocStateManager.remove(box);
|
56
|
+
changeCallback(box);
|
57
|
+
};
|
58
|
+
|
59
|
+
return editor;
|
60
|
+
};
|
@@ -0,0 +1,20 @@
|
|
1
|
+
window.showInfo = (title, options = {}) => {
|
2
|
+
const info = document.getElementById("notifications");
|
3
|
+
info.innerHTML = title;
|
4
|
+
info.classList.add("show");
|
5
|
+
info.classList.remove("alert");
|
6
|
+
if (options && options.class) {
|
7
|
+
info.classList.add(options.class);
|
8
|
+
}
|
9
|
+
if (window.notificationTimeout) {
|
10
|
+
clearTimeout(window.notificationTimeout);
|
11
|
+
}
|
12
|
+
window.notificationTimeout = setTimeout(() => {
|
13
|
+
info.classList.remove("show")
|
14
|
+
}, options && options.delay || 3000);
|
15
|
+
};
|
16
|
+
|
17
|
+
window.showAlert = (title, options = {}) => {
|
18
|
+
options.class = "alert"
|
19
|
+
window.showInfo(title, options);
|
20
|
+
};
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/* eslint-disable no-plusplus */
|
2
|
+
|
3
|
+
document.addEventListener("DOMContentLoaded", () => {
|
4
|
+
const original = document.getElementById("pdf-iframe");
|
5
|
+
|
6
|
+
if (original) {
|
7
|
+
original.outerHTML = original.outerHTML.replace(/^<pdf-iframe/, "<iframe") +
|
8
|
+
original.outerHTML.replace(/pdf-iframe>$/, "iframe>");
|
9
|
+
}
|
10
|
+
});
|
@@ -0,0 +1,13 @@
|
|
1
|
+
@import "stylesheets/decidim/admin/variables";
|
2
|
+
@import "stylesheets/decidim/utils/fontface";
|
3
|
+
@import "stylesheets/decidim/admin/utils/settings";
|
4
|
+
|
5
|
+
// @import "stylesheets/decidim/admin/utils/helpers";
|
6
|
+
// @import "stylesheets/decidim/admin/utils/keyframes";
|
7
|
+
@import "foundation-sites/scss/foundation";
|
8
|
+
@import "stylesheets/foundation-overrides/components/button-group";
|
9
|
+
|
10
|
+
@include foundation-everything();
|
11
|
+
|
12
|
+
@import "stylesheets/decidim/admin/utils/mixins";
|
13
|
+
@import "stylesheets/decidim/admin/modules/modules";
|
@@ -0,0 +1,41 @@
|
|
1
|
+
@use "sass:meta";
|
2
|
+
|
3
|
+
@import "stylesheets/decidim/admin/variables";
|
4
|
+
@import "stylesheets/decidim/utils/fontface";
|
5
|
+
@import "stylesheets/decidim/admin/utils/settings";
|
6
|
+
|
7
|
+
@keyframes blinker {
|
8
|
+
50% {
|
9
|
+
background-color: rgba(var(--primary-rgb), .6);
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
#decidim {
|
14
|
+
position: fixed;
|
15
|
+
top: 0;
|
16
|
+
left: 0;
|
17
|
+
width: 100%;
|
18
|
+
height: 100%;
|
19
|
+
z-index: 100000;
|
20
|
+
display: none;
|
21
|
+
margin: 0;
|
22
|
+
padding: 0;
|
23
|
+
font-family: $body-font-family;
|
24
|
+
font-weight: $global-weight-normal;
|
25
|
+
line-height: $global-lineheight;
|
26
|
+
color: $body-font-color;
|
27
|
+
|
28
|
+
@include meta.load-css("stylesheets/decidim/participatory_documents/decidim_admin_classes.scss");
|
29
|
+
|
30
|
+
&.show {
|
31
|
+
display: block;
|
32
|
+
|
33
|
+
.reveal-overlay {
|
34
|
+
display: block;
|
35
|
+
|
36
|
+
.reveal {
|
37
|
+
display: block;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,131 @@
|
|
1
|
+
.box {
|
2
|
+
// Make the resize a little bit more visible
|
3
|
+
// Note: hidden until "hover" class is set
|
4
|
+
&::after {
|
5
|
+
position: absolute;
|
6
|
+
bottom: 0;
|
7
|
+
right: 0;
|
8
|
+
width: 32px;
|
9
|
+
height: 32px;
|
10
|
+
background: linear-gradient(135deg, transparent 0, transparent 45%, #fff 80%);
|
11
|
+
}
|
12
|
+
|
13
|
+
&.hover {
|
14
|
+
resize: both;
|
15
|
+
// In order to resize to work, it needs to have overflow
|
16
|
+
// but this clips the elements outside
|
17
|
+
overflow: hidden;
|
18
|
+
|
19
|
+
&::after {
|
20
|
+
content: "";
|
21
|
+
}
|
22
|
+
|
23
|
+
&::before {
|
24
|
+
left: 0;
|
25
|
+
}
|
26
|
+
|
27
|
+
& > span {
|
28
|
+
display: block;
|
29
|
+
}
|
30
|
+
|
31
|
+
.box-controls {
|
32
|
+
display: block;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
&.blocked {
|
37
|
+
& > span {
|
38
|
+
display: block;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
&.grouping {
|
43
|
+
.box-controls {
|
44
|
+
.control.group {
|
45
|
+
background-color: red;
|
46
|
+
animation: blinker 2s linear infinite;
|
47
|
+
|
48
|
+
&::after {
|
49
|
+
background-color: white;
|
50
|
+
animation: blinker 2s linear infinite;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
// Non persisted cannot group yet (although we could refactor to allow it)
|
57
|
+
&.persisted {
|
58
|
+
.box-controls {
|
59
|
+
.control.group {
|
60
|
+
display: inline-block;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
// Admin controls
|
66
|
+
.box-controls {
|
67
|
+
position: absolute;
|
68
|
+
display: none;
|
69
|
+
bottom: 0;
|
70
|
+
left: 0;
|
71
|
+
width: auto;
|
72
|
+
height: auto;
|
73
|
+
max-height: 44px;
|
74
|
+
overflow: hidden;
|
75
|
+
|
76
|
+
.control {
|
77
|
+
background: #fffe;
|
78
|
+
display: inline-block;
|
79
|
+
position: relative;
|
80
|
+
width: 40px;
|
81
|
+
height: 36px;
|
82
|
+
margin: 0 3px;
|
83
|
+
padding: 2px;
|
84
|
+
border-radius: 5px;
|
85
|
+
|
86
|
+
&:hover {
|
87
|
+
transform: scale(.9);
|
88
|
+
opacity: .8;
|
89
|
+
}
|
90
|
+
|
91
|
+
&::after {
|
92
|
+
content: "";
|
93
|
+
position: absolute;
|
94
|
+
top: 0;
|
95
|
+
left: 0;
|
96
|
+
width: 100%;
|
97
|
+
height: 100%;
|
98
|
+
background: var(--box-color);
|
99
|
+
-webkit-mask-repeat: no-repeat;
|
100
|
+
-webkit-mask-size: 37px 37px;
|
101
|
+
-webkit-mask-position: 4px 2px;
|
102
|
+
mask-repeat: no-repeat;
|
103
|
+
mask-size: 37px 37px;
|
104
|
+
mask-position: 4px 2px;
|
105
|
+
}
|
106
|
+
|
107
|
+
&.group {
|
108
|
+
cursor: cell;
|
109
|
+
display: none;
|
110
|
+
|
111
|
+
&::after {
|
112
|
+
-webkit-mask-image: url(../images/group.svg);
|
113
|
+
-webkit-mask-size: 30px 30px;
|
114
|
+
-webkit-mask-position: 7px 5px;
|
115
|
+
mask-image: url(../images/group.svg);
|
116
|
+
mask-size: 30px 30px;
|
117
|
+
mask-position: 7px 5px;
|
118
|
+
}
|
119
|
+
}
|
120
|
+
|
121
|
+
&.move {
|
122
|
+
cursor: move;
|
123
|
+
|
124
|
+
&::after {
|
125
|
+
-webkit-mask-image: url(../images/move.svg);
|
126
|
+
mask-image: url(../images/move.svg);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#DecidimPDSaveButton {
|
2
|
+
min-width: 110px;
|
3
|
+
height: 44px;
|
4
|
+
|
5
|
+
&::before {
|
6
|
+
display: none;
|
7
|
+
}
|
8
|
+
|
9
|
+
&.alert {
|
10
|
+
background-color: var(--primary);
|
11
|
+
animation: blinker 2s linear infinite;
|
12
|
+
}
|
13
|
+
|
14
|
+
&.loading {
|
15
|
+
&::before {
|
16
|
+
@include spinner(25px, #fff, var(--primary), 800ms);
|
17
|
+
|
18
|
+
margin: -4px 6px 0 -5px;
|
19
|
+
content: "";
|
20
|
+
vertical-align: middle;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
@media(max-width: 900px) {
|
25
|
+
margin-top: 12px;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
#fullscreenButton {
|
30
|
+
@media(max-width: 900px) {
|
31
|
+
width: 28px;
|
32
|
+
height: 28px;
|
33
|
+
margin-right: 0;
|
34
|
+
padding-right: 0;
|
35
|
+
overflow: hidden;
|
36
|
+
font-size: 0;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
#scaleSelectContainer {
|
41
|
+
@media(max-width: 900px) {
|
42
|
+
display: none;
|
43
|
+
}
|
44
|
+
}
|