pageflow 15.3.0 → 15.4.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pageflow might be problematic. Click here for more details.

Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +158 -353
  3. data/README.md +2 -3
  4. data/app/assets/javascripts/pageflow/dist/ui.js +99 -32
  5. data/app/assets/javascripts/pageflow/vendor.js +0 -1
  6. data/app/assets/stylesheets/pageflow/editor/base.scss +3 -2
  7. data/app/assets/stylesheets/pageflow/editor/drop_down_button.scss +1 -1
  8. data/app/assets/stylesheets/pageflow/editor/select_button.scss +1 -1
  9. data/app/assets/stylesheets/pageflow/editor/sidebar_footer.scss +1 -1
  10. data/app/assets/stylesheets/pageflow/entries.scss +1 -1
  11. data/app/assets/stylesheets/pageflow/loading_spinner.scss +4 -1
  12. data/app/assets/stylesheets/pageflow/navigation_mobile.scss +4 -4
  13. data/app/assets/stylesheets/pageflow/themes/default/anchors.scss +1 -1
  14. data/app/assets/stylesheets/pageflow/themes/default/logo/variant/watermark.scss +1 -1
  15. data/app/assets/stylesheets/pageflow/themes/default/page/anchors.scss +1 -1
  16. data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/control_bar.scss +1 -1
  17. data/app/assets/stylesheets/pageflow/themes/default/player_controls/classic/info_box.scss +1 -1
  18. data/app/assets/stylesheets/pageflow/themes/default/player_controls/shared/menu_bar.scss +2 -2
  19. data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/control_bar.scss +2 -2
  20. data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/info_box.scss +1 -1
  21. data/app/assets/stylesheets/pageflow/themes/default/player_controls/slim/quality_menu.scss +2 -2
  22. data/app/assets/stylesheets/pageflow/themes/default/player_controls/waveform/wave.scss +1 -1
  23. data/app/assets/stylesheets/pageflow/ui/forms.scss +9 -2
  24. data/app/assets/stylesheets/pageflow/ui/input/extended_select_input.scss +2 -2
  25. data/app/models/pageflow/account_role_query.rb +1 -1
  26. data/app/models/pageflow/managed_user_query.rb +1 -1
  27. data/app/policies/pageflow/folder_policy.rb +2 -2
  28. data/app/policies/pageflow/membership_policy.rb +2 -2
  29. data/app/policies/pageflow/theming_policy.rb +2 -2
  30. data/app/policies/pageflow/user_policy.rb +1 -1
  31. data/app/views/pageflow/video_files/_video_file.json.jbuilder +8 -1
  32. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/editor.js +103 -36
  33. data/entry_types/paged/app/assets/javascripts/pageflow_paged/dist/frontend.js +42 -15
  34. data/entry_types/paged/app/assets/javascripts/pageflow_paged/vendor.js +1 -0
  35. data/entry_types/paged/app/assets/javascripts/pageflow_paged/videojs.js +6 -0
  36. data/entry_types/paged/app/views/layouts/pageflow_paged/_loading_spinner_inline_script.html.erb +1 -0
  37. data/entry_types/paged/app/views/layouts/pageflow_paged/application.html.erb +1 -1
  38. data/entry_types/paged/app/views/pageflow_paged/editor/entries/_head.html.erb +2 -0
  39. data/entry_types/paged/lib/tasks/pageflow_paged_tasks.rake +7 -0
  40. data/{vendor/assets/javascripts → entry_types/paged/vendor/assets/javascripts/pageflow_paged/vendor}/dash.all.min.js +0 -0
  41. data/{vendor/assets/javascripts → entry_types/paged/vendor/assets/javascripts/pageflow_paged/vendor}/videojs-dash.js +0 -0
  42. data/{vendor/assets/javascripts → entry_types/paged/vendor/assets/javascripts/pageflow_paged/vendor}/videojs.js +0 -0
  43. data/entry_types/scrolled/app/controllers/pageflow_scrolled/entries_controller.rb +2 -0
  44. data/entry_types/scrolled/app/helpers/pageflow_scrolled/editor/seed_html_helper.rb +1 -0
  45. data/entry_types/scrolled/app/helpers/pageflow_scrolled/favicon_helper.rb +21 -0
  46. data/entry_types/scrolled/app/helpers/pageflow_scrolled/react_server_side_rendering_helper.rb +12 -5
  47. data/entry_types/scrolled/app/views/pageflow_scrolled/entries/show.html.erb +5 -7
  48. data/entry_types/scrolled/app/views/pageflow_scrolled/entry_json_seed/_theme.json.jbuilder +1 -0
  49. data/entry_types/scrolled/app/views/pageflow_scrolled/favicons/_entry.html.erb +10 -0
  50. data/entry_types/scrolled/config/locales/de.yml +655 -0
  51. data/entry_types/scrolled/config/locales/en.yml +522 -0
  52. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/install_generator.rb +5 -0
  53. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/android-chrome-192x192.png +0 -0
  54. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/android-chrome-512x512.png +0 -0
  55. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/apple-touch-icon.png +0 -0
  56. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/browserconfig.xml +9 -0
  57. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/favicon-16x16.png +0 -0
  58. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/favicon-32x32.png +0 -0
  59. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/favicon.ico +0 -0
  60. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/mstile-150x150.png +0 -0
  61. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/safari-pinned-tab.svg +46 -0
  62. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/favicons/site.webmanifest +19 -0
  63. data/entry_types/scrolled/lib/generators/pageflow_scrolled/install/templates/theme/unmute.mp3 +0 -0
  64. data/entry_types/scrolled/lib/tasks/pageflow_scrolled_tasks.rake +1 -0
  65. data/entry_types/scrolled/package/contentElements-editor.js +14 -1
  66. data/entry_types/scrolled/package/contentElements-frontend.css +1 -1
  67. data/entry_types/scrolled/package/contentElements-frontend.js +338 -104
  68. data/entry_types/scrolled/package/editor.js +594 -242
  69. data/entry_types/scrolled/package/frontend/{EditableText-4264c349.js → EditableText-43c50894.js} +331 -163
  70. data/entry_types/scrolled/package/frontend/{Wavesurfer-c3c45324.js → Wavesurfer-b88b02e0.js} +0 -3
  71. data/entry_types/scrolled/package/frontend/{components-cfe6a479.js → components-3ead1b4a.js} +509 -91
  72. data/entry_types/scrolled/package/frontend/index.css +2 -2
  73. data/entry_types/scrolled/package/frontend/index.js +2107 -1025
  74. data/entry_types/scrolled/package/package.json +15 -3
  75. data/lib/generators/pageflow/initializer/templates/pageflow.rb +2 -1
  76. data/lib/pageflow/engine.rb +0 -1
  77. data/lib/pageflow/themes.rb +4 -0
  78. data/lib/pageflow/version.rb +1 -1
  79. data/package/config/jest/index.js +7 -2
  80. data/package/config/webpack.js +1 -2
  81. data/package/editor.js +4 -4
  82. data/package/frontend.js +30 -13
  83. data/package/ui.js +99 -32
  84. metadata +25 -11
  85. data/app/assets/javascripts/pageflow/videojs.js +0 -6
  86. data/entry_types/scrolled/config/locales/new/de.yml +0 -601
  87. data/entry_types/scrolled/config/locales/new/en.yml +0 -507
@@ -1,4 +1,4 @@
1
- import { ConfigurationEditorTabView, SelectInputView, TextInputView, cssModulesUtils, SortableCollectionView, Object as Object$1, TextAreaInputView, CheckBoxInputView, inputView } from 'pageflow/ui';
1
+ import { ConfigurationEditorTabView, SelectInputView, TextInputView, cssModulesUtils, SortableCollectionView, Object as Object$1, TextAreaInputView, CheckBoxInputView, SliderInputView, inputView } from 'pageflow/ui';
2
2
  import * as globalInterop from 'pageflow/editor';
3
3
  import { editor as editor$1, configurationContainer, delayedDestroying, entryTypeEditorControllerUrls, failureTracking, ForeignKeySubsetCollection, orderedCollection, Configuration, Entry, modelLifecycleTrackingView, CollectionView, app, EditConfigurationView, cssModulesUtils as cssModulesUtils$1, FileInputView, ColorInputView } from 'pageflow/editor';
4
4
  import I18n, { t } from 'i18n-js';
@@ -6,6 +6,9 @@ import Backbone$1 from 'backbone';
6
6
  import Marionette from 'backbone.marionette';
7
7
  import React from 'react';
8
8
  import ReactDOM from 'react-dom';
9
+ import { createContext } from 'use-context-selector';
10
+ import { createSelectorCreator, defaultMemoize } from 'reselect';
11
+ import 'slugify';
9
12
  import { SectionThumbnail, getAvailableTransitionNames, getTransitionNames } from 'pageflow-scrolled/frontend';
10
13
  import $ from 'jquery';
11
14
  import { editor as editor$2 } from 'pageflow-scrolled/editor';
@@ -356,6 +359,7 @@ var SectionConfiguration = Configuration.extend({
356
359
  defaults: {
357
360
  transition: 'scroll',
358
361
  fullHeight: true,
362
+ exposeMotifArea: true,
359
363
  backdrop: {}
360
364
  },
361
365
  initialize: function initialize() {
@@ -404,26 +408,30 @@ var SectionConfiguration = Configuration.extend({
404
408
 
405
409
  case 'video':
406
410
  return this.set('backdrop', {
407
- video: this.get('backdropVideo')
411
+ video: this.get('backdropVideo'),
412
+ videoMotifArea: this.get('backdropVideoMotifArea')
408
413
  });
409
414
 
410
415
  default:
411
416
  return this.set('backdrop', {
412
417
  image: this.get('backdropImage'),
413
- imageMobile: this.get('backdropImageMobile')
418
+ imageMotifArea: this.get('backdropImageMotifArea'),
419
+ imageMobile: this.get('backdropImageMobile'),
420
+ imageMobileMotifArea: this.get('backdropImageMobileMotifArea')
414
421
  });
415
422
  }
416
423
  }
417
424
  });
418
425
  var FileSelectionHandler = function FileSelectionHandler(options) {
419
- var contentElement = options.entry.sections.get(options.id);
426
+ var section = options.entry.sections.get(options.id);
420
427
 
421
428
  this.call = function (file) {
422
- contentElement.configuration.setReference(options.attributeName, file);
429
+ section.configuration.setReference(options.attributeName, file);
430
+ section.configuration.set("".concat(options.attributeName, "MotifArea"), file.configuration.get('motifArea'));
423
431
  };
424
432
 
425
433
  this.getReferer = function () {
426
- return '/scrolled/sections/' + contentElement.id;
434
+ return '/scrolled/sections/' + section.id;
427
435
  };
428
436
  };
429
437
  editor$1.registerFileSelectionHandler('sectionConfiguration', FileSelectionHandler);
@@ -491,14 +499,26 @@ var ContentElement = Backbone$1.Model.extend({
491
499
  },
492
500
  applyDefaultConfiguration: function applyDefaultConfiguration(sibling) {
493
501
  this.configuration.set(_objectSpread2(_objectSpread2({}, this.getType().defaultConfig), {}, {
494
- position: sibling.getDefaultSiblingPosition()
502
+ position: sibling === null || sibling === void 0 ? void 0 : sibling.getDefaultSiblingPosition()
495
503
  }));
496
504
  },
505
+ getPosition: function getPosition() {
506
+ return this.configuration.get('position') || 'inline';
507
+ },
497
508
  getAvailablePositions: function getAvailablePositions() {
498
- return this.section.configuration.get('layout') === 'center' ? ['inline', 'left', 'right', 'full'] : ['inline', 'sticky', 'full'];
509
+ var supportedByLayout = this.section.configuration.get('layout') === 'center' ? ['inline', 'left', 'right', 'full'] : ['inline', 'sticky', 'full'];
510
+ var supportedByType = this.getType().supportedPositions;
511
+
512
+ if (supportedByType) {
513
+ return supportedByLayout.filter(function (position) {
514
+ return supportedByType.includes(position);
515
+ });
516
+ } else {
517
+ return supportedByLayout;
518
+ }
499
519
  },
500
520
  getDefaultSiblingPosition: function getDefaultSiblingPosition() {
501
- var position = this.configuration.get('position') || 'inline';
521
+ var position = this.getPosition();
502
522
 
503
523
  if (position === 'full') {
504
524
  return 'inline';
@@ -516,213 +536,421 @@ var ContentElementsCollection = Backbone$1.Collection.extend({
516
536
  comparator: 'position'
517
537
  });
518
538
 
519
- // update the order of content elements in a section. New content
520
- // elements are persisted and updated with ids/perma ids read from the
521
- // response.
522
- //
523
- // More complex changes can be performed via command
524
- // objects. Those can be used to manipulate items that represents a
525
- // content element in the batch request. Moreover, each command can
526
- // contain logic that performs updates once the request has succeeded
527
- // or rolls back local changes if the request fails.
528
-
529
- function batch(section, commands) {
530
- Backbone$1.sync('update', section, {
531
- url: "".concat(section.url(), "/content_elements/batch"),
532
- attrs: {
533
- content_elements: createBatchItems(section, commands)
534
- },
535
- success: function success(response) {
536
- storePersistedIds(section, response);
537
- commands.forEach(function (command) {
538
- return command.complete();
539
- });
540
- },
541
- error: function error() {
542
- commands.forEach(function (command) {
543
- return command.rollback();
544
- });
545
- }
546
- });
539
+ function _arrayWithoutHoles(arr) {
540
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
547
541
  }
548
- var nullCommand = {
549
- batchItemFor: function batchItemFor() {},
550
- complete: function complete() {},
551
- rollback: function rollback() {}
552
- };
553
542
 
554
- function createBatchItems(section, commands) {
555
- return section.contentElements.map(function (contentElement) {
556
- var item = findBatchItemFromCommand(contentElement, commands);
543
+ function _iterableToArray(iter) {
544
+ if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
545
+ }
557
546
 
558
- if (item) {
559
- return item;
560
- } else if (contentElement.isNew()) {
561
- return {
562
- typeName: contentElement.get('typeName'),
563
- configuration: contentElement.configuration.toJSON()
564
- };
565
- } else {
566
- return contentElement.pick('id');
567
- }
568
- });
547
+ function _nonIterableSpread() {
548
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
569
549
  }
570
550
 
571
- function findBatchItemFromCommand(contentElement, commands) {
572
- return commands.reduce(function (result, command) {
573
- return result || command.batchItemFor(contentElement);
574
- }, null);
551
+ function _toConsumableArray(arr) {
552
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
575
553
  }
576
554
 
577
- function storePersistedIds(section, response) {
578
- section.contentElements.each(function (contentElement, index) {
579
- if (contentElement.isNew()) {
580
- contentElement.set({
581
- id: response[index].id,
582
- permaId: response[index].permaId
555
+ // persisting the changes to the server in a single request and
556
+ // applying them to the section once the requests succeeds.
557
+
558
+ function Batch(entry, section) {
559
+ // Shallow copy of the section's list of content elements to store
560
+ // ordering changes and newly inserted content elements.
561
+ var contentElements = section.contentElements.toArray(); // Since contentElements is only a shallow copy, we cannot write
562
+ // configuration changes to the actual content elements.
563
+
564
+ var changedConfigurations = {}; // Content elements that have been removed from contentElements
565
+ // and shall be deleted on the server.
566
+
567
+ var markedForDeletion = []; // Track whether changes have been recorded which need to be
568
+ // persisted to the server.
569
+
570
+ var isDirty = false;
571
+ return {
572
+ getAdjacent: getAdjacent,
573
+ split: split,
574
+ maybeMerge: maybeMerge,
575
+ insertBefore: insertBefore,
576
+ insertAfter: insertAfter,
577
+ markForUpdate: markForUpdate,
578
+ markForDeletion: markForDeletion,
579
+ remove: remove,
580
+ save: save,
581
+ saveIfDirty: saveIfDirty
582
+ };
583
+
584
+ function getAdjacent(contentElement) {
585
+ var index = contentElements.indexOf(contentElement);
586
+ return [contentElements[index - 1], contentElements[index + 1]];
587
+ } // Higher level transformations based on the more low level
588
+ // transformations below:
589
+
590
+
591
+ function split(contentElement, splitPoint) {
592
+ var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
593
+ insertAt = _ref.insertAt;
594
+
595
+ var _contentElement$getTy = contentElement.getType().split(getCurrentConfiguration(contentElement), splitPoint),
596
+ _contentElement$getTy2 = _slicedToArray(_contentElement$getTy, 2),
597
+ c1 = _contentElement$getTy2[0],
598
+ c2 = _contentElement$getTy2[1];
599
+
600
+ var splitOffContentElement;
601
+
602
+ if (insertAt === 'before') {
603
+ splitOffContentElement = new ContentElement({
604
+ typeName: contentElement.get('typeName'),
605
+ configuration: c1
606
+ });
607
+ insertBefore(contentElement, splitOffContentElement);
608
+ markForUpdate(contentElement, c2);
609
+ } else {
610
+ splitOffContentElement = new ContentElement({
611
+ typeName: contentElement.get('typeName'),
612
+ configuration: c2
583
613
  });
614
+ markForUpdate(contentElement, c1);
615
+ insertAfter(contentElement, splitOffContentElement);
584
616
  }
585
- });
586
- }
587
617
 
588
- function insertContentElement(entry, sibling, attributes, _ref) {
589
- var at = _ref.at,
590
- splitPoint = _ref.splitPoint;
591
- var section = sibling.section;
592
- var insertIndex = reindexPositionsToMakeRoomForInsertion(section, sibling, at);
593
- var commands = [at === 'split' && prepareSplit(entry, section, sibling, splitPoint), prepareInsertion(entry, section, sibling, attributes, insertIndex)].filter(Boolean);
594
- section.contentElements.sort();
595
- batch(section, commands);
596
- }
618
+ return splitOffContentElement;
619
+ }
597
620
 
598
- function reindexPositionsToMakeRoomForInsertion(section, sibling, at) {
599
- var delta = 0;
600
- var insertIndex;
601
- section.contentElements.forEach(function (contentElement, index) {
602
- if (contentElement === sibling && at === 'before') {
603
- delta = 1;
604
- insertIndex = index;
621
+ function maybeMerge(before, after) {
622
+ if (!before || !after || before.get('typeName') !== after.get('typeName') || !before.getType().merge) {
623
+ return;
605
624
  }
606
625
 
607
- contentElement.set('position', index + delta);
626
+ var mergedConfiguration = before.getType().merge(getCurrentConfiguration(before), getCurrentConfiguration(after)); // Update the aleady persisted content element, if one has not yet
627
+ // been persisted. For example, let X be a content element in
628
+ // between two text blocks T1 and T2:
629
+ //
630
+ // T1
631
+ // paragraph A
632
+ // paragraph B
633
+ // X
634
+ // T2
635
+ // paragraph C
636
+ //
637
+ // When X shall be moved between the two paragraphs of T1, the
638
+ // second paragraph of T1 will first be split off into a new
639
+ // content element T3:
640
+ //
641
+ // T1
642
+ // paragraph A
643
+ // T3
644
+ // paragraph B
645
+ // X
646
+ // T2
647
+ // paragraph C
648
+ //
649
+ // Then X will be moved:
650
+ //
651
+ // T1
652
+ // paragraph A
653
+ // X
654
+ // T3
655
+ // paragraph B
656
+ // T2
657
+ // paragraph C
658
+ //
659
+ // T3 and T2 become adjacent and need to be merged. We now want to
660
+ // update T2 instead of creating T3 and deleting T2. Final state:
661
+ //
662
+ // T1
663
+ // paragraph A
664
+ // X
665
+ // T2
666
+ // paragraph B
667
+ // paragraph C
668
+ //
669
+
670
+ if (before.isNew() && !after.isNew()) {
671
+ remove(before);
672
+ markForUpdate(after, mergedConfiguration);
673
+ } else {
674
+ markForUpdate(before, mergedConfiguration);
675
+ remove(after);
608
676
 
609
- if (contentElement === sibling) {
610
- if (at === 'after') {
611
- delta = 1;
612
- insertIndex = index + 1;
613
- } else if (at === 'split') {
614
- delta = 2;
615
- insertIndex = index + 1;
677
+ if (!after.isNew()) {
678
+ markForDeletion(after);
616
679
  }
617
680
  }
618
- });
619
- return insertIndex;
620
- }
681
+ }
621
682
 
622
- function prepareSplit(entry, section, sibling, splitPoint) {
623
- var _sibling$getType$spli = sibling.getType().split(sibling.configuration.attributes, splitPoint),
624
- _sibling$getType$spli2 = _slicedToArray(_sibling$getType$spli, 2),
625
- c1 = _sibling$getType$spli2[0],
626
- c2 = _sibling$getType$spli2[1];
683
+ function insertBefore(sibling, contentElement) {
684
+ isDirty = true;
685
+ contentElements.splice(contentElements.indexOf(sibling), 0, contentElement);
686
+ }
627
687
 
628
- var splitOffContentElement = new ContentElement({
629
- typeName: sibling.get('typeName'),
630
- configuration: c2,
631
- position: sibling.get('position') + 2
632
- });
633
- section.contentElements.add(splitOffContentElement);
634
- return {
635
- batchItemFor: function batchItemFor(contentElement) {
636
- if (contentElement === sibling) {
688
+ function insertAfter(sibling, contentElement) {
689
+ isDirty = true;
690
+ contentElements.splice(contentElements.indexOf(sibling) + 1, 0, contentElement);
691
+ }
692
+
693
+ function markForUpdate(contentElement, configuration) {
694
+ isDirty = true;
695
+ changedConfigurations[contentElement.id] = configuration;
696
+ }
697
+
698
+ function markForDeletion(contentElement) {
699
+ isDirty = true;
700
+ markedForDeletion.push(contentElement);
701
+ }
702
+
703
+ function remove(contentElement) {
704
+ // We do not mark the batch as dirty here to allow removing an
705
+ // element and adding it to another section. We are fine with
706
+ // the resulting gap in the position attributes of the section's
707
+ // content elements.
708
+ contentElements.splice(contentElements.indexOf(contentElement), 1);
709
+ }
710
+
711
+ function getCurrentConfiguration(contentElement) {
712
+ return changedConfigurations[contentElement.id] || contentElement.configuration.attributes;
713
+ } // Functionality to assemble and perform the batch request to
714
+ // persist the recorded changes:
715
+
716
+
717
+ function saveIfDirty(options) {
718
+ if (isDirty) {
719
+ save(options);
720
+ }
721
+ }
722
+
723
+ function save() {
724
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
725
+ _success = _ref2.success;
726
+
727
+ isDirty = false;
728
+ Backbone$1.sync('update', section, {
729
+ url: "".concat(section.url(), "/content_elements/batch"),
730
+ attrs: {
731
+ content_elements: createBatchItems()
732
+ },
733
+ success: function success(response) {
734
+ applyConfigurationChanges();
735
+ applyPositions();
736
+ applyAdditions(response);
737
+ applyDeletions();
738
+ section.contentElements.sort();
739
+
740
+ if (_success) {
741
+ _success();
742
+ }
743
+ }
744
+ });
745
+ }
746
+
747
+ function createBatchItems() {
748
+ return [].concat(_toConsumableArray(contentElements.map(function (contentElement) {
749
+ if (contentElement.isNew()) {
750
+ return {
751
+ typeName: contentElement.get('typeName'),
752
+ configuration: contentElement.configuration.attributes
753
+ };
754
+ } else if (changedConfigurations[contentElement.id]) {
637
755
  return {
638
756
  id: contentElement.id,
639
- configuration: c1
757
+ configuration: changedConfigurations[contentElement.id]
640
758
  };
759
+ } else {
760
+ return contentElement.pick('id');
641
761
  }
642
- },
643
- complete: function complete() {
644
- // Only persisted models are synchronized to React state. The
645
- // added content element therefore only becomes visible in the
646
- // preview after the batch request completed. Thus, we have to
647
- // wait with removing the split off part of the configuration.
648
- sibling.configuration.set(c1, {
762
+ })), _toConsumableArray(markedForDeletion.map(function (contentElement) {
763
+ return {
764
+ id: contentElement.id,
765
+ _delete: true
766
+ };
767
+ })));
768
+ } // Functionality to apply the recorded changes to the underlying
769
+ // section once the request succeeded:
770
+
771
+
772
+ function applyAdditions(response) {
773
+ contentElements.forEach(function (contentElement, index) {
774
+ if (contentElement.isNew()) {
775
+ section.contentElements.add(contentElement);
776
+ contentElement.set({
777
+ id: response[index].id,
778
+ permaId: response[index].permaId
779
+ });
780
+ } else if (contentElement.section !== section) {
781
+ contentElement.section.contentElements.remove(contentElement);
782
+ section.contentElements.add(contentElement);
783
+ }
784
+ });
785
+ }
786
+
787
+ function applyDeletions() {
788
+ markedForDeletion.forEach(function (contentElement) {
789
+ return entry.contentElements.remove(contentElement);
790
+ });
791
+ }
792
+
793
+ function applyPositions() {
794
+ contentElements.forEach(function (contentElement, index) {
795
+ return contentElement.set('position', index, {
649
796
  autoSave: false
650
797
  });
651
- },
652
- rollback: function rollback() {
653
- entry.contentElements.remove(splitOffContentElement);
654
- }
655
- };
798
+ });
799
+ }
800
+
801
+ function applyConfigurationChanges() {
802
+ contentElements.forEach(function (contentElement) {
803
+ if (changedConfigurations[contentElement.id]) {
804
+ contentElement.configuration.set(changedConfigurations[contentElement.id], {
805
+ autoSave: false
806
+ });
807
+ }
808
+ });
809
+ }
656
810
  }
657
811
 
658
- function prepareInsertion(entry, section, sibling, attributes, index) {
659
- var contentElement = new ContentElement(_objectSpread2(_objectSpread2({}, attributes), {}, {
660
- position: index
661
- }));
812
+ // element (e.g. between two paragraphs of a text block).
813
+
814
+ function insertContentElement(entry, sibling, attributes, _ref) {
815
+ var at = _ref.at,
816
+ splitPoint = _ref.splitPoint;
817
+ var batch = new Batch(entry, sibling.section);
818
+
819
+ if (at === 'split') {
820
+ batch.split(sibling, splitPoint, {
821
+ insertAt: 'after'
822
+ });
823
+ }
824
+
825
+ var contentElement = new ContentElement(attributes);
662
826
  contentElement.applyDefaultConfiguration(sibling);
663
- section.contentElements.add(contentElement);
664
- return _objectSpread2(_objectSpread2({}, nullCommand), {}, {
665
- complete: function complete() {
827
+
828
+ if (at === 'before') {
829
+ batch.insertBefore(sibling, contentElement);
830
+ } else {
831
+ batch.insertAfter(sibling, contentElement);
832
+ }
833
+
834
+ batch.save({
835
+ success: function success() {
666
836
  entry.trigger('selectContentElement', contentElement);
667
- },
668
- rollback: function rollback() {
669
- entry.contentElements.remove(contentElement);
670
837
  }
671
838
  });
672
839
  }
673
840
 
674
- function deleteContentElement(entry, contentElement) {
675
- batch(contentElement.section, [prepareMerge(entry, contentElement), prepareDeletion(entry, contentElement)]);
676
- }
841
+ // moving content elements to "split points" inside content elements
842
+ // with custom split functions (e.g. between two paragraphs of a text
843
+ // block). Merge content elements of the same type that become
844
+ // adjacent by moving a content element away (e.g. two text blocks
845
+ // surrounding an image that is moved away).
846
+
847
+ function moveContentElement(entry, contentElement, sibling, at, splitPoint) {
848
+ var sourceBatch = new Batch(entry, contentElement.section); // If we move content elements between sections, merges will need to
849
+ // be performed in the section where the content element came from.
850
+
851
+ var targetBatch = sibling.section === contentElement.section ? sourceBatch : new Batch(entry, sibling.section);
852
+
853
+ if (at === 'split') {
854
+ // When moving a content element to a split point in the adjacent
855
+ // element below, insert split off element before sibling so that
856
+ // is can directly be merged again. For example, let X be a
857
+ // content element in between two text blocks T1 and T2:
858
+ //
859
+ // T1
860
+ // paragraph A
861
+ // X
862
+ // T2
863
+ // paragraph B
864
+ // paragraph C
865
+ //
866
+ // When X shall be moved between the two paragraphs of T2, we want
867
+ // to split off the first paragraph of T2 into a new content
868
+ // element T3 and move X:
869
+ //
870
+ // T1
871
+ // T1 paragraph A
872
+ // X
873
+ // T3
874
+ // T1 paragraph B
875
+ // T2
876
+ // T2 paragraph C
877
+ //
878
+ // T3 becomes the new sibling that we want to move X after:
879
+ //
880
+ // T1
881
+ // T1 paragraph A
882
+ // T3
883
+ // T1 paragraph B
884
+ // X
885
+ // T2
886
+ // T2 paragraph C
887
+ //
888
+ // When we later merge T1 and T3, T1 will be updated making T3
889
+ // disappear again without ever persisting it to the server:
890
+ //
891
+ // T1
892
+ // T1 paragraph A
893
+ // T1 paragraph B
894
+ // X
895
+ // T2
896
+ // T2 paragraph C
897
+ //
898
+ if (sourceBatch.getAdjacent(contentElement)[1] === sibling) {
899
+ sibling = targetBatch.split(sibling, splitPoint, {
900
+ insertAt: 'before'
901
+ });
902
+ } else {
903
+ targetBatch.split(sibling, splitPoint);
904
+ }
905
+ }
677
906
 
678
- function prepareDeletion(entry, deletedContentElement) {
679
- return _objectSpread2(_objectSpread2({}, nullCommand), {}, {
680
- batchItemFor: function batchItemFor(contentElement) {
681
- if (contentElement === deletedContentElement) {
682
- return {
683
- id: contentElement.id,
684
- _delete: true
685
- };
686
- }
687
- },
688
- complete: function complete() {
689
- entry.contentElements.remove(deletedContentElement);
907
+ var _sourceBatch$getAdjac = sourceBatch.getAdjacent(contentElement),
908
+ _sourceBatch$getAdjac2 = _slicedToArray(_sourceBatch$getAdjac, 2),
909
+ before = _sourceBatch$getAdjac2[0],
910
+ after = _sourceBatch$getAdjac2[1]; // Check if element was dragged to same position where it came from.
911
+
912
+
913
+ if (!(at === 'before' && sibling === after) && !(at === 'after' && sibling === before)) {
914
+ sourceBatch.remove(contentElement);
915
+
916
+ if (at === 'before') {
917
+ targetBatch.insertBefore(sibling, contentElement);
918
+ } else {
919
+ targetBatch.insertAfter(sibling, contentElement);
690
920
  }
691
- });
692
- }
693
921
 
694
- function prepareMerge(entry, deletedContentElement) {
695
- var _deletedContentElemen = deletedContentElement.getAdjacentContentElements(),
696
- _deletedContentElemen2 = _slicedToArray(_deletedContentElemen, 2),
697
- before = _deletedContentElemen2[0],
698
- after = _deletedContentElemen2[1];
922
+ sourceBatch.maybeMerge(before, after);
923
+ } // Dragging an element next to a sticky element, shall make the
924
+ // moved element sticky as well.
925
+
699
926
 
700
- if (!before || !after || before.get('typeName') !== after.get('typeName') || !before.getType().merge) {
701
- return nullCommand;
927
+ copyPositionIfAvailable(targetBatch, contentElement, sibling);
928
+ targetBatch.saveIfDirty();
929
+ sourceBatch.saveIfDirty();
930
+ }
931
+
932
+ function copyPositionIfAvailable(batch, contentElement, sibling) {
933
+ if (contentElement.getPosition() !== sibling.getPosition() && contentElement.getAvailablePositions().includes(sibling.getPosition())) {
934
+ batch.markForUpdate(contentElement, _objectSpread2(_objectSpread2({}, contentElement.configuration.toJSON), {}, {
935
+ position: sibling.getPosition()
936
+ }));
702
937
  }
938
+ }
703
939
 
704
- var mergedConfiguration = before.getType().merge(before.configuration.attributes, after.configuration.attributes);
705
- return _objectSpread2(_objectSpread2({}, nullCommand), {}, {
706
- batchItemFor: function batchItemFor(contentElement) {
707
- if (contentElement === before) {
708
- return {
709
- id: contentElement.id,
710
- configuration: mergedConfiguration
711
- };
712
- } else if (contentElement === after) {
713
- return {
714
- id: contentElement.id,
715
- _delete: true
716
- };
717
- }
718
- },
719
- complete: function complete() {
720
- before.configuration.set(mergedConfiguration, {
721
- autoSave: false
722
- });
723
- entry.contentElements.remove(after);
724
- }
725
- });
940
+ // (e.g. two text blocks surrounding a deleted image).
941
+
942
+ function deleteContentElement(entry, contentElement) {
943
+ var batch = new Batch(entry, contentElement.section);
944
+
945
+ var _batch$getAdjacent = batch.getAdjacent(contentElement),
946
+ _batch$getAdjacent2 = _slicedToArray(_batch$getAdjacent, 2),
947
+ before = _batch$getAdjacent2[0],
948
+ after = _batch$getAdjacent2[1];
949
+
950
+ batch.remove(contentElement);
951
+ batch.markForDeletion(contentElement);
952
+ batch.maybeMerge(before, after);
953
+ batch.save();
726
954
  }
727
955
 
728
956
  var ScrolledEntry = Entry.extend({
@@ -761,9 +989,12 @@ var ScrolledEntry = Entry.extend({
761
989
  splitPoint = _ref.splitPoint;
762
990
 
763
991
  if (at === 'endOfSection') {
764
- var contentElement = this.sections.get(id).contentElements.create(_objectSpread2({
992
+ var contentElement = new ContentElement(_objectSpread2({
765
993
  position: this.contentElements.length
766
994
  }, attributes));
995
+ contentElement.applyDefaultConfiguration();
996
+ this.sections.get(id).contentElements.add(contentElement);
997
+ contentElement.save();
767
998
  contentElement.once('sync', function () {
768
999
  _this.trigger('selectContentElement', contentElement);
769
1000
  });
@@ -775,6 +1006,13 @@ var ScrolledEntry = Entry.extend({
775
1006
  });
776
1007
  }
777
1008
  },
1009
+ moveContentElement: function moveContentElement$1(movedContentElementId, _ref2) {
1010
+ var id = _ref2.id,
1011
+ at = _ref2.at,
1012
+ splitPoint = _ref2.splitPoint;
1013
+
1014
+ moveContentElement(this, this.contentElements.get(movedContentElementId), this.contentElements.get(id), at, splitPoint);
1015
+ },
778
1016
  deleteContentElement: function deleteContentElement$1(id) {
779
1017
  deleteContentElement(this, this.contentElements.get(id));
780
1018
  }
@@ -930,7 +1168,7 @@ function getAttributes(model, _ref5) {
930
1168
  var value = attributeName[key];
931
1169
 
932
1170
  if (typeof value == 'function') {
933
- result[key] = value();
1171
+ result[key] = value(model.get(key));
934
1172
  } else {
935
1173
  result[key] = model.get(value);
936
1174
  }
@@ -946,8 +1184,15 @@ function getAttributes(model, _ref5) {
946
1184
  }
947
1185
  return result;
948
1186
  }
1187
+ var createShallowEqualArraysSelector = createSelectorCreator(defaultMemoize, shallowEqualArrays);
949
1188
 
950
- var Context = React.createContext();
1189
+ function shallowEqualArrays(a, b) {
1190
+ return a.length === b.length && a.every(function (item, index) {
1191
+ return item === b[index];
1192
+ });
1193
+ }
1194
+
1195
+ var Context = createContext();
951
1196
 
952
1197
  function watchCollections(entry, _ref) {
953
1198
  var dispatch = _ref.dispatch;
@@ -999,7 +1244,13 @@ function watchCollections(entry, _ref) {
999
1244
  permaId: 'perma_id'
1000
1245
  }, 'width', 'height', 'basename', 'rights', {
1001
1246
  isReady: 'is_ready'
1002
- }, 'variants', {
1247
+ }, {
1248
+ variants: function variants(_variants) {
1249
+ return _variants && _variants.map(function (variant) {
1250
+ return camelize(variant);
1251
+ });
1252
+ }
1253
+ }, {
1003
1254
  durationInMs: 'duration_in_ms'
1004
1255
  }, {
1005
1256
  parentFileId: 'parent_file_id'
@@ -1290,12 +1541,12 @@ var PreviewMessageController = Object$1.extend({
1290
1541
  handleMessage: function handleMessage(message) {
1291
1542
  var _this = this;
1292
1543
 
1544
+ var postMessage = function postMessage(message) {
1545
+ _this.iframeWindow.postMessage(message, window.location.origin);
1546
+ };
1547
+
1293
1548
  if (window.location.href.indexOf(message.origin) === 0) {
1294
1549
  if (message.data.type === 'READY') {
1295
- var postMessage = function postMessage(message) {
1296
- _this.iframeWindow.postMessage(message, window.location.origin);
1297
- };
1298
-
1299
1550
  watchCollections(this.entry, {
1300
1551
  dispatch: function dispatch(action) {
1301
1552
  postMessage({
@@ -1401,20 +1652,39 @@ var PreviewMessageController = Object$1.extend({
1401
1652
  },
1402
1653
  editor: this.editor
1403
1654
  });
1404
- } else if (message.data.type === 'UPDATE_CONTENT_ELEMENT') {
1655
+ } else if (message.data.type === 'MOVE_CONTENT_ELEMENT') {
1405
1656
  var _message$data$payload3 = message.data.payload,
1406
1657
  _id2 = _message$data$payload3.id,
1407
- configuration = _message$data$payload3.configuration;
1408
- this.entry.contentElements.get(_id2).configuration.set(configuration, {
1658
+ to = _message$data$payload3.to;
1659
+ this.entry.moveContentElement(_id2, to);
1660
+ } else if (message.data.type === 'UPDATE_CONTENT_ELEMENT') {
1661
+ var _message$data$payload4 = message.data.payload,
1662
+ _id3 = _message$data$payload4.id,
1663
+ configuration = _message$data$payload4.configuration;
1664
+ this.entry.contentElements.get(_id3).configuration.set(configuration, {
1409
1665
  ignoreInWatchCollection: true
1410
1666
  });
1411
1667
  } else if (message.data.type === 'UPDATE_TRANSIENT_CONTENT_ELEMENT_STATE') {
1412
- var _message$data$payload4 = message.data.payload,
1413
- _id3 = _message$data$payload4.id,
1414
- state = _message$data$payload4.state;
1415
- this.entry.contentElements.get(_id3).set('transientState', state);
1668
+ var _message$data$payload5 = message.data.payload,
1669
+ _id4 = _message$data$payload5.id,
1670
+ state = _message$data$payload5.state;
1671
+ this.entry.contentElements.get(_id4).set('transientState', state);
1672
+ } else if (message.data.type === 'SAVED_SCROLL_POINT' && this.currentScrollPointCallback) {
1673
+ this.currentScrollPointCallback();
1674
+ this.currentScrollPointCallback = null;
1675
+ setTimeout(function () {
1676
+ return postMessage({
1677
+ type: 'RESTORE_SCROLL_POINT'
1678
+ });
1679
+ }, 100);
1416
1680
  }
1417
1681
  }
1682
+ },
1683
+ preserveScrollPoint: function preserveScrollPoint(callback) {
1684
+ this.currentScrollPointCallback = callback;
1685
+ this.iframeWindow.postMessage({
1686
+ type: 'SAVE_SCROLL_POINT'
1687
+ }, window.location.origin);
1418
1688
  }
1419
1689
  });
1420
1690
 
@@ -1466,13 +1736,17 @@ var EntryPreviewView = Marionette.ItemView.extend({
1466
1736
  this.messageController.dispose();
1467
1737
  },
1468
1738
  updateEmulationMode: function updateEmulationMode() {
1469
- if (this.model.previous('emulation_mode')) {
1470
- this.$el.removeClass(styles$5[this.emulationModeClassName(this.model.previous('emulation_mode'))]);
1471
- }
1739
+ var _this = this;
1472
1740
 
1473
- if (this.model.get('emulation_mode')) {
1474
- this.$el.addClass(styles$5[this.emulationModeClassName(this.model.get('emulation_mode'))]);
1475
- }
1741
+ this.messageController.preserveScrollPoint(function () {
1742
+ if (_this.model.previous('emulation_mode')) {
1743
+ _this.$el.removeClass(styles$5[_this.emulationModeClassName(_this.model.previous('emulation_mode'))]);
1744
+ }
1745
+
1746
+ if (_this.model.get('emulation_mode')) {
1747
+ _this.$el.addClass(styles$5[_this.emulationModeClassName(_this.model.get('emulation_mode'))]);
1748
+ }
1749
+ });
1476
1750
  },
1477
1751
  emulationModeClassName: function emulationModeClassName(mode) {
1478
1752
  return "".concat(mode, "EmulationMode");
@@ -1522,6 +1796,10 @@ var EditChapterView = EditConfigurationView.extend({
1522
1796
  }
1523
1797
  });
1524
1798
 
1799
+ function _toArray(arr) {
1800
+ return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();
1801
+ }
1802
+
1525
1803
  var css$8 = ".imgareaselect-border1,\n.imgareaselect-border2,\n.imgareaselect-border3,\n.imgareaselect-border4 {\n opacity: 0.5;\n}\n\n.imgareaselect-handle {\n background-color: #fff;\n border: solid 1px #000;\n opacity: 0.5;\n}\n\n.imgareaselect-outer {\n background-color: #000;\n opacity: 0.5;\n}\n";
1526
1804
  styleInject(css$8);
1527
1805
 
@@ -1604,6 +1882,9 @@ styleInject(css$8);
1604
1882
  /* Image dimensions (as returned by .width() and .height()) */
1605
1883
  imgWidth,
1606
1884
  imgHeight,
1885
+ gridX,
1886
+ gridY,
1887
+ gridSteps = 20,
1607
1888
 
1608
1889
  /*
1609
1890
  * jQuery object representing the parent element that the plugin
@@ -1836,11 +2117,20 @@ styleInject(css$8);
1836
2117
  minHeight = round(options.minHeight / scaleY) || 0;
1837
2118
  maxWidth = round(min(options.maxWidth / scaleX || 1 << 24, imgWidth));
1838
2119
  maxHeight = round(min(options.maxHeight / scaleY || 1 << 24, imgHeight));
2120
+
2121
+ if (imgWidth > imgHeight) {
2122
+ gridX = imgWidth / gridSteps;
2123
+ gridY = imgHeight < gridX ? imgHeight : gridX + imgHeight % gridX / Math.floor(imgHeight / gridX);
2124
+ } else {
2125
+ gridY = imgHeight / gridSteps;
2126
+ gridX = imgWidth < gridY ? imgWidth : gridY + imgWidth % gridY / Math.floor(imgWidth / gridY);
2127
+ }
1839
2128
  /*
1840
2129
  * Workaround for jQuery 1.3.2 incorrect offset calculation, originally
1841
2130
  * observed in Safari 3. Firefox 2 is also affected.
1842
2131
  */
1843
2132
 
2133
+
1844
2134
  if ($().jquery == '1.3.2' && position == 'fixed' && !docElem['getBoundingClientRect']) {
1845
2135
  imgOfs.top += max(document.body.scrollTop, docElem.scrollTop);
1846
2136
  imgOfs.left += max(document.body.scrollLeft, docElem.scrollLeft);
@@ -2168,6 +2458,7 @@ styleInject(css$8);
2168
2458
  fixAspectRatio(true);
2169
2459
  }
2170
2460
 
2461
+ snapToGrid();
2171
2462
  selection = {
2172
2463
  x1: selX(min(x1, x2)),
2173
2464
  x2: selX(max(x1, x2)),
@@ -2203,8 +2494,11 @@ styleInject(css$8);
2203
2494
 
2204
2495
 
2205
2496
  function doMove(newX1, newY1) {
2206
- x2 = (x1 = newX1) + selection.width;
2207
- y2 = (y1 = newY1) + selection.height;
2497
+ x1 = newX1;
2498
+ y1 = newY1;
2499
+ snapToGrid();
2500
+ x2 = x1 + selection.width;
2501
+ y2 = y1 + selection.height;
2208
2502
  $.extend(selection, {
2209
2503
  x1: selX(x1),
2210
2504
  y1: selY(y1),
@@ -2213,6 +2507,13 @@ styleInject(css$8);
2213
2507
  });
2214
2508
  update();
2215
2509
  options.onSelectChange(img, getSelection());
2510
+ }
2511
+
2512
+ function snapToGrid() {
2513
+ x1 = Math.round(x1 / gridX) * gridX;
2514
+ x2 = Math.round(x2 / gridX) * gridX;
2515
+ y1 = Math.round(y1 / gridY) * gridY;
2516
+ y2 = Math.round(y2 / gridY) * gridY;
2216
2517
  } //
2217
2518
  // Mousemove event handler triggered when the selection area is being moved
2218
2519
  //
@@ -2764,7 +3065,7 @@ styleInject(css$8);
2764
3065
  };
2765
3066
  })($);
2766
3067
 
2767
- var css$9 = ".icons-module_icon__16IVx::before,\n.icons-module_icon__16IVx::after {\n font-family: \"entypo\";\n}.icons-module_arrowsCcw__3_nrJ,\n.icons-module_attention__1sssG,\n.icons-module_cancel__1PjiX,\n.icons-module_check__3Lkw9,\n.icons-module_drag__p7HUE,\n.icons-module_helpCircled__D_oKU,\n.icons-module_plusCircled__20FlJ,\n.icons-module_rightOpen__9vsOG,\n.icons-module_trash__DH1EH {\n}.icons-module_arrowsCcw__3_nrJ::before {\n content: \"\\1F504\";\n}.icons-module_attention__1sssG::before {\n content: \"\\26A0\";\n}.icons-module_cancel__1PjiX::before {\n content: \"\\2715\";\n}.icons-module_check__3Lkw9::before {\n content: \"\\2713\";\n}.icons-module_drag__p7HUE {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n line-height: 10px;\n}.icons-module_drag__p7HUE::before {\n content: \"\\E75F\";\n}.icons-module_drag__p7HUE::after {\n content: \"\\E75C\";\n}.icons-module_helpCircled__D_oKU::before {\n content: \"\\E704\";\n}.icons-module_plusCircled__20FlJ::before {\n content: \"\\2795\";\n}.icons-module_rightOpen__9vsOG::before {\n content: \"\\E75E\"\n}.icons-module_trash__DH1EH::before {\n content: \"\\E729\";\n}.icons-module_chrome__1XHpi {\n background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgd2lkdGg9Ijk2cHgiIGhlaWdodD0iOTZweCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTM0LDI0YzAsNS41MjEtNC40NzksMTAtMTAsMTBzLTEwLTQuNDc5LTEwLTEwczQuNDc5LTEwLDEwLTEwUzM0LDE4LjQ3OSwzNCwyNHoiLz48bGluZWFyR3JhZGllbnQgaWQ9IlBheDhKY25Neml2dThmflNafmsxeWEiIHgxPSI1Ljc4OSIgeDI9IjMxLjMyNCIgeTE9IjM0LjM1NiIgeTI9IjIwLjc3OSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDUwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzRjYWY1MCIvPjxzdG9wIG9mZnNldD0iLjQ4OSIgc3RvcC1jb2xvcj0iIzRhYWY1MCIvPjxzdG9wIG9mZnNldD0iLjY2NSIgc3RvcC1jb2xvcj0iIzQzYWQ1MCIvPjxzdG9wIG9mZnNldD0iLjc5IiBzdG9wLWNvbG9yPSIjMzhhYTUwIi8+PHN0b3Agb2Zmc2V0PSIuODkyIiBzdG9wLWNvbG9yPSIjMjdhNTUwIi8+PHN0b3Agb2Zmc2V0PSIuOTc4IiBzdG9wLWNvbG9yPSIjMTFhMDUwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMGE5ZTUwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI1BheDhKY25Neml2dThmflNafmsxeWEpIiBkPSJNMzEuMzMsMjkuMjFsLTguMTYsMTQuNzdDMTIuNTEsNDMuNTUsNCwzNC43Niw0LDI0QzQsMTIuOTYsMTIuOTYsNCwyNCw0djExIGMtNC45NywwLTksNC4wMy05LDlzNC4wMyw5LDksOUMyNy4wMywzMywyOS43LDMxLjUxLDMxLjMzLDI5LjIxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0iUGF4OEpjbk16aXZ1OGZ+U1p+azF5YiIgeDE9IjMzLjU4IiB4Mj0iMzMuNTgiIHkxPSI2IiB5Mj0iMzQuNzk3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNTApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNzQ3Ii8+PHN0b3Agb2Zmc2V0PSIuNDgyIiBzdG9wLWNvbG9yPSIjZmZkNjQ1Ii8+PHN0b3Agb2Zmc2V0PSIuNjU1IiBzdG9wLWNvbG9yPSIjZmVkNDNlIi8+PHN0b3Agb2Zmc2V0PSIuNzc5IiBzdG9wLWNvbG9yPSIjZmNjZjMzIi8+PHN0b3Agb2Zmc2V0PSIuODc5IiBzdG9wLWNvbG9yPSIjZmFjOTIyIi8+PHN0b3Agb2Zmc2V0PSIuOTY0IiBzdG9wLWNvbG9yPSIjZjdjMTBjIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZjViYzAwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI1BheDhKY25Neml2dThmflNafmsxeWIpIiBkPSJNNDQsMjRjMCwxMS4wNS04Ljk1LDIwLTIwLDIwaC0wLjg0bDguMTctMTQuNzlDMzIuMzgsMjcuNzQsMzMsMjUuOTQsMzMsMjQgYzAtNC45Ny00LjAzLTktOS05VjRjNy44MSwwLDE0LjU1LDQuNDgsMTcuODUsMTFDNDMuMjEsMTcuNzEsNDQsMjAuNzYsNDQsMjR6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJQYXg4SmNuTXppdnU4Zn5TWn5rMXljIiB4MT0iMzYuMTI4IiB4Mj0iMTEuNTc0IiB5MT0iNDQuMjk3IiB5Mj0iMjguOTU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNTApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZjc1NzJmIi8+PHN0b3Agb2Zmc2V0PSIuNTIzIiBzdG9wLWNvbG9yPSIjZjc1NTJkIi8+PHN0b3Agb2Zmc2V0PSIuNzEyIiBzdG9wLWNvbG9yPSIjZjc1MDI2Ii8+PHN0b3Agb2Zmc2V0PSIuODQ2IiBzdG9wLWNvbG9yPSIjZjc0NjFiIi8+PHN0b3Agb2Zmc2V0PSIuOTU0IiBzdG9wLWNvbG9yPSIjZjczOTBhIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZjczMTAwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI1BheDhKY25Neml2dThmflNafmsxeWMpIiBkPSJNNDEuODQsMTVIMjRjLTQuOTcsMC05LDQuMDMtOSw5YzAsMS40OSwwLjM2LDIuODksMS4wMSw0LjEzSDE2TDcuMTYsMTMuMjZINy4xNCBDMTAuNjgsNy42OSwxNi45MSw0LDI0LDRDMzEuOCw0LDM4LjU1LDguNDgsNDEuODQsMTV6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJQYXg4SmNuTXppdnU4Zn5TWn5rMXlkIiB4MT0iMTkuMDUiIHgyPSIyOC45NSIgeTE9IjMwLjk1IiB5Mj0iMjEuMDUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA1MCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMyYWE0ZjQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDdhZDkiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGZpbGw9InVybCgjUGF4OEpjbk16aXZ1OGZ+U1p+azF5ZCkiIGQ9Ik0zMSwyNGMwLDMuODY3LTMuMTMzLDctNyw3cy03LTMuMTMzLTctN3MzLjEzMy03LDctN1MzMSwyMC4xMzMsMzEsMjR6Ii8+PC9zdmc+); \n}.icons-module_edge__2KQ9q {\n background: url(data:image/png;base64,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);\n}.icons-module_firefox__22UR1 {\n background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgd2lkdGg9Ijk2cHgiIGhlaWdodD0iOTZweCI+PHBhdGggZmlsbD0iIzAxNTc5QiIgZD0iTTI0IDVBMTkgMTkgMCAxIDAgMjQgNDNBMTkgMTkgMCAxIDAgMjQgNVoiLz48cGF0aCBmaWxsPSIjMDI3N0JEIiBkPSJNMzQsMjAuOGMwLTAuNiwwLTIuOS0xLjUtNC43Yy0wLjEtMC4xLTAuMi0wLjMtMC4yLTAuNGMtMC4xLTAuMS0wLjEtMC4yLTAuMi0wLjRMMzEuOSwxNWwtMC4yLTAuM2MtMC4yLTAuMy0wLjMtMC41LTAuMy0wLjVjLTAuNC0wLjYtMC41LTEuNC0wLjEtMi4xYzAuMS0wLjIsMC4zLTAuNCwwLjQtMC42Yy0wLjEtMC4xLTAuMi0wLjItMC4zLTAuMmMwLDAsMCwwLTAuMSwwYy0wLjMtMC4yLTAuNi0wLjQtMC44LTAuNmwtMC43LTAuNWwwLDBDMjkuMyw5LjksMjksOS44LDI5LDkuN2MtMC43LTAuNC0xLjEtMS4xLTEtMS45YzAuMS0wLjgsMC42LTEuNSwxLjQtMS43YzAuMSwwLDAuMy0wLjEsMC41LTAuMWMwLDAsMCwwLTAuMS0wLjFDMjgsNS4zLDI2LDUsMjQsNUMxNi42LDUsMTAuMSw5LjMsNywxNS41YzAsMC4yLDAsMC4zLDAsMC41YzAsNy4yLDYuMywxMywxNCwxM0MyNi45LDI5LDMxLjksMjUuNiwzNCwyMC44eiIvPjxwYXRoIGZpbGw9IiNGRkYxNzYiIGQ9Ik0zMCw4YzAsMCwwLjMtMC4xLDAuOS0wLjFjMC4zLDAsMC42LDAsMSwwYzAuNCwwLDAuOCwwLjEsMS4zLDAuMmMwLjUsMC4xLDEsMC4zLDEuNSwwLjVjMC41LDAuMiwxLjEsMC41LDEuNiwwLjljMC41LDAuMywxLDAuOCwxLjUsMS4yYzAuNSwwLjQsMC45LDEsMS4zLDEuNWMwLjMsMC42LDAuNywxLjEsMSwxLjdjMC4zLDAuNiwwLjUsMS4yLDAuNywxLjhjMC4yLDAuNiwwLjMsMS4yLDAuNCwxLjdjMC4xLDAuNiwwLjEsMS4xLDAuMSwxLjVjMCwwLjIsMCwwLjUsMCwwLjdjMCwwLjIsMCwwLjQtMC4xLDAuNmMwLDAuNC0wLjEsMC43LTAuMSwxQzQxLjEsMjEuNyw0MSwyMiw0MSwyMnMtMC4yLTAuMy0wLjQtMC44Yy0wLjEtMC4yLTAuMy0wLjUtMC40LTAuOWMtMC4xLTAuMy0wLjMtMC43LTAuNS0xLjFjLTAuMi0wLjQtMC40LTAuOC0wLjYtMS4zYy0wLjItMC40LTAuNS0wLjktMC43LTEuNGMtMC4yLTAuNS0wLjUtMC45LTAuOC0xLjRjLTAuMy0wLjUtMC42LTAuOS0wLjktMS4zYy0wLjMtMC40LTAuNi0wLjktMS0xLjJjLTAuNC0wLjQtMC43LTAuOC0xLjEtMS4xYy0wLjMtMC40LTAuNy0wLjctMS4xLTFjLTAuNC0wLjMtMC43LTAuNi0xLjEtMC44Yy0wLjMtMC4zLTAuNy0wLjUtMS0wLjdjLTAuMy0wLjItMC42LTAuNC0wLjgtMC41QzMwLjMsOC4yLDMwLDgsMzAsOHoiLz48cGF0aCBmaWxsPSIjRkREODM1IiBkPSJNNDMuMSwxNy42Yy0wLjMtMi4yLTEuMi00LjItMi4yLTUuNmMtMC41LTAuNy0xLTEuMi0xLjMtMS41QzM5LjIsMTAuMiwzOSwxMCwzOSwxMHMwLDAuMywwLjEsMC44YzAuMSwwLjUsMC4xLDEuMSwwLjIsMS45YzAuMSwwLjQsMC4xLDAuOCwwLjIsMS4yYy0wLjQtMC42LTAuOS0xLjItMS40LTEuNmMtMC41LTAuNS0xLjEtMC44LTEuNC0xQzM2LjIsMTEuMSwzNiwxMSwzNiwxMXMwLjEsMC4yLDAuMiwwLjZjMC4xLDAuNCwwLjMsMC45LDAuNSwxLjZjMC4yLDAuNywwLjUsMS42LDAuOCwyLjVjLTAuNi0wLjctMS4yLTEuMy0xLjgtMS43Yy0wLjctMC40LTEuMy0wLjctMS44LTAuOEMzMy4zLDEzLDMzLDEzLDMzLDEzczAuMiwwLjIsMC40LDAuNmMwLjEsMC4yLDAuMywwLjQsMC40LDAuN2MwLjIsMC4zLDAuMywwLjYsMC41LDAuOWMwLjMsMC42LDAuNywxLjMsMSwyLjFjMC4yLDAuNCwwLjMsMC44LDAuNSwxLjJjMC4xLDAuNCwwLjQsMC44LDAuNSwxLjNjMC4yLDAuNCwwLjMsMC44LDAuNSwxLjNjMC4xLDAuNCwwLjMsMC44LDAuNCwxLjNjMC4xLDAuNCwwLjMsMC44LDAuNCwxLjJjMC4xLDAuNCwwLjIsMC44LDAuNCwxLjFjMC4zLDAuNywwLjUsMS4zLDAuNywxLjdDMzguOSwyNi44LDM5LDI3LDM5LDI3czAuMS0wLjIsMC4zLTAuN2MwLjEtMC4yLDAuMi0wLjUsMC4yLTAuOGMwLjEtMC4zLDAuMi0wLjcsMC4yLTEuMWMwLTAuMywwLjEtMC42LDAuMS0wLjlDMzkuOSwyMy44LDQwLDI0LDQwLDI0czAuMS0wLjIsMC4zLTAuNmMwLjEtMC4yLDAuMi0wLjQsMC4zLTAuN2MwLDAsMC0wLjEsMC0wLjFjMCwwLjIsMCwwLjUsMC4xLDAuN2MwLDAuNCwwLjEsMC43LDAuMSwxYzAsMC4zLDAsMC42LDAsMC45YzAsMC41LDAuMSwwLjgsMC4xLDAuOHMwLjItMC4yLDAuNS0wLjZjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjdjMC4yLTAuMywwLjMtMC42LDAuNS0xYzAuMi0wLjQsMC4zLTAuOCwwLjQtMS4zYzAuMS0wLjUsMC4yLTEsMC4zLTEuNWMwLjEtMC41LDAuMS0xLjEsMC4xLTEuNkM0My4zLDE4LjcsNDMuMiwxOC4xLDQzLjEsMTcuNnoiLz48cGF0aCBmaWxsPSIjRkZCMzAwIiBkPSJNNDQuMSwxOS44QzQ0LjEsMTkuMyw0NCwxOSw0NCwxOXMtMC4yLDAuMy0wLjUsMC43Yy0wLjMsMC41LTAuNiwxLjEtMSwxLjljLTAuMywwLjctMC43LDEuNS0xLjEsMi4zYzAtMC44LDAtMS41LTAuMS0yLjJjLTAuMS0wLjYtMC4yLTEuMS0wLjMtMS42Yy0wLjItMC41LTAuMy0xLTAuNS0xLjRjLTAuMy0wLjktMC43LTEuNS0xLTJDMzkuMiwxNi4yLDM5LDE2LDM5LDE2cy0wLjEsMS4yLTAuMSwzYzAsMC45LTAuMSwxLjgtMC4yLDIuOWMwLDAuNS0wLjEsMS0wLjEsMS42YzAsMC41LTAuMSwxLjEtMC4yLDEuNmMwLDAuMSwwLDAuMywwLDAuNGMtMC4xLTAuOS0wLjQtMS44LTAuOC0yLjRjLTAuMy0wLjctMC43LTEuMi0xLTEuNUMzNi4yLDIxLjEsMzYsMjEsMzYsMjFzMCwwLjMsMCwwLjdjMCwwLjQsMCwxLTAuMSwxLjdjLTAuMSwxLjMtMC4zLDMtMC41LDQuNmMtMC4xLDAuNC0wLjIsMC44LTAuMiwxLjJjLTAuMSwwLjQtMC4yLDAuOC0wLjIsMS4yYy0wLjEsMC40LTAuMiwwLjgtMC4zLDEuMWMtMC4xLDAuNC0wLjIsMC43LTAuMiwxYy0wLjEsMC4zLTAuMSwwLjctMC4yLDAuOWMtMC4xLDAuMy0wLjEsMC41LTAuMiwwLjhDMzQsMzQuNywzNCwzNSwzNCwzNXMwLjItMC4xLDAuNi0wLjRjMC40LTAuMywwLjktMC42LDEuNC0xLjJjMC4yLTAuMywwLjUtMC42LDAuOC0xYzAuMi0wLjQsMC41LTAuNywwLjctMS4xYzAsMC4zLTAuMSwwLjYtMC4xLDAuOWMtMC4xLDAuMy0wLjEsMC43LTAuMiwwLjlDMzcsMzMuNywzNywzNCwzNywzNGMwLjEtMC4xLDAuNCwwLDAuNywwLjFjMCwwLjEtMC4xLDAuMi0wLjEsMC4yYy0wLjEsMC4zLTAuMiwwLjYtMC4zLDAuOUMzNy4xLDM1LjcsMzcsMzYsMzcsMzZzMC4zLTAuMSwwLjctMC40YzAuMi0wLjIsMC41LTAuMywwLjgtMC42YzAuMy0wLjIsMC42LTAuNSwwLjktMC45YzAuMy0wLjMsMC42LTAuNywxLTEuMWMwLjMtMC40LDAuNi0wLjksMC45LTEuNGMwLjYtMSwxLjEtMi4xLDEuNS0zLjJjMC40LTEuMSwwLjgtMi4zLDEtMy40YzAuMi0xLjEsMC4zLTIuMSwwLjQtM0M0NC4yLDIxLjEsNDQuMiwyMC40LDQ0LjEsMTkuOHoiLz48cGF0aCBmaWxsPSIjRkY5ODAwIiBkPSJNNDEuNCwzMC40Yy0wLjQsMC4yLTAuOCwwLjYtMS40LDFjLTAuOCwwLjYtMS43LDEuNC0yLjYsMi4zYzAuMS0wLjMsMC4zLTAuNiwwLjQtMC45YzAuMy0wLjksMC40LTEuNywwLjUtMi40YzAtMC43LDAtMS4zLTAuMS0xLjdDMzguMSwyOC4yLDM4LDI4LDM4LDI4cy0wLjIsMC4yLTAuNCwwLjVjLTAuMiwwLjMtMC42LDAuOC0xLDEuM2MtMC40LDAuNS0wLjgsMS4yLTEuMiwxLjhjLTAuMSwwLjEtMC4xLDAuMi0wLjIsMC4zYzAuMi0wLjYsMC4yLTEuMywwLjItMS45YzAtMC44LTAuMi0xLjYtMC40LTIuMmMtMC4yLTAuNi0wLjUtMS4xLTAuNy0xLjRDMzQuMiwyNi4yLDM0LDI2LDM0LDI2cy0wLjEsMC4yLTAuMiwwLjZjLTAuMSwwLjMtMC4zLDAuOC0wLjUsMS40Yy0wLjIsMC41LTAuMywxLjEtMC41LDEuOGMtMC4xLDAuMy0wLjIsMC42LTAuMywxYy0wLjEsMC4zLTAuMiwwLjYtMC4zLDAuOGMtMS45LDEuOS00LjIsMi40LTYuNCwyLjVjLTEuMiwwLTIuMy0wLjItMy4zLTAuNWMwLDAsMCwwLDAsMGMwLDAsMCwwLDAsMGMtMS41LTAuNS0yLjktMS40LTQuMi0yLjZjMS45LDAuMiwzLjctMC4yLDUuMi0wLjlsMi41LTEuNmwwLDBjMC4zLTAuMSwwLjYtMC4xLDAuOSwwYzAuNi0wLjEsMC44LTAuNCwwLjYtMWMtMC4zLTAuNC0wLjgtMC44LTEuMy0xLjFjLTEuMy0wLjctMi42LTAuNi00LDAuM2MtMS4zLDAuNy0yLjUsMC42LTMuOC0wLjFjLTMuMS0xLjYtMS45LTUuNywxLjQtMy42YzAuMi0xLTAuMS0yLjEtMC43LTMuMmMwLDAsMCwwLDAsMGMtMi45LTUuMywwLjQtOS42LDEuNS0xMC4zYy0yLDAuMi0zLjgsMS4xLTUuNCwyLjZDNC45LDEwLjksNCwyMC45LDQsMjFsMS4yLTEuMWMtMC40LDEuMS0wLjcsMi4yLTAuOCwzLjRDNCwyNy4yLDUuMSwzMSw3LjcsMzQuOEMxMS43LDM5LjksMTgsNDMsMjQsNDNjNi44LDAsMTEuMi0yLjUsMTQuMS01LjdjMC4yLTAuMiwwLjQtMC40LDAuNi0wLjZjMC42LTAuNywxLjItMS40LDEuNy0yLjJjMC41LTAuNywwLjgtMS41LDEuMS0yLjJjMC4yLTAuNywwLjQtMS4zLDAuNS0xLjdDNDIsMzAuMyw0MiwzMCw0MiwzMFM0MS44LDMwLjEsNDEuNCwzMC40eiIvPjxwYXRoIGZpbGw9IiNFRjZDMDAiIGQ9Ik0xMiwyOGMtMC4yLTcsNC4zLTYuNCw2LjYtNS42QzE3LDIyLjEsMTYuMywyMy42LDE3LDI1QzE2LjcsMjUsMTMuNiwyNC43LDEyLDI4eiBNMTguMywzMC45YzEuOSwwLjIsMy43LTAuMiw1LjItMC45bDIuNS0xLjZsMCwwYzAuMi0wLjEsMC41LTAuMSwwLjcsMGwwLDBjLTIuOS0xLjctNiwxLjktMTIuOCwwLjhDMTUuNiwzMC41LDE4LjMsMzAuOSwxOC4zLDMwLjl6IE0xOC4xLDE0LjVjLTAuMiwxLjUsMC4xLDMuMywxLjEsNS4yYzAsMCwwLDAsMCwwYzAsMCwwLDAsMCwwQzIwLjYsMTguOSwyMiwxOCwyMiwxOHMyLTIsMC0yQzIwLjEsMTYsMTguOCwxNS4yLDE4LjEsMTQuNXogTTEwLjMsMTIuNEM5LjQsMTEuNiw4LDEwLDgsOGMwLDAtMi40LDMuOS0xLjUsN0M3LjQsMTMuOSw4LjcsMTMsMTAuMywxMi40eiIvPjxwYXRoIGZpbGw9IiNGRkNDODAiIGQ9Ik0xOS4yLDE5LjdDMTkuMiwxOS43LDE5LjIsMTkuNywxOS4yLDE5LjdDMTkuMiwxOS43LDE5LjIsMTkuNywxOS4yLDE5LjdDMjAuNiwxOC45LDIyLDE4LDIyLDE4czAuMi0wLjIsMC40LTAuNEwyMiwxN2gtMy44QzE4LjQsMTcuOSwxOC43LDE4LjgsMTkuMiwxOS43eiIvPjxwYXRoIGZpbGw9IiM1RDQwMzciIGQ9Ik0yMiwxNmMtMC4zLDAtMC42LDAtMC45LTAuMUwyMSwxNmMwLDAsMC44LDEuMywxLDJDMjIsMTgsMjQsMTYsMjIsMTZ6Ii8+PC9zdmc+);\n}.icons-module_safari__3nzsc {\n background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgd2lkdGg9Ijk2cHgiIGhlaWdodD0iOTZweCI+PHBhdGggZmlsbD0iI2NmZDhkYyIgZD0iTTQ0LDI0YzAsMTEuMDQ0LTguOTU2LDIwLTIwLDIwUzQsMzUuMDQ0LDQsMjRTMTIuOTU2LDQsMjQsNFM0NCwxMi45NTYsNDQsMjR6Ii8+PHBhdGggZmlsbD0iIzQ0OGFmZiIgZD0iTTQxLDI0YzAsOS4zOTEtNy42MDksMTctMTcsMTdTNywzMy4zOTEsNywyNFMxNC42MDksNywyNCw3UzQxLDE0LjYwOSw0MSwyNHoiLz48cGF0aCBmaWxsPSIjZmYzZDAwIiBkPSJNMjEuODk4LDIxLjg5OGw0LjIwMyw0LjIwM2w5LjE5OS0xMy40MDJMMjEuODk4LDIxLjg5OHoiLz48cGF0aCBmaWxsPSIjYmYzNjBjIiBkPSJNMjQsMjRsMTEuMzAxLTExLjMwMWwtOS4xOTksMTMuNDAyTDI0LDI0eiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0yMS44OTgsMjEuODk4bC05LjE5OSwxMy40MDJsMTMuNDAyLTkuMTk5TDIxLjg5OCwyMS44OTh6Ii8+PHBhdGggZmlsbD0iI2JkYmRiZCIgZD0iTTI0LDI0TDEyLjY5OSwzNS4zMDFsMTMuNDAyLTkuMTk5TDI0LDI0eiIvPjxwYXRoIGZpbGw9IiNiYmRlZmIiIGQ9Ik0xNy4xMDIsMTAuNjk5YzAuNTk4LTAuMzAxLDEuMTk5LTAuNTk4LDEuNzk3LTAuODAxbDEuMjAzLDIuNzAzbC0xLjgwMSwwLjc5N0wxNy4xMDIsMTAuNjk5eiBNMzYsMjVoMi44OThjMC0wLjMwMSwwLjEwMi0wLjY5OSwwLjEwMi0xczAtMC42OTktMC4xMDItMUgzNlYyNXogTTEyLjY5OSwxNC4xMDJsMi4xMDIsMi4wOThsMS4zOTgtMS4zOThsLTIuMDk4LTIuMTAyQzEzLjYwMiwxMy4xOTksMTMuMTk5LDEzLjYwMiwxMi42OTksMTQuMTAyeiBNMjUsOS4xMDJDMjQuNjk5LDksMjQuMzAxLDksMjQsOXMtMC42OTksMC0xLDAuMTAyVjEyaDJWOS4xMDJ6IE0zMC4zOTgsMTAuNWMtMC41OTgtMC4zMDEtMS4xOTktMC41LTEuODk4LTAuNjk5bC0xLjEwMiwyLjgwMWwxLjkwMiwwLjY5OUwzMC4zOTgsMTAuNXogTTEyLjUsMjAuNWwwLjY5OS0xLjg5OEwxMC41LDE3LjVjLTAuMzAxLDAuNjAyLTAuNSwxLjE5OS0wLjY5OSwxLjg5OEwxMi41LDIwLjV6IE0xMiwyM0g5LjEwMkM5LDIzLjMwMSw5LDIzLjY5OSw5LDI0czAsMC42OTksMC4xMDIsMUgxMlYyM3ogTTM1LjUsMjcuNWwtMC42OTksMS44OThMMzcuNSwzMC41YzAuMzAxLTAuNjAyLDAuNS0xLjE5OSwwLjY5OS0xLjg5OEwzNS41LDI3LjV6IE0zOC4xMDIsMTguODk4Yy0wLjIwMy0wLjU5OC0wLjUtMS4xOTktMC44MDEtMS43OTdsLTIuNjk5LDEuMTk5bDAuNzk3LDEuODAxTDM4LjEwMiwxOC44OTh6IE0zNS4zMDEsMzMuODk4bC0yLjEwMi0yLjA5OGwtMS4zOTgsMS4zOThsMi4wOTgsMi4xMDJDMzQuMzk4LDM0LjgwMSwzNC44MDEsMzQuMzk4LDM1LjMwMSwzMy44OTh6IE0xMy4zOTgsMjkuNjk5bC0wLjc5Ny0xLjgwMWwtMi43MDMsMS4yMDNjMC4yMDMsMC41OTgsMC41LDEuMTk5LDAuODAxLDEuNzk3TDEzLjM5OCwyOS42OTl6IE0yOS42OTksMzQuNjAybC0xLjgwMSwwLjc5N2wxLjIwMywyLjcwM2MwLjU5OC0wLjIwMywxLjE5OS0wLjUsMS43OTctMC44MDFMMjkuNjk5LDM0LjYwMnogTTIwLjUsMzUuNWwtMS44OTgtMC42OTlMMTcuNSwzNy41YzAuNjAyLDAuMzAxLDEuMTk5LDAuNSwxLjg5OCwwLjY5OUwyMC41LDM1LjV6IE0yNSwzOC44OThWMzZoLTJ2Mi44OThjMC4zMDEsMCwwLjY5OSwwLjEwMiwxLDAuMTAyUzI0LjY5OSwzOSwyNSwzOC44OTh6Ii8+PC9zdmc+);\n}.buttons-module_primaryIconButton__KHPA9 {\n /* see app/assets/stylesheets/pageflow/editor/composable.scss */\n}.buttons-module_secondaryIconButton__4LT0V {\n /* see app/assets/stylesheets/pageflow/editor/composable.scss */\n}.buttons-module_unstyledButton__3m76W {\n border: 0;\n text-align: initial;\n}.buttons-module_addButton__2pN-g {\n}.buttons-module_cancelButton__1xJCN {\n}.buttons-module_saveButton__1M-qM {\n}\n\n.EditMotifAreaDialogView-module_box__1fwA5 {\n width: -webkit-min-content;\n width: -moz-min-content;\n width: min-content;\n min-height: 310px;\n min-width: 400px;\n}\n\n.EditMotifAreaDialogView-module_wrapper__2uBFA {\n display: flex;\n justify-content: center;\n}\n\n.EditMotifAreaDialogView-module_helpLink__1Dv5E {\n color: #005dc7;\n float: left;\n padding: 7px 0;\n}\n\n.EditMotifAreaDialogView-module_helpLink__1Dv5E::before {\n color: #a0c4e0;\n}\n\n.EditMotifAreaDialogView-module_thumbnail__dM9gN {\n position: relative;\n display: inline-block;\n}\n\n.EditMotifAreaDialogView-module_image__2-Iaj {\n display: block;\n height: calc(100vh - 200px);\n max-height: 600px;\n min-height: 200px;\n}\n\n.EditMotifAreaDialogView-module_blankSlate__3lvPl {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n background-color: rgba(0, 0, 0, 0.5);\n color: #fff;\n display: none;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n\n.EditMotifAreaDialogView-module_blank__yAuNx .EditMotifAreaDialogView-module_blankSlate__3lvPl {\n display: flex;\n}\n\n.EditMotifAreaDialogView-module_reset__3YOxk {\n position: absolute;\n top: 5px;\n right: 5px;\n z-index: 10;\n padding: 5px;\n background-color: #000;\n color: #fff;\n border: solid 1px #fff;\n border-radius: 3px;\n}\n\n.EditMotifAreaDialogView-module_blank__yAuNx .EditMotifAreaDialogView-module_reset__3YOxk {\n display: none;\n}\n\n.EditMotifAreaDialogView-module_dragging__1Cx0- .EditMotifAreaDialogView-module_reset__3YOxk,\n.EditMotifAreaDialogView-module_dragging__1Cx0- .EditMotifAreaDialogView-module_blankSlate__3lvPl {\n display: none;\n}\n\n.EditMotifAreaDialogView-module_save__1Qaw1 {\n}\n";
3068
+ var css$9 = ".icons-module_icon__16IVx::before,\n.icons-module_icon__16IVx::after {\n font-family: \"entypo\";\n}.icons-module_arrowsCcw__3_nrJ,\n.icons-module_attention__1sssG,\n.icons-module_cancel__1PjiX,\n.icons-module_check__3Lkw9,\n.icons-module_drag__p7HUE,\n.icons-module_helpCircled__D_oKU,\n.icons-module_plusCircled__20FlJ,\n.icons-module_rightOpen__9vsOG,\n.icons-module_trash__DH1EH {\n}.icons-module_arrowsCcw__3_nrJ::before {\n content: \"\\1F504\";\n}.icons-module_attention__1sssG::before {\n content: \"\\26A0\";\n}.icons-module_cancel__1PjiX::before {\n content: \"\\2715\";\n}.icons-module_check__3Lkw9::before {\n content: \"\\2713\";\n}.icons-module_drag__p7HUE {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n line-height: 10px;\n}.icons-module_drag__p7HUE::before {\n content: \"\\E75F\";\n}.icons-module_drag__p7HUE::after {\n content: \"\\E75C\";\n}.icons-module_helpCircled__D_oKU::before {\n content: \"\\E704\";\n}.icons-module_plusCircled__20FlJ::before {\n content: \"\\2795\";\n}.icons-module_rightOpen__9vsOG::before {\n content: \"\\E75E\"\n}.icons-module_trash__DH1EH::before {\n content: \"\\E729\";\n}.icons-module_chrome__1XHpi {\n background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgd2lkdGg9Ijk2cHgiIGhlaWdodD0iOTZweCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTM0LDI0YzAsNS41MjEtNC40NzksMTAtMTAsMTBzLTEwLTQuNDc5LTEwLTEwczQuNDc5LTEwLDEwLTEwUzM0LDE4LjQ3OSwzNCwyNHoiLz48bGluZWFyR3JhZGllbnQgaWQ9IlBheDhKY25Neml2dThmflNafmsxeWEiIHgxPSI1Ljc4OSIgeDI9IjMxLjMyNCIgeTE9IjM0LjM1NiIgeTI9IjIwLjc3OSIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDUwKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzRjYWY1MCIvPjxzdG9wIG9mZnNldD0iLjQ4OSIgc3RvcC1jb2xvcj0iIzRhYWY1MCIvPjxzdG9wIG9mZnNldD0iLjY2NSIgc3RvcC1jb2xvcj0iIzQzYWQ1MCIvPjxzdG9wIG9mZnNldD0iLjc5IiBzdG9wLWNvbG9yPSIjMzhhYTUwIi8+PHN0b3Agb2Zmc2V0PSIuODkyIiBzdG9wLWNvbG9yPSIjMjdhNTUwIi8+PHN0b3Agb2Zmc2V0PSIuOTc4IiBzdG9wLWNvbG9yPSIjMTFhMDUwIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMGE5ZTUwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI1BheDhKY25Neml2dThmflNafmsxeWEpIiBkPSJNMzEuMzMsMjkuMjFsLTguMTYsMTQuNzdDMTIuNTEsNDMuNTUsNCwzNC43Niw0LDI0QzQsMTIuOTYsMTIuOTYsNCwyNCw0djExIGMtNC45NywwLTksNC4wMy05LDlzNC4wMyw5LDksOUMyNy4wMywzMywyOS43LDMxLjUxLDMxLjMzLDI5LjIxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0iUGF4OEpjbk16aXZ1OGZ+U1p+azF5YiIgeDE9IjMzLjU4IiB4Mj0iMzMuNTgiIHkxPSI2IiB5Mj0iMzQuNzk3IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNTApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNzQ3Ii8+PHN0b3Agb2Zmc2V0PSIuNDgyIiBzdG9wLWNvbG9yPSIjZmZkNjQ1Ii8+PHN0b3Agb2Zmc2V0PSIuNjU1IiBzdG9wLWNvbG9yPSIjZmVkNDNlIi8+PHN0b3Agb2Zmc2V0PSIuNzc5IiBzdG9wLWNvbG9yPSIjZmNjZjMzIi8+PHN0b3Agb2Zmc2V0PSIuODc5IiBzdG9wLWNvbG9yPSIjZmFjOTIyIi8+PHN0b3Agb2Zmc2V0PSIuOTY0IiBzdG9wLWNvbG9yPSIjZjdjMTBjIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZjViYzAwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI1BheDhKY25Neml2dThmflNafmsxeWIpIiBkPSJNNDQsMjRjMCwxMS4wNS04Ljk1LDIwLTIwLDIwaC0wLjg0bDguMTctMTQuNzlDMzIuMzgsMjcuNzQsMzMsMjUuOTQsMzMsMjQgYzAtNC45Ny00LjAzLTktOS05VjRjNy44MSwwLDE0LjU1LDQuNDgsMTcuODUsMTFDNDMuMjEsMTcuNzEsNDQsMjAuNzYsNDQsMjR6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJQYXg4SmNuTXppdnU4Zn5TWn5rMXljIiB4MT0iMzYuMTI4IiB4Mj0iMTEuNTc0IiB5MT0iNDQuMjk3IiB5Mj0iMjguOTU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIC0xIDAgNTApIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZjc1NzJmIi8+PHN0b3Agb2Zmc2V0PSIuNTIzIiBzdG9wLWNvbG9yPSIjZjc1NTJkIi8+PHN0b3Agb2Zmc2V0PSIuNzEyIiBzdG9wLWNvbG9yPSIjZjc1MDI2Ii8+PHN0b3Agb2Zmc2V0PSIuODQ2IiBzdG9wLWNvbG9yPSIjZjc0NjFiIi8+PHN0b3Agb2Zmc2V0PSIuOTU0IiBzdG9wLWNvbG9yPSIjZjczOTBhIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZjczMTAwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBmaWxsPSJ1cmwoI1BheDhKY25Neml2dThmflNafmsxeWMpIiBkPSJNNDEuODQsMTVIMjRjLTQuOTcsMC05LDQuMDMtOSw5YzAsMS40OSwwLjM2LDIuODksMS4wMSw0LjEzSDE2TDcuMTYsMTMuMjZINy4xNCBDMTAuNjgsNy42OSwxNi45MSw0LDI0LDRDMzEuOCw0LDM4LjU1LDguNDgsNDEuODQsMTV6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJQYXg4SmNuTXppdnU4Zn5TWn5rMXlkIiB4MT0iMTkuMDUiIHgyPSIyOC45NSIgeTE9IjMwLjk1IiB5Mj0iMjEuMDUiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgLTEgMCA1MCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMyYWE0ZjQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMDdhZDkiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGZpbGw9InVybCgjUGF4OEpjbk16aXZ1OGZ+U1p+azF5ZCkiIGQ9Ik0zMSwyNGMwLDMuODY3LTMuMTMzLDctNyw3cy03LTMuMTMzLTctN3MzLjEzMy03LDctN1MzMSwyMC4xMzMsMzEsMjR6Ii8+PC9zdmc+); \n}.icons-module_edge__2KQ9q {\n background: url(data:image/png;base64,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);\n}.icons-module_firefox__22UR1 {\n background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgd2lkdGg9Ijk2cHgiIGhlaWdodD0iOTZweCI+PHBhdGggZmlsbD0iIzAxNTc5QiIgZD0iTTI0IDVBMTkgMTkgMCAxIDAgMjQgNDNBMTkgMTkgMCAxIDAgMjQgNVoiLz48cGF0aCBmaWxsPSIjMDI3N0JEIiBkPSJNMzQsMjAuOGMwLTAuNiwwLTIuOS0xLjUtNC43Yy0wLjEtMC4xLTAuMi0wLjMtMC4yLTAuNGMtMC4xLTAuMS0wLjEtMC4yLTAuMi0wLjRMMzEuOSwxNWwtMC4yLTAuM2MtMC4yLTAuMy0wLjMtMC41LTAuMy0wLjVjLTAuNC0wLjYtMC41LTEuNC0wLjEtMi4xYzAuMS0wLjIsMC4zLTAuNCwwLjQtMC42Yy0wLjEtMC4xLTAuMi0wLjItMC4zLTAuMmMwLDAsMCwwLTAuMSwwYy0wLjMtMC4yLTAuNi0wLjQtMC44LTAuNmwtMC43LTAuNWwwLDBDMjkuMyw5LjksMjksOS44LDI5LDkuN2MtMC43LTAuNC0xLjEtMS4xLTEtMS45YzAuMS0wLjgsMC42LTEuNSwxLjQtMS43YzAuMSwwLDAuMy0wLjEsMC41LTAuMWMwLDAsMCwwLTAuMS0wLjFDMjgsNS4zLDI2LDUsMjQsNUMxNi42LDUsMTAuMSw5LjMsNywxNS41YzAsMC4yLDAsMC4zLDAsMC41YzAsNy4yLDYuMywxMywxNCwxM0MyNi45LDI5LDMxLjksMjUuNiwzNCwyMC44eiIvPjxwYXRoIGZpbGw9IiNGRkYxNzYiIGQ9Ik0zMCw4YzAsMCwwLjMtMC4xLDAuOS0wLjFjMC4zLDAsMC42LDAsMSwwYzAuNCwwLDAuOCwwLjEsMS4zLDAuMmMwLjUsMC4xLDEsMC4zLDEuNSwwLjVjMC41LDAuMiwxLjEsMC41LDEuNiwwLjljMC41LDAuMywxLDAuOCwxLjUsMS4yYzAuNSwwLjQsMC45LDEsMS4zLDEuNWMwLjMsMC42LDAuNywxLjEsMSwxLjdjMC4zLDAuNiwwLjUsMS4yLDAuNywxLjhjMC4yLDAuNiwwLjMsMS4yLDAuNCwxLjdjMC4xLDAuNiwwLjEsMS4xLDAuMSwxLjVjMCwwLjIsMCwwLjUsMCwwLjdjMCwwLjIsMCwwLjQtMC4xLDAuNmMwLDAuNC0wLjEsMC43LTAuMSwxQzQxLjEsMjEuNyw0MSwyMiw0MSwyMnMtMC4yLTAuMy0wLjQtMC44Yy0wLjEtMC4yLTAuMy0wLjUtMC40LTAuOWMtMC4xLTAuMy0wLjMtMC43LTAuNS0xLjFjLTAuMi0wLjQtMC40LTAuOC0wLjYtMS4zYy0wLjItMC40LTAuNS0wLjktMC43LTEuNGMtMC4yLTAuNS0wLjUtMC45LTAuOC0xLjRjLTAuMy0wLjUtMC42LTAuOS0wLjktMS4zYy0wLjMtMC40LTAuNi0wLjktMS0xLjJjLTAuNC0wLjQtMC43LTAuOC0xLjEtMS4xYy0wLjMtMC40LTAuNy0wLjctMS4xLTFjLTAuNC0wLjMtMC43LTAuNi0xLjEtMC44Yy0wLjMtMC4zLTAuNy0wLjUtMS0wLjdjLTAuMy0wLjItMC42LTAuNC0wLjgtMC41QzMwLjMsOC4yLDMwLDgsMzAsOHoiLz48cGF0aCBmaWxsPSIjRkREODM1IiBkPSJNNDMuMSwxNy42Yy0wLjMtMi4yLTEuMi00LjItMi4yLTUuNmMtMC41LTAuNy0xLTEuMi0xLjMtMS41QzM5LjIsMTAuMiwzOSwxMCwzOSwxMHMwLDAuMywwLjEsMC44YzAuMSwwLjUsMC4xLDEuMSwwLjIsMS45YzAuMSwwLjQsMC4xLDAuOCwwLjIsMS4yYy0wLjQtMC42LTAuOS0xLjItMS40LTEuNmMtMC41LTAuNS0xLjEtMC44LTEuNC0xQzM2LjIsMTEuMSwzNiwxMSwzNiwxMXMwLjEsMC4yLDAuMiwwLjZjMC4xLDAuNCwwLjMsMC45LDAuNSwxLjZjMC4yLDAuNywwLjUsMS42LDAuOCwyLjVjLTAuNi0wLjctMS4yLTEuMy0xLjgtMS43Yy0wLjctMC40LTEuMy0wLjctMS44LTAuOEMzMy4zLDEzLDMzLDEzLDMzLDEzczAuMiwwLjIsMC40LDAuNmMwLjEsMC4yLDAuMywwLjQsMC40LDAuN2MwLjIsMC4zLDAuMywwLjYsMC41LDAuOWMwLjMsMC42LDAuNywxLjMsMSwyLjFjMC4yLDAuNCwwLjMsMC44LDAuNSwxLjJjMC4xLDAuNCwwLjQsMC44LDAuNSwxLjNjMC4yLDAuNCwwLjMsMC44LDAuNSwxLjNjMC4xLDAuNCwwLjMsMC44LDAuNCwxLjNjMC4xLDAuNCwwLjMsMC44LDAuNCwxLjJjMC4xLDAuNCwwLjIsMC44LDAuNCwxLjFjMC4zLDAuNywwLjUsMS4zLDAuNywxLjdDMzguOSwyNi44LDM5LDI3LDM5LDI3czAuMS0wLjIsMC4zLTAuN2MwLjEtMC4yLDAuMi0wLjUsMC4yLTAuOGMwLjEtMC4zLDAuMi0wLjcsMC4yLTEuMWMwLTAuMywwLjEtMC42LDAuMS0wLjlDMzkuOSwyMy44LDQwLDI0LDQwLDI0czAuMS0wLjIsMC4zLTAuNmMwLjEtMC4yLDAuMi0wLjQsMC4zLTAuN2MwLDAsMC0wLjEsMC0wLjFjMCwwLjIsMCwwLjUsMC4xLDAuN2MwLDAuNCwwLjEsMC43LDAuMSwxYzAsMC4zLDAsMC42LDAsMC45YzAsMC41LDAuMSwwLjgsMC4xLDAuOHMwLjItMC4yLDAuNS0wLjZjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjdjMC4yLTAuMywwLjMtMC42LDAuNS0xYzAuMi0wLjQsMC4zLTAuOCwwLjQtMS4zYzAuMS0wLjUsMC4yLTEsMC4zLTEuNWMwLjEtMC41LDAuMS0xLjEsMC4xLTEuNkM0My4zLDE4LjcsNDMuMiwxOC4xLDQzLjEsMTcuNnoiLz48cGF0aCBmaWxsPSIjRkZCMzAwIiBkPSJNNDQuMSwxOS44QzQ0LjEsMTkuMyw0NCwxOSw0NCwxOXMtMC4yLDAuMy0wLjUsMC43Yy0wLjMsMC41LTAuNiwxLjEtMSwxLjljLTAuMywwLjctMC43LDEuNS0xLjEsMi4zYzAtMC44LDAtMS41LTAuMS0yLjJjLTAuMS0wLjYtMC4yLTEuMS0wLjMtMS42Yy0wLjItMC41LTAuMy0xLTAuNS0xLjRjLTAuMy0wLjktMC43LTEuNS0xLTJDMzkuMiwxNi4yLDM5LDE2LDM5LDE2cy0wLjEsMS4yLTAuMSwzYzAsMC45LTAuMSwxLjgtMC4yLDIuOWMwLDAuNS0wLjEsMS0wLjEsMS42YzAsMC41LTAuMSwxLjEtMC4yLDEuNmMwLDAuMSwwLDAuMywwLDAuNGMtMC4xLTAuOS0wLjQtMS44LTAuOC0yLjRjLTAuMy0wLjctMC43LTEuMi0xLTEuNUMzNi4yLDIxLjEsMzYsMjEsMzYsMjFzMCwwLjMsMCwwLjdjMCwwLjQsMCwxLTAuMSwxLjdjLTAuMSwxLjMtMC4zLDMtMC41LDQuNmMtMC4xLDAuNC0wLjIsMC44LTAuMiwxLjJjLTAuMSwwLjQtMC4yLDAuOC0wLjIsMS4yYy0wLjEsMC40LTAuMiwwLjgtMC4zLDEuMWMtMC4xLDAuNC0wLjIsMC43LTAuMiwxYy0wLjEsMC4zLTAuMSwwLjctMC4yLDAuOWMtMC4xLDAuMy0wLjEsMC41LTAuMiwwLjhDMzQsMzQuNywzNCwzNSwzNCwzNXMwLjItMC4xLDAuNi0wLjRjMC40LTAuMywwLjktMC42LDEuNC0xLjJjMC4yLTAuMywwLjUtMC42LDAuOC0xYzAuMi0wLjQsMC41LTAuNywwLjctMS4xYzAsMC4zLTAuMSwwLjYtMC4xLDAuOWMtMC4xLDAuMy0wLjEsMC43LTAuMiwwLjlDMzcsMzMuNywzNywzNCwzNywzNGMwLjEtMC4xLDAuNCwwLDAuNywwLjFjMCwwLjEtMC4xLDAuMi0wLjEsMC4yYy0wLjEsMC4zLTAuMiwwLjYtMC4zLDAuOUMzNy4xLDM1LjcsMzcsMzYsMzcsMzZzMC4zLTAuMSwwLjctMC40YzAuMi0wLjIsMC41LTAuMywwLjgtMC42YzAuMy0wLjIsMC42LTAuNSwwLjktMC45YzAuMy0wLjMsMC42LTAuNywxLTEuMWMwLjMtMC40LDAuNi0wLjksMC45LTEuNGMwLjYtMSwxLjEtMi4xLDEuNS0zLjJjMC40LTEuMSwwLjgtMi4zLDEtMy40YzAuMi0xLjEsMC4zLTIuMSwwLjQtM0M0NC4yLDIxLjEsNDQuMiwyMC40LDQ0LjEsMTkuOHoiLz48cGF0aCBmaWxsPSIjRkY5ODAwIiBkPSJNNDEuNCwzMC40Yy0wLjQsMC4yLTAuOCwwLjYtMS40LDFjLTAuOCwwLjYtMS43LDEuNC0yLjYsMi4zYzAuMS0wLjMsMC4zLTAuNiwwLjQtMC45YzAuMy0wLjksMC40LTEuNywwLjUtMi40YzAtMC43LDAtMS4zLTAuMS0xLjdDMzguMSwyOC4yLDM4LDI4LDM4LDI4cy0wLjIsMC4yLTAuNCwwLjVjLTAuMiwwLjMtMC42LDAuOC0xLDEuM2MtMC40LDAuNS0wLjgsMS4yLTEuMiwxLjhjLTAuMSwwLjEtMC4xLDAuMi0wLjIsMC4zYzAuMi0wLjYsMC4yLTEuMywwLjItMS45YzAtMC44LTAuMi0xLjYtMC40LTIuMmMtMC4yLTAuNi0wLjUtMS4xLTAuNy0xLjRDMzQuMiwyNi4yLDM0LDI2LDM0LDI2cy0wLjEsMC4yLTAuMiwwLjZjLTAuMSwwLjMtMC4zLDAuOC0wLjUsMS40Yy0wLjIsMC41LTAuMywxLjEtMC41LDEuOGMtMC4xLDAuMy0wLjIsMC42LTAuMywxYy0wLjEsMC4zLTAuMiwwLjYtMC4zLDAuOGMtMS45LDEuOS00LjIsMi40LTYuNCwyLjVjLTEuMiwwLTIuMy0wLjItMy4zLTAuNWMwLDAsMCwwLDAsMGMwLDAsMCwwLDAsMGMtMS41LTAuNS0yLjktMS40LTQuMi0yLjZjMS45LDAuMiwzLjctMC4yLDUuMi0wLjlsMi41LTEuNmwwLDBjMC4zLTAuMSwwLjYtMC4xLDAuOSwwYzAuNi0wLjEsMC44LTAuNCwwLjYtMWMtMC4zLTAuNC0wLjgtMC44LTEuMy0xLjFjLTEuMy0wLjctMi42LTAuNi00LDAuM2MtMS4zLDAuNy0yLjUsMC42LTMuOC0wLjFjLTMuMS0xLjYtMS45LTUuNywxLjQtMy42YzAuMi0xLTAuMS0yLjEtMC43LTMuMmMwLDAsMCwwLDAsMGMtMi45LTUuMywwLjQtOS42LDEuNS0xMC4zYy0yLDAuMi0zLjgsMS4xLTUuNCwyLjZDNC45LDEwLjksNCwyMC45LDQsMjFsMS4yLTEuMWMtMC40LDEuMS0wLjcsMi4yLTAuOCwzLjRDNCwyNy4yLDUuMSwzMSw3LjcsMzQuOEMxMS43LDM5LjksMTgsNDMsMjQsNDNjNi44LDAsMTEuMi0yLjUsMTQuMS01LjdjMC4yLTAuMiwwLjQtMC40LDAuNi0wLjZjMC42LTAuNywxLjItMS40LDEuNy0yLjJjMC41LTAuNywwLjgtMS41LDEuMS0yLjJjMC4yLTAuNywwLjQtMS4zLDAuNS0xLjdDNDIsMzAuMyw0MiwzMCw0MiwzMFM0MS44LDMwLjEsNDEuNCwzMC40eiIvPjxwYXRoIGZpbGw9IiNFRjZDMDAiIGQ9Ik0xMiwyOGMtMC4yLTcsNC4zLTYuNCw2LjYtNS42QzE3LDIyLjEsMTYuMywyMy42LDE3LDI1QzE2LjcsMjUsMTMuNiwyNC43LDEyLDI4eiBNMTguMywzMC45YzEuOSwwLjIsMy43LTAuMiw1LjItMC45bDIuNS0xLjZsMCwwYzAuMi0wLjEsMC41LTAuMSwwLjcsMGwwLDBjLTIuOS0xLjctNiwxLjktMTIuOCwwLjhDMTUuNiwzMC41LDE4LjMsMzAuOSwxOC4zLDMwLjl6IE0xOC4xLDE0LjVjLTAuMiwxLjUsMC4xLDMuMywxLjEsNS4yYzAsMCwwLDAsMCwwYzAsMCwwLDAsMCwwQzIwLjYsMTguOSwyMiwxOCwyMiwxOHMyLTIsMC0yQzIwLjEsMTYsMTguOCwxNS4yLDE4LjEsMTQuNXogTTEwLjMsMTIuNEM5LjQsMTEuNiw4LDEwLDgsOGMwLDAtMi40LDMuOS0xLjUsN0M3LjQsMTMuOSw4LjcsMTMsMTAuMywxMi40eiIvPjxwYXRoIGZpbGw9IiNGRkNDODAiIGQ9Ik0xOS4yLDE5LjdDMTkuMiwxOS43LDE5LjIsMTkuNywxOS4yLDE5LjdDMTkuMiwxOS43LDE5LjIsMTkuNywxOS4yLDE5LjdDMjAuNiwxOC45LDIyLDE4LDIyLDE4czAuMi0wLjIsMC40LTAuNEwyMiwxN2gtMy44QzE4LjQsMTcuOSwxOC43LDE4LjgsMTkuMiwxOS43eiIvPjxwYXRoIGZpbGw9IiM1RDQwMzciIGQ9Ik0yMiwxNmMtMC4zLDAtMC42LDAtMC45LTAuMUwyMSwxNmMwLDAsMC44LDEuMywxLDJDMjIsMTgsMjQsMTYsMjIsMTZ6Ii8+PC9zdmc+);\n}.icons-module_safari__3nzsc {\n background: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0OCA0OCIgd2lkdGg9Ijk2cHgiIGhlaWdodD0iOTZweCI+PHBhdGggZmlsbD0iI2NmZDhkYyIgZD0iTTQ0LDI0YzAsMTEuMDQ0LTguOTU2LDIwLTIwLDIwUzQsMzUuMDQ0LDQsMjRTMTIuOTU2LDQsMjQsNFM0NCwxMi45NTYsNDQsMjR6Ii8+PHBhdGggZmlsbD0iIzQ0OGFmZiIgZD0iTTQxLDI0YzAsOS4zOTEtNy42MDksMTctMTcsMTdTNywzMy4zOTEsNywyNFMxNC42MDksNywyNCw3UzQxLDE0LjYwOSw0MSwyNHoiLz48cGF0aCBmaWxsPSIjZmYzZDAwIiBkPSJNMjEuODk4LDIxLjg5OGw0LjIwMyw0LjIwM2w5LjE5OS0xMy40MDJMMjEuODk4LDIxLjg5OHoiLz48cGF0aCBmaWxsPSIjYmYzNjBjIiBkPSJNMjQsMjRsMTEuMzAxLTExLjMwMWwtOS4xOTksMTMuNDAyTDI0LDI0eiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik0yMS44OTgsMjEuODk4bC05LjE5OSwxMy40MDJsMTMuNDAyLTkuMTk5TDIxLjg5OCwyMS44OTh6Ii8+PHBhdGggZmlsbD0iI2JkYmRiZCIgZD0iTTI0LDI0TDEyLjY5OSwzNS4zMDFsMTMuNDAyLTkuMTk5TDI0LDI0eiIvPjxwYXRoIGZpbGw9IiNiYmRlZmIiIGQ9Ik0xNy4xMDIsMTAuNjk5YzAuNTk4LTAuMzAxLDEuMTk5LTAuNTk4LDEuNzk3LTAuODAxbDEuMjAzLDIuNzAzbC0xLjgwMSwwLjc5N0wxNy4xMDIsMTAuNjk5eiBNMzYsMjVoMi44OThjMC0wLjMwMSwwLjEwMi0wLjY5OSwwLjEwMi0xczAtMC42OTktMC4xMDItMUgzNlYyNXogTTEyLjY5OSwxNC4xMDJsMi4xMDIsMi4wOThsMS4zOTgtMS4zOThsLTIuMDk4LTIuMTAyQzEzLjYwMiwxMy4xOTksMTMuMTk5LDEzLjYwMiwxMi42OTksMTQuMTAyeiBNMjUsOS4xMDJDMjQuNjk5LDksMjQuMzAxLDksMjQsOXMtMC42OTksMC0xLDAuMTAyVjEyaDJWOS4xMDJ6IE0zMC4zOTgsMTAuNWMtMC41OTgtMC4zMDEtMS4xOTktMC41LTEuODk4LTAuNjk5bC0xLjEwMiwyLjgwMWwxLjkwMiwwLjY5OUwzMC4zOTgsMTAuNXogTTEyLjUsMjAuNWwwLjY5OS0xLjg5OEwxMC41LDE3LjVjLTAuMzAxLDAuNjAyLTAuNSwxLjE5OS0wLjY5OSwxLjg5OEwxMi41LDIwLjV6IE0xMiwyM0g5LjEwMkM5LDIzLjMwMSw5LDIzLjY5OSw5LDI0czAsMC42OTksMC4xMDIsMUgxMlYyM3ogTTM1LjUsMjcuNWwtMC42OTksMS44OThMMzcuNSwzMC41YzAuMzAxLTAuNjAyLDAuNS0xLjE5OSwwLjY5OS0xLjg5OEwzNS41LDI3LjV6IE0zOC4xMDIsMTguODk4Yy0wLjIwMy0wLjU5OC0wLjUtMS4xOTktMC44MDEtMS43OTdsLTIuNjk5LDEuMTk5bDAuNzk3LDEuODAxTDM4LjEwMiwxOC44OTh6IE0zNS4zMDEsMzMuODk4bC0yLjEwMi0yLjA5OGwtMS4zOTgsMS4zOThsMi4wOTgsMi4xMDJDMzQuMzk4LDM0LjgwMSwzNC44MDEsMzQuMzk4LDM1LjMwMSwzMy44OTh6IE0xMy4zOTgsMjkuNjk5bC0wLjc5Ny0xLjgwMWwtMi43MDMsMS4yMDNjMC4yMDMsMC41OTgsMC41LDEuMTk5LDAuODAxLDEuNzk3TDEzLjM5OCwyOS42OTl6IE0yOS42OTksMzQuNjAybC0xLjgwMSwwLjc5N2wxLjIwMywyLjcwM2MwLjU5OC0wLjIwMywxLjE5OS0wLjUsMS43OTctMC44MDFMMjkuNjk5LDM0LjYwMnogTTIwLjUsMzUuNWwtMS44OTgtMC42OTlMMTcuNSwzNy41YzAuNjAyLDAuMzAxLDEuMTk5LDAuNSwxLjg5OCwwLjY5OUwyMC41LDM1LjV6IE0yNSwzOC44OThWMzZoLTJ2Mi44OThjMC4zMDEsMCwwLjY5OSwwLjEwMiwxLDAuMTAyUzI0LjY5OSwzOSwyNSwzOC44OTh6Ii8+PC9zdmc+);\n}.buttons-module_primaryIconButton__KHPA9 {\n /* see app/assets/stylesheets/pageflow/editor/composable.scss */\n}.buttons-module_secondaryIconButton__4LT0V {\n /* see app/assets/stylesheets/pageflow/editor/composable.scss */\n}.buttons-module_unstyledButton__3m76W {\n border: 0;\n text-align: initial;\n}.buttons-module_addButton__2pN-g {\n}.buttons-module_cancelButton__1xJCN {\n}.buttons-module_saveButton__1M-qM {\n}\n\n.EditMotifAreaDialogView-module_box__1fwA5 {\n width: -webkit-min-content;\n width: -moz-min-content;\n width: min-content;\n min-height: 310px;\n min-width: 400px;\n}\n\n.EditMotifAreaDialogView-module_wrapper__2uBFA {\n display: flex;\n justify-content: center;\n}\n\n.EditMotifAreaDialogView-module_helpLink__1Dv5E {\n color: #005dc7;\n float: left;\n padding: 7px 0;\n}\n\n.EditMotifAreaDialogView-module_helpLink__1Dv5E::before {\n color: #a0c4e0;\n}\n\n.EditMotifAreaDialogView-module_thumbnail__dM9gN {\n position: relative;\n display: inline-block;\n overflow: hidden;\n}\n\n.EditMotifAreaDialogView-module_image__2-Iaj {\n display: block;\n height: calc(100vh - 200px);\n max-height: 600px;\n min-height: 200px;\n}\n\n.EditMotifAreaDialogView-module_blankSlate__3lvPl {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n pointer-events: none;\n background-color: rgba(0, 0, 0, 0.5);\n color: #fff;\n display: none;\n justify-content: center;\n align-items: center;\n text-align: center;\n}\n\n.EditMotifAreaDialogView-module_blank__yAuNx .EditMotifAreaDialogView-module_blankSlate__3lvPl {\n display: flex;\n}\n\n.EditMotifAreaDialogView-module_reset__3YOxk {\n position: absolute;\n top: 5px;\n right: 5px;\n z-index: 10;\n padding: 5px;\n background-color: #000;\n color: #fff;\n border: solid 1px #fff;\n border-radius: 3px;\n}\n\n.EditMotifAreaDialogView-module_blank__yAuNx .EditMotifAreaDialogView-module_reset__3YOxk {\n display: none;\n}\n\n.EditMotifAreaDialogView-module_dragging__1Cx0- .EditMotifAreaDialogView-module_reset__3YOxk,\n.EditMotifAreaDialogView-module_dragging__1Cx0- .EditMotifAreaDialogView-module_blankSlate__3lvPl {\n display: none;\n}\n\n.EditMotifAreaDialogView-module_save__1Qaw1 {\n}\n";
2768
3069
  var styles$7 = {"linkColor":"#005dc7","helpIconColor":"#a0c4e0","box":"EditMotifAreaDialogView-module_box__1fwA5","wrapper":"EditMotifAreaDialogView-module_wrapper__2uBFA","helpLink":"EditMotifAreaDialogView-module_helpLink__1Dv5E buttons-module_unstyledButton__3m76W icons-module_helpCircled__D_oKU icons-module_icon__16IVx","thumbnail":"EditMotifAreaDialogView-module_thumbnail__dM9gN","image":"EditMotifAreaDialogView-module_image__2-Iaj","blankSlate":"EditMotifAreaDialogView-module_blankSlate__3lvPl","blank":"EditMotifAreaDialogView-module_blank__yAuNx","reset":"EditMotifAreaDialogView-module_reset__3YOxk buttons-module_unstyledButton__3m76W","dragging":"EditMotifAreaDialogView-module_dragging__1Cx0-","save":"EditMotifAreaDialogView-module_save__1Qaw1 buttons-module_saveButton__1M-qM buttons-module_primaryIconButton__KHPA9 primary_icon_button icons-module_check__3Lkw9 icons-module_icon__16IVx"};
2769
3070
  styleInject(css$9);
2770
3071
 
@@ -2789,7 +3090,9 @@ var EditMotifAreaDialogView = Marionette.ItemView.extend({
2789
3090
  }
2790
3091
  }),
2791
3092
  save: function save() {
2792
- this.options.file.configuration.set('motifArea', this.getMotifAreaWithRoundedValues());
3093
+ var motifArea = this.getMotifAreaWithRoundedValues();
3094
+ this.model.set(this.getPropertyName(), motifArea);
3095
+ this.options.file.configuration.set('motifArea', motifArea);
2793
3096
  },
2794
3097
  onRender: function onRender() {
2795
3098
  this.ui.image.attr('src', this.options.file.getBackgroundPositioningImageUrl());
@@ -2797,7 +3100,7 @@ var EditMotifAreaDialogView = Marionette.ItemView.extend({
2797
3100
  onShow: function onShow() {
2798
3101
  var _this = this;
2799
3102
 
2800
- this.motifArea = this.options.file.configuration.get('motifArea');
3103
+ this.motifArea = this.model.get(this.getPropertyName());
2801
3104
  this.updateAreaSelect();
2802
3105
  this.updateBlankSlate();
2803
3106
 
@@ -2807,6 +3110,9 @@ var EditMotifAreaDialogView = Marionette.ItemView.extend({
2807
3110
 
2808
3111
  $(window).on('resize', this.resizeListener);
2809
3112
  },
3113
+ getPropertyName: function getPropertyName() {
3114
+ return "".concat(this.options.propertyName, "MotifArea");
3115
+ },
2810
3116
  getMotifAreaWithRoundedValues: function getMotifAreaWithRoundedValues() {
2811
3117
  return this.motifArea && {
2812
3118
  left: Math.round(this.motifArea.left),
@@ -2885,16 +3191,24 @@ EditMotifAreaDialogView.show = function (options) {
2885
3191
  var EditSectionView = EditConfigurationView.extend({
2886
3192
  translationKeyPrefix: 'pageflow_scrolled.editor.edit_section',
2887
3193
  configure: function configure(configurationEditor) {
3194
+ var editMotifAreaMenuItem = {
3195
+ name: 'editMotifArea',
3196
+ label: I18n.t('pageflow_scrolled.editor.edit_section.edit_motif_area'),
3197
+ selected: function selected(_ref) {
3198
+ var inputModel = _ref.inputModel,
3199
+ propertyName = _ref.propertyName,
3200
+ file = _ref.file;
3201
+ EditMotifAreaDialogView.show({
3202
+ model: inputModel,
3203
+ propertyName: propertyName,
3204
+ file: file
3205
+ });
3206
+ }
3207
+ };
2888
3208
  configurationEditor.tab('section', function () {
2889
- this.input('layout', SelectInputView, {
2890
- values: ['left', 'right', 'center']
2891
- });
2892
- this.input('appearance', SelectInputView, {
2893
- values: ['shadow', 'cards', 'transparent']
2894
- });
3209
+ this.input('fullHeight', CheckBoxInputView);
2895
3210
  this.input('backdropType', SelectInputView, {
2896
- values: ['image', 'color', 'video'],
2897
- texts: ['Bild', 'Farbe', 'Video']
3211
+ values: ['image', 'video', 'color']
2898
3212
  });
2899
3213
  this.input('backdropImage', FileInputView, {
2900
3214
  collection: 'image_files',
@@ -2902,20 +3216,7 @@ var EditSectionView = EditConfigurationView.extend({
2902
3216
  visibleBinding: 'backdropType',
2903
3217
  visibleBindingValue: 'image',
2904
3218
  positioning: false,
2905
- dropDownMenuItems: [{
2906
- name: 'editMofifArea',
2907
- label: I18n.t('pageflow_scrolled.editor.edit_section.edit_motif_area'),
2908
- selected: function selected(_ref) {
2909
- var inputModel = _ref.inputModel,
2910
- propertyName = _ref.propertyName,
2911
- file = _ref.file;
2912
- EditMotifAreaDialogView.show({
2913
- model: inputModel,
2914
- propertyName: propertyName,
2915
- file: file
2916
- });
2917
- }
2918
- }]
3219
+ dropDownMenuItems: [editMotifAreaMenuItem]
2919
3220
  });
2920
3221
  this.input('backdropImageMobile', FileInputView, {
2921
3222
  collection: 'image_files',
@@ -2923,20 +3224,7 @@ var EditSectionView = EditConfigurationView.extend({
2923
3224
  visibleBinding: 'backdropType',
2924
3225
  visibleBindingValue: 'image',
2925
3226
  positioning: false,
2926
- dropDownMenuItems: [{
2927
- name: 'editMofifArea',
2928
- label: I18n.t('pageflow_scrolled.editor.edit_section.edit_motif_area'),
2929
- selected: function selected(_ref2) {
2930
- var inputModel = _ref2.inputModel,
2931
- propertyName = _ref2.propertyName,
2932
- file = _ref2.file;
2933
- EditMotifAreaDialogView.show({
2934
- model: inputModel,
2935
- propertyName: propertyName,
2936
- file: file
2937
- });
2938
- }
2939
- }]
3227
+ dropDownMenuItems: [editMotifAreaMenuItem]
2940
3228
  });
2941
3229
  this.input('backdropColor', ColorInputView, {
2942
3230
  visibleBinding: 'backdropType',
@@ -2947,10 +3235,54 @@ var EditSectionView = EditConfigurationView.extend({
2947
3235
  fileSelectionHandler: 'sectionConfiguration',
2948
3236
  visibleBinding: 'backdropType',
2949
3237
  visibleBindingValue: 'video',
2950
- positioning: false
3238
+ positioning: false,
3239
+ dropDownMenuItems: [editMotifAreaMenuItem]
3240
+ });
3241
+ this.input('layout', SelectInputView, {
3242
+ values: ['left', 'right', 'center']
3243
+ });
3244
+ this.input('appearance', SelectInputView, {
3245
+ values: ['shadow', 'cards', 'transparent']
2951
3246
  });
2952
3247
  this.input('invert', CheckBoxInputView);
2953
- this.input('fullHeight', CheckBoxInputView);
3248
+ this.input('exposeMotifArea', CheckBoxInputView, {
3249
+ displayUncheckedIfDisabled: true,
3250
+ visibleBinding: ['backdropType'],
3251
+ visible: function visible(_ref2) {
3252
+ var _ref3 = _slicedToArray(_ref2, 1),
3253
+ backdropType = _ref3[0];
3254
+
3255
+ return backdropType !== 'color';
3256
+ },
3257
+ disabledBinding: motifAreaDisabledBinding,
3258
+ disabled: motifAreaDisabled
3259
+ });
3260
+ this.input('staticShadowOpacity', SliderInputView, {
3261
+ defaultValue: 70,
3262
+ visibleBinding: 'appearance',
3263
+ visible: function visible(appearance) {
3264
+ return !appearance || appearance === 'shadow';
3265
+ }
3266
+ });
3267
+ this.input('dynamicShadowOpacity', SliderInputView, {
3268
+ defaultValue: 70,
3269
+ visibleBinding: ['backdropType', 'appearance'],
3270
+ visible: function visible(_ref4) {
3271
+ var _ref5 = _slicedToArray(_ref4, 2),
3272
+ backdropType = _ref5[0],
3273
+ appearance = _ref5[1];
3274
+
3275
+ return backdropType !== 'color' && (!appearance || appearance === 'shadow');
3276
+ },
3277
+ disabledBinding: ['exposeMotifArea'].concat(motifAreaDisabledBinding),
3278
+ disabled: function disabled(_ref6) {
3279
+ var _ref7 = _toArray(_ref6),
3280
+ exposeMotifArea = _ref7[0],
3281
+ motifAreaDisabledBindingValues = _ref7.slice(1);
3282
+
3283
+ return !exposeMotifArea || motifAreaDisabled(motifAreaDisabledBindingValues);
3284
+ }
3285
+ });
2954
3286
  this.input('atmoAudioFileId', FileInputView, {
2955
3287
  collection: 'audio_files',
2956
3288
  fileSelectionHandler: 'sectionConfiguration',
@@ -2959,6 +3291,26 @@ var EditSectionView = EditConfigurationView.extend({
2959
3291
  });
2960
3292
  }
2961
3293
  });
3294
+ var motifAreaDisabledBinding = ['backdropType', 'backdropImageMotifArea', 'backdropImageMobileMotifArea', 'backdropVideoMotifArea', 'backdropImage', 'backdropImageMobile', 'backdropVideo'];
3295
+
3296
+ function motifAreaDisabled(_ref8) {
3297
+ var _ref9 = _slicedToArray(_ref8, 7),
3298
+ backdropType = _ref9[0],
3299
+ backdropImageMotifArea = _ref9[1],
3300
+ backdropImageMobileMotifArea = _ref9[2],
3301
+ backdropVideoMotifArea = _ref9[3],
3302
+ backdropImage = _ref9[4],
3303
+ backdropImageMobile = _ref9[5],
3304
+ backdropVideo = _ref9[6];
3305
+
3306
+ if (backdropType === 'video') {
3307
+ return !backdropVideo || !backdropVideoMotifArea;
3308
+ } else if (backdropType !== 'color') {
3309
+ return (!backdropImage || !backdropImageMotifArea) && (!backdropImageMobile || !backdropImageMobileMotifArea);
3310
+ }
3311
+
3312
+ return true;
3313
+ }
2962
3314
 
2963
3315
  var css$a = "\n\n.EditSectionTransitionEffectView-module_upper_section__AI6fG {\n background: #50514f;\n height: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: normal;\n}\n\n.EditSectionTransitionEffectView-module_lower_section__kZyic {\n background: #A2A2A2;\n height: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: normal;\n}\n\n.EditSectionTransitionEffectView-module_upper_background__2ecP0, .EditSectionTransitionEffectView-module_lower_background__3NowS {\n height: 100%;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.EditSectionTransitionEffectView-module_disabled__1ZRYF {\n pointer-events: none;\n opacity: 0.3;\n}\n\n.EditSectionTransitionEffectView-module_active__3F2NM {\n background: #1c86fe !important;\n}\n\n.EditSectionTransitionEffectView-module_active__3F2NM div,\n.EditSectionTransitionEffectView-module_active__3F2NM .EditSectionTransitionEffectView-module_extended_option__3FO6S {\n color: #ffffff;\n}\n\n.EditSectionTransitionEffectView-module_extended_option__3FO6S {\n display: none !important;\n}\n\n.EditSectionTransitionEffectView-module_active__3F2NM .EditSectionTransitionEffectView-module_extended_option__3FO6S {\n display: flex !important;\n height: auto;\n width: 82.5%;\n align-items: center;\n padding: 5% 2.5%;\n padding-left: 15%;\n}\n\n.EditSectionTransitionEffectView-module_extended_option__3FO6S input {\n opacity: 1 !important;\n visibility: hidden;\n position: absolute;\n left: -15px;\n top: 8px;\n width: auto;\n}\n\n.EditSectionTransitionEffectView-module_container__32mkr.EditSectionTransitionEffectView-module_container_with_option__H-xli label:first-child {\n padding-bottom: 10px;\n}\n\n.EditSectionTransitionEffectView-module_active__3F2NM .EditSectionTransitionEffectView-module_extended_option__3FO6S input:before {\n visibility: visible;\n display: block;\n content: ' ';\n background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSIjZmZmZmZmIj48cGF0aCBkPSJNMjIgMnYyMGgtMjB2LTIwaDIwem0yLTJoLTI0djI0aDI0di0yNHoiLz48L3N2Zz4=);\n background-size: 15px 15px;\n height: 15px;\n width: 15px;\n position: absolute;\n left: 30px;\n top: 4px;\n}\n\n.EditSectionTransitionEffectView-module_active__3F2NM .EditSectionTransitionEffectView-module_extended_option__3FO6S.EditSectionTransitionEffectView-module_active__3F2NM input:before {\n visibility: visible;\n display: block;\n content: ' ';\n background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTIyIDJ2MjBoLTIwdi0yMGgyMHptMi0yaC0yNHYyNGgyNHYtMjR6bS01LjU0MSA4LjQwOWwtMS40MjItMS40MDktNy4wMjEgNy4xODMtMy4wOC0yLjkzNy0xLjM5NSAxLjQzNSA0LjUgNC4zMTkgOC40MTgtOC41OTF6Ii8+PC9zdmc+);\n background-size: 15px 15px;\n height: 15px;\n width: 15px;\n position: absolute;\n left: 30px;\n top: 4px;\n}\n\n.EditSectionTransitionEffectView-module_container__32mkr {\n height: 90px;\n display: flex !important;\n align-items: center;\n border-top: 1px solid #ffffff;\n background: #e5e5e5;\n}\n.EditSectionTransitionEffectView-module_container__32mkr:hover {\n background: #ddd;\n}\n\n.EditSectionTransitionEffectView-module_container__32mkr label:first-child {\n height: 60px;\n width: 100%;\n padding: 15px 0;\n}\n\n.EditSectionTransitionEffectView-module_container_with_option__H-xli.EditSectionTransitionEffectView-module_active__3F2NM {\n height: auto;\n flex-direction: column;\n}\n\n.EditSectionTransitionEffectView-module_transition__1HHuP {\n height: 100%;\n width: 100%;\n display: flex;\n}\n\n\n/*Fade AND Fade Background Upper*/\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_fadeBg__2dHin .EditSectionTransitionEffectView-module_upper_section__AI6fG {\n -webkit-animation: EditSectionTransitionEffectView-module_FadeA__3u-VS 4s linear infinite;\n animation: EditSectionTransitionEffectView-module_FadeA__3u-VS 4s linear infinite;\n}\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_fadeBg__2dHin .EditSectionTransitionEffectView-module_lower_section__kZyic {\n -webkit-animation: EditSectionTransitionEffectView-module_FadeB__a1PxS 4s linear infinite;\n animation: EditSectionTransitionEffectView-module_FadeB__a1PxS 4s linear infinite;\n}\n\n/*Scroll, Scroll Over, Reveal, AND Fade Background Lower*/\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_scroll__2RfMf .EditSectionTransitionEffectView-module_upper_section__AI6fG,\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_scroll__2RfMf .EditSectionTransitionEffectView-module_lower_section__kZyic,\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_scrollOver__3cJJ7 .EditSectionTransitionEffectView-module_lower_section__kZyic,\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_reveal__1_gtk .EditSectionTransitionEffectView-module_upper_section__AI6fG{\n -webkit-animation: EditSectionTransitionEffectView-module_Translate__CLYTi 2s linear infinite;\n animation: EditSectionTransitionEffectView-module_Translate__CLYTi 2s linear infinite;\n}\n\n/*Before After*/\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_beforeAfter__3oeDi .EditSectionTransitionEffectView-module_upper_section__AI6fG {\n -webkit-animation: EditSectionTransitionEffectView-module_Translate__CLYTi 2s linear infinite;\n animation: EditSectionTransitionEffectView-module_Translate__CLYTi 2s linear infinite;\n}\n.EditSectionTransitionEffectView-module_container__32mkr:hover .EditSectionTransitionEffectView-module_beforeAfter__3oeDi .EditSectionTransitionEffectView-module_upper_section__AI6fG div {\n -webkit-animation: EditSectionTransitionEffectView-module_TranslateYPositive__10FZp 2s linear infinite;\n animation: EditSectionTransitionEffectView-module_TranslateYPositive__10FZp 2s linear infinite;\n}\n\n.EditSectionTransitionEffectView-module_animation__3PSoZ {\n width: 30%;\n height: 100%;\n margin: 0 2%;\n border-radius: 5%;\n color: #ffffff;\n text-align: center;\n font-size: 26px;\n overflow: hidden;\n}\n\n/*Fade + Reveal + Before After*/\n.EditSectionTransitionEffectView-module_fadeBg__2dHin .EditSectionTransitionEffectView-module_animation__3PSoZ,\n.EditSectionTransitionEffectView-module_reveal__1_gtk .EditSectionTransitionEffectView-module_animation__3PSoZ,\n.EditSectionTransitionEffectView-module_beforeAfter__3oeDi .EditSectionTransitionEffectView-module_animation__3PSoZ {\n position: relative;\n}\n\n/*Fade + Reveal + Before After Lower Sections*/\n.EditSectionTransitionEffectView-module_fadeBg__2dHin .EditSectionTransitionEffectView-module_lower_section__kZyic,\n.EditSectionTransitionEffectView-module_reveal__1_gtk .EditSectionTransitionEffectView-module_lower_section__kZyic,\n.EditSectionTransitionEffectView-module_beforeAfter__3oeDi .EditSectionTransitionEffectView-module_lower_section__kZyic {\n position: absolute;\n}\n\n/*Reveal, fade Upper Section, & Before After Upper Section*/\n.EditSectionTransitionEffectView-module_reveal__1_gtk .EditSectionTransitionEffectView-module_upper_section__AI6fG,\n.EditSectionTransitionEffectView-module_beforeAfter__3oeDi .EditSectionTransitionEffectView-module_upper_section__AI6fG,\n.EditSectionTransitionEffectView-module_fadeBg__2dHin .EditSectionTransitionEffectView-module_upper_section__AI6fG {\n position: absolute;\n z-index: 1;\n}\n\n.EditSectionTransitionEffectView-module_beforeAfter__3oeDi .EditSectionTransitionEffectView-module_upper_section__AI6fG {\n overflow: hidden;\n}\n\n/*Input*/\n.EditSectionTransitionEffectView-module_container__32mkr input {\n opacity: 0;\n}\n\n/*Label*/\n.EditSectionTransitionEffectView-module_container__32mkr .EditSectionTransitionEffectView-module_input__3i8nA {\n display: block;\n text-align: left;\n height: 100%;\n width: 70%;\n}\n\n/*Keyframes*/\n@-webkit-keyframes EditSectionTransitionEffectView-module_Translate__CLYTi {\n 50% {\n transform: translateY(-100%);\n }\n}\n@keyframes EditSectionTransitionEffectView-module_Translate__CLYTi {\n 50% {\n transform: translateY(-100%);\n }\n}\n@-webkit-keyframes EditSectionTransitionEffectView-module_TranslateYPositive__10FZp {\n 50% {\n transform: translateY(100%);\n }\n}\n@keyframes EditSectionTransitionEffectView-module_TranslateYPositive__10FZp {\n 50% {\n transform: translateY(100%);\n }\n}\n@-webkit-keyframes EditSectionTransitionEffectView-module_FadeA__3u-VS {\n 25%,50% {\n opacity: 0;\n visibility: hidden;\n }\n 10%, 80% {\n visibility: visible;\n }\n}\n@keyframes EditSectionTransitionEffectView-module_FadeA__3u-VS {\n 25%,50% {\n opacity: 0;\n visibility: hidden;\n }\n 10%, 80% {\n visibility: visible;\n }\n}\n@-webkit-keyframes EditSectionTransitionEffectView-module_FadeB__a1PxS {\n 25%, 50% {\n opacity: 1;\n }\n 90% {\n visibility: hidden;\n opacity: 0;\n }\n}\n@keyframes EditSectionTransitionEffectView-module_FadeB__a1PxS {\n 25%, 50% {\n opacity: 1;\n }\n 90% {\n visibility: hidden;\n opacity: 0;\n }\n}";
2964
3316
  var styles$8 = {"selectionColor":"#1c86fe","upper_section":"EditSectionTransitionEffectView-module_upper_section__AI6fG","lower_section":"EditSectionTransitionEffectView-module_lower_section__kZyic","upper_background":"EditSectionTransitionEffectView-module_upper_background__2ecP0","lower_background":"EditSectionTransitionEffectView-module_lower_background__3NowS","disabled":"EditSectionTransitionEffectView-module_disabled__1ZRYF","active":"EditSectionTransitionEffectView-module_active__3F2NM","extended_option":"EditSectionTransitionEffectView-module_extended_option__3FO6S","container":"EditSectionTransitionEffectView-module_container__32mkr","container_with_option":"EditSectionTransitionEffectView-module_container_with_option__H-xli","transition":"EditSectionTransitionEffectView-module_transition__1HHuP","fadeBg":"EditSectionTransitionEffectView-module_fadeBg__2dHin","FadeA":"EditSectionTransitionEffectView-module_FadeA__3u-VS","FadeB":"EditSectionTransitionEffectView-module_FadeB__a1PxS","scroll":"EditSectionTransitionEffectView-module_scroll__2RfMf","scrollOver":"EditSectionTransitionEffectView-module_scrollOver__3cJJ7","reveal":"EditSectionTransitionEffectView-module_reveal__1_gtk","Translate":"EditSectionTransitionEffectView-module_Translate__CLYTi","beforeAfter":"EditSectionTransitionEffectView-module_beforeAfter__3oeDi","TranslateYPositive":"EditSectionTransitionEffectView-module_TranslateYPositive__10FZp","-webkit-animation":"EditSectionTransitionEffectView-module_animation__3PSoZ","animation":"EditSectionTransitionEffectView-module_animation__3PSoZ","input":"EditSectionTransitionEffectView-module_input__3i8nA"};