' + button + ' No, Cancel'
).click ->
diff --git a/app/assets/javascripts/direct_upload.js.coffee b/app/assets/javascripts/direct_upload.js.coffee
index 71117dffae..53ff54cd0f 100644
--- a/app/assets/javascripts/direct_upload.js.coffee
+++ b/app/assets/javascripts/direct_upload.js.coffee
@@ -18,6 +18,7 @@ $ ->
form = $(file_input.parents('form:first'))
submit_button = form.find('input[type="submit"], *[data-trigger="submit"]')
submit_button.on 'click', ->
+ form.addClass('form-disabled')
$('.directupload input:file').fileupload 'send',
files: $('.directupload input:file').prop('files')
return false
@@ -37,7 +38,6 @@ $ ->
progress = parseInt(data.loaded / data.total * 100, 10)
progress_bar.css('width', "#{progress}%")
start: (e)->
- submit_button.prop('disabled', true)
progress_bar.
css('background', 'green').
css('display', 'block').
@@ -45,7 +45,7 @@ $ ->
css('padding', '7px').
text("Loading...")
done: (e, data)->
- submit_button.prop('disabled', false)
+ form.removeClass('form-disabled')
progress_bar.text("Uploading done")
# extract key and generate URL from response
@@ -61,7 +61,7 @@ $ ->
file_input.replaceWith(input)
form.submit()
fail: (e, data)->
- submit_button.prop('disabled', false)
+ form.removeClass('form-disabled')
progress_bar.
css("background", "red").
text("Failed")
diff --git a/app/assets/javascripts/display_returned_items.js b/app/assets/javascripts/display_returned_items.js
new file mode 100644
index 0000000000..8429370505
--- /dev/null
+++ b/app/assets/javascripts/display_returned_items.js
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+ * University. Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ *
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed
+ * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ * CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations under the License.
+ * --- END LICENSE_HEADER BLOCK ---
+*/
+
+// Toggle display of returned items on checkouts page
+$('#inactive_checkouts').on('change', function() {
+ var table = $('#checkouts-table').DataTable();
+ if (this.checked) {
+ table.ajax.url('/checkouts.json?display_returned=true').load();
+ } else {
+ table.ajax.url('/checkouts.json').load();
+ }
+});
diff --git a/app/assets/javascripts/dynamic_fields.js.coffee b/app/assets/javascripts/dynamic_fields.js.coffee
index d2709edb39..fb0d4c802b 100644
--- a/app/assets/javascripts/dynamic_fields.js.coffee
+++ b/app/assets/javascripts/dynamic_fields.js.coffee
@@ -68,10 +68,10 @@ $ ->
else
current_input_group.after(new_input_group)
- $(document).on 'click', '.remove-dynamic-field', (e) ->
- e.preventDefault()
- current_input_group = $(this).closest('.input-group')
- textarea = current_input_group.data('textarea')
- if typeof(textarea)!="undefined"
- $(document.getElementById(textarea)).remove()
- current_input_group.remove()
+ $(document).on 'click', '.remove-dynamic-field', (e) ->
+ e.preventDefault()
+ current_input_group = $(this).closest('.input-group')
+ textarea = current_input_group.data('textarea')
+ if typeof(textarea)!="undefined"
+ $(document.getElementById(textarea)).remove()
+ current_input_group.remove()
diff --git a/app/assets/javascripts/localize_times.js b/app/assets/javascripts/localize_times.js
new file mode 100644
index 0000000000..0c29368d66
--- /dev/null
+++ b/app/assets/javascripts/localize_times.js
@@ -0,0 +1,9 @@
+// Requires moment.js
+function localize_times() {
+ $('*[data-utc-time]').each(function() {
+ $(this).text(moment($(this).data('utc-time')).format('LLL'))
+ });
+}
+
+$(document).ready(localize_times);
+$(document).on('draw.dt', localize_times);
diff --git a/app/assets/javascripts/media_player_wrapper/mejs4_helper_markers.es6 b/app/assets/javascripts/media_player_wrapper/mejs4_helper_markers.es6
index 49e72c39cc..7450b54e32 100644
--- a/app/assets/javascripts/media_player_wrapper/mejs4_helper_markers.es6
+++ b/app/assets/javascripts/media_player_wrapper/mejs4_helper_markers.es6
@@ -92,11 +92,12 @@ class MEJSMarkersHelper {
// Show popover confirmation
$button.popover({
- container: '#popover-container-' + $button[0].dataset.markerId,
+ container: '#popover-container-' + markerId,
content: content,
sanitize: false,
html: true,
- placement: 'top'
+ placement: 'top',
+ trigger: 'focus'
});
$button.popover('show');
diff --git a/app/assets/javascripts/media_player_wrapper/mejs4_plugin_add_marker_to_playlist.es6 b/app/assets/javascripts/media_player_wrapper/mejs4_plugin_add_marker_to_playlist.es6
index 58e9dfa6e2..ccac158081 100644
--- a/app/assets/javascripts/media_player_wrapper/mejs4_plugin_add_marker_to_playlist.es6
+++ b/app/assets/javascripts/media_player_wrapper/mejs4_plugin_add_marker_to_playlist.es6
@@ -283,7 +283,7 @@ Object.assign(MediaElementPlayer.prototype, {
handleControlClick: function(e) {
const t = this;
let addMarkerObj = t.addMarkerObj;
-
+
// Exit full screen
if(addMarkerObj.player.isFullScreen) {
addMarkerObj.player.exitFullScreen();
diff --git a/app/assets/javascripts/move_section.js b/app/assets/javascripts/move_section.js
index e2840dee4b..3cd0f4cf4d 100644
--- a/app/assets/javascripts/move_section.js
+++ b/app/assets/javascripts/move_section.js
@@ -14,7 +14,7 @@
* --- END LICENSE_HEADER BLOCK ---
*/
-$('#show_move_modal').on('click', function(){
+$('.show_move_modal').on('click', function(){
$('#move_modal').show();
var id = $(this).data('id');
// Set the URL for form POST action
diff --git a/app/assets/stylesheets/avalon.scss b/app/assets/stylesheets/avalon.scss
index e667597bce..adab8c6589 100644
--- a/app/assets/stylesheets/avalon.scss
+++ b/app/assets/stylesheets/avalon.scss
@@ -48,6 +48,10 @@ body {
*/
html {
font-size: 14px;
+
+ @include media-breakpoint-down(md) {
+ font-size: 12px;
+ }
}
.alert {
@@ -139,6 +143,12 @@ div.alert-danger {
h3 {
margin-top: 0;
}
+
+ @include media-breakpoint-down(md) {
+ h1 {
+ font-size: 2rem;
+ }
+ }
}
// Generic content spacer
@@ -399,6 +409,12 @@ a[data-trigger='submit'] {
margin-top: 10px;
margin-bottom: 10px;
}
+
+ @include media-breakpoint-down(sm) {
+ margin-top: 1rem;
+ padding: 0;
+ }
+
}
.index_title {
@@ -1095,6 +1111,11 @@ h5.card-title {
padding-top: 5px;
}
+.form-disabled {
+ pointer-events: none;
+ opacity: 0.4;
+}
+
.fileinput-close {
padding-top: 5px;
float: none;
@@ -1166,4 +1187,92 @@ td {
*/
.irmp--transcript_nav {
padding: 10px 0 0 0;
-}
\ No newline at end of file
+}
+
+/* CDL controls on view page styles */
+.cdl-controls {
+ @include media-breakpoint-down(sm) {
+ margin-top: 1rem;
+ }
+ .remaining-time {
+ display: flex;
+ text-align: center;
+
+ @include media-breakpoint-down(sm) {
+ margin: 0;
+ }
+ }
+
+ .remaining-time p {
+ line-height: 1rem;
+ margin: 0.25rem;
+ text-align: left;
+ @include media-breakpoint-between(sm, md) {
+ padding: 0.75rem 0;
+ }
+ }
+
+ .remaining-time span {
+ color: #fff;
+ margin-left: 0.25rem;
+ padding: 0.15rem 0.25rem;
+ border-radius: 0.15rem;
+ background: $primary;
+ font-size: small;
+ line-height: initial;
+
+ @include media-breakpoint-between(sm, md) {
+ padding: 0.75rem 0.25rem;
+ }
+ }
+
+ #return-btn {
+ @include media-breakpoint-down(sm) {
+ float: right;
+ }
+ }
+}
+
+.checkout {
+ background-color: $dark;
+ color: $white;
+
+ p {
+ position: relative;
+ text-align: center;
+ @include media-breakpoint-down(md) {
+ margin-bottom: 0;
+ }
+ }
+
+ form {
+ width: fit-content;
+ margin: 0 auto;
+ }
+
+ .centered {
+ margin: auto;
+ position: absolute;
+ width: 50%;
+ left: 25%;
+ }
+
+ .centered.video {
+ top: 50%;
+ position: absolute;
+ margin: 0;
+ transform: translateY(-50%);
+ }
+}
+
+.checkout.audio {
+ padding: 1rem;
+ height: 25%;
+}
+
+.checkout.video {
+ padding: 3rem;
+ height: 50%;
+ position: relative;
+}
+/* End of CDL controls on view page styles */
diff --git a/app/assets/stylesheets/avalon/_form.scss b/app/assets/stylesheets/avalon/_form.scss
index 52511a6a96..fc04d4ddb4 100644
--- a/app/assets/stylesheets/avalon/_form.scss
+++ b/app/assets/stylesheets/avalon/_form.scss
@@ -19,7 +19,6 @@ $border-radius-base: 4px !default;
// Form-group input fields
.form-group .input-group {
- width: 100.5%;
.form-control {
border-radius: 0;
@@ -53,7 +52,7 @@ $border-radius-base: 4px !default;
.form-group .input-group.typed-textarea {
.input-group-prepend:first-of-type {
- width: 95%;
+ width: 96%;
select {
width: 100%;
@@ -118,4 +117,10 @@ label {
.form-label {
font-weight: bold;
}
-}
\ No newline at end of file
+}
+
+#resource-description {
+ .input-group {
+ flex-wrap: nowrap;
+ }
+}
diff --git a/app/controllers/admin/collections_controller.rb b/app/controllers/admin/collections_controller.rb
index d0bc1b6e92..21d24fc029 100644
--- a/app/controllers/admin/collections_controller.rb
+++ b/app/controllers/admin/collections_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -56,6 +56,7 @@ def show
@virtual_groups = @collection.default_virtual_read_groups
@ip_groups = @collection.default_ip_read_groups
@visibility = @collection.default_visibility
+ @default_lending_period = @collection.default_lending_period
@addable_groups = Admin::Group.non_system_groups.reject { |g| @groups.include? g.name }
@addable_courses = Course.all.reject { |c| @virtual_groups.include? c.context_id }
@@ -257,6 +258,12 @@ def poster
end
end
+ rescue_from Avalon::VocabularyNotFound do |exception|
+ support_email = Settings.email.support
+ notice_text = I18n.t('errors.controlled_vocabulary_error') % [exception.message, support_email, support_email]
+ redirect_to root_path, flash: { error: notice_text.html_safe }
+ end
+
private
def update_access(collection, params)
@@ -298,6 +305,28 @@ def update_access(collection, params)
collection.default_visibility = params[:visibility] unless params[:visibility].blank?
collection.default_hidden = params[:hidden] == "1"
+ collection.cdl_enabled = params[:cdl] == "1"
+ if collection.cdl_enabled?
+ lending_period = build_default_lending_period(collection)
+ if lending_period.positive?
+ collection.default_lending_period = lending_period
+ elsif lending_period.zero? && params["add_lending_period_days"] && params["add_lending_period_hours"]
+ flash[:error] = "Lending period must be greater than 0."
+ end
+ end
+ end
+
+ def build_default_lending_period(collection)
+ lending_period = 0
+ d = params["add_lending_period_days"].to_i
+ h = params["add_lending_period_hours"].to_i
+ d.negative? ? collection.errors.add(:lending_period, "days needs to be a positive integer.") : lending_period += d.days
+ h.negative? ? collection.errors.add(:lending_period, "hours needs to be a positive integer.") : lending_period += h.hours
+
+ flash[:error] = collection.errors.full_messages.join(' ') if collection.errors.present?
+ lending_period.to_i
+ rescue
+ 0
end
def apply_access(collection, params)
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 7970642e36..e66b002e46 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -58,7 +58,9 @@ def rewrite_v4_ids
end
def store_location
- store_location_for(:user, request.url)
+ if should_store_return_url?
+ store_location_for(:user, request.url)
+ end
if request.env["omniauth.params"].present? && request.env["omniauth.params"]["login_popup"].present?
session[:previous_url] = root_path + "self_closing.html"
end
@@ -74,7 +76,7 @@ def after_sign_in_path_for(_resource)
# Used here and in omniauth_callbacks_controller
def find_redirect_url(auth_type, lti_group: nil)
- previous_url = session.delete :previous_url
+ previous_url = session.delete(:previous_url) || session.delete(:user_return_to)
if params['target_id']
# Whitelist params that are allowed to be passed through via LTI
objects_path(params['target_id'], params.permit('t', 'position', 'token'))
@@ -101,6 +103,7 @@ def handle_api_request
sign_in user, event: :authentication
user_session[:json_api_login] = true
user_session[:full_login] = false
+ user_session[:virtual_groups] = user.ldap_groups
else
render json: {errors: ["Permission denied."]}, status: 403
return
@@ -159,7 +162,7 @@ def current_ability
if request.format == :json
head :unauthorized
else
- session[:previous_url] = request.fullpath unless request.xhr?
+ store_location_for(:user, request.fullpath) if should_store_return_url?
render '/errors/restricted_pid', status: :unauthorized
end
end
@@ -198,7 +201,7 @@ def authenticate_user!(_opts = {})
if request.format == :json
head :unauthorized
else
- session[:previous_url] = request.fullpath unless request.xhr?
+ store_location_for(:user, request.fullpath) if should_store_return_url?
render '/errors/restricted_pid', status: :unauthorized
end
end
@@ -238,4 +241,8 @@ def strip_zero_width_chars!(obj)
obj
end
end
+
+ def should_store_return_url?
+ !(request.xhr? || request.format != "html" || request.path.start_with?("/users/") || request.path.end_with?("poster") || request.path.end_with?("thumbnail"))
+ end
end
diff --git a/app/controllers/catalog_controller.rb b/app/controllers/catalog_controller.rb
index f02b325630..09d201ad65 100644
--- a/app/controllers/catalog_controller.rb
+++ b/app/controllers/catalog_controller.rb
@@ -189,6 +189,7 @@ class CatalogController < ApplicationController
config.add_sort_field 'date_ssi desc, title_ssort asc', label: 'Date'
config.add_sort_field 'creator_ssort asc, title_ssort asc', label: 'Main contributor'
config.add_sort_field 'title_ssort asc, date_ssi desc', label: 'Title'
+ config.add_sort_field 'timestamp desc', label: 'Recently Updated', if: false
# If there are more than this many search results, no spelling ("did you
# mean") suggestion is offered.
diff --git a/app/controllers/checkouts_controller.rb b/app/controllers/checkouts_controller.rb
new file mode 100644
index 0000000000..0b0863ae8a
--- /dev/null
+++ b/app/controllers/checkouts_controller.rb
@@ -0,0 +1,144 @@
+class CheckoutsController < ApplicationController
+ before_action :set_checkout, only: %i[show update destroy]
+ before_action :set_checkouts, only: %i[index return_all]
+ load_and_authorize_resource except: [:create]
+
+ # GET /checkouts or /checkouts.json
+ def index
+ respond_to do |format|
+ format.html { render :index }
+ format.json do
+ response = {
+ "data": @checkouts.collect do |checkout|
+ if current_ability.is_administrator?
+ admin_array(checkout)
+ else
+ user_array(checkout)
+ end
+ end
+ }
+ render json: response
+ end
+ end
+ end
+
+ # GET /checkouts/1.json
+ def show; end
+
+ # POST /checkouts or /checkouts.json
+ def create
+ @checkout = Checkout.new(user: current_user, media_object_id: checkout_params[:media_object_id])
+
+ respond_to do |format|
+ # TODO: move this can? check into a checkout ability (can?(:create, @checkout))
+ if can?(:create, @checkout) && @checkout.save
+ format.html { redirect_to media_object_path(checkout_params[:media_object_id]) }
+ format.json { render :show, status: :created, location: @checkout }
+ else
+ format.json { render json: @checkout.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # PATCH/PUT /checkouts/1.json
+ def update
+ respond_to do |format|
+ if @checkout.update(checkout_params.slice(:return_time))
+ # TODO: Change this since it will be called from the media object show page
+ format.json { render :show, status: :ok, location: @checkout }
+ else
+ format.json { render json: @checkout.errors, status: :unprocessable_entity }
+ end
+ end
+ end
+
+ # PATCH /checkouts/1/return
+ def return
+ @checkout.update(return_time: DateTime.current)
+
+ respond_to do |format|
+ format.html { redirect_back fallback_location: checkouts_url }
+ format.json { head :no_content }
+ end
+ end
+
+ # PATCH /checkouts/return_all
+ def return_all
+ @checkouts.each { |c| c.update(return_time: DateTime.current) }
+
+ respond_to do |format|
+ format.html { redirect_to checkouts_url }
+ format.json { head :no_content }
+ end
+ end
+
+ # DELETE /checkouts/1 or /checkouts/1.json
+ def destroy
+ @checkout.destroy
+ flash[:notice] = "Checkout was successfully destroyed."
+
+ respond_to do |format|
+ format.html { redirect_to checkouts_url, notice: flash[:notice] }
+ format.json { render json: flash[:notice] }
+ end
+ end
+
+ private
+
+ # Use callbacks to share common setup or constraints between actions.
+ def set_checkout
+ @checkout = Checkout.find(params[:id])
+ end
+
+ def set_checkouts
+ if params[:display_returned] == 'true'
+ @checkouts = if current_ability.is_administrator?
+ set_active_checkouts.or(Checkout.all.where("return_time <= now()"))
+ else
+ set_active_checkouts.or(Checkout.returned_for_user(current_user&.id))
+ end
+ else
+ @checkouts = set_active_checkouts
+ end
+ end
+
+ def set_active_checkouts
+ @checkouts = if current_ability.is_administrator?
+ Checkout.all.where("return_time > now()")
+ else
+ Checkout.active_for_user(current_user&.id)
+ end
+ end
+
+ def admin_array(checkout)
+ [checkout.user.user_key] + user_array(checkout)
+ end
+
+ def user_array(checkout)
+ [
+ view_context.link_to(checkout.media_object.title, main_app.media_object_url(checkout.media_object)),
+ "",
+ "",
+ time_remaining(checkout),
+ checkout_actions(checkout)
+ ]
+ end
+
+ def time_remaining(checkout)
+ if checkout.return_time > DateTime.current
+ view_context.distance_of_time_in_words(checkout.return_time - DateTime.current)
+ else
+ "-"
+ end
+ end
+
+ def checkout_actions(checkout)
+ return '' unless checkout.return_time > DateTime.current
+ view_context.link_to('Return', return_checkout_url(checkout), class: 'btn btn-outline btn-xs', method: :patch)
+ end
+
+ # Only allow a list of trusted parameters through.
+ def checkout_params
+ params.require(:checkout).permit(:media_object_id, :return_time, :display_returned)
+ end
+end
diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb
index 3b8b2fee76..7bd7b380e1 100644
--- a/app/controllers/comments_controller.rb
+++ b/app/controllers/comments_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
diff --git a/app/controllers/derivatives_controller.rb b/app/controllers/derivatives_controller.rb
index 4bc5ad8ae9..e2e8a6932d 100644
--- a/app/controllers/derivatives_controller.rb
+++ b/app/controllers/derivatives_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
diff --git a/app/controllers/master_files_controller.rb b/app/controllers/master_files_controller.rb
index 8357828d32..98854b85c4 100644
--- a/app/controllers/master_files_controller.rb
+++ b/app/controllers/master_files_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -70,7 +70,7 @@ def show
def embed
if can? :read, @master_file
- @stream_info = secure_streams(@master_file.stream_details)
+ @stream_info = secure_streams(@master_file.stream_details, @master_file.media_object_id)
@stream_info['t'] = view_context.parse_media_fragment(params[:t]) # add MediaFragment from params
@stream_info['link_back_url'] = view_context.share_link_for(@master_file)
end
@@ -411,14 +411,14 @@ def ensure_readable_filedata
end
def gather_hls_streams(master_file)
- stream_info = secure_streams(master_file.stream_details)
+ stream_info = secure_streams(master_file.stream_details, master_file.media_object_id)
hls_streams = stream_info[:stream_hls].reject { |stream| stream[:quality] == 'auto' }
hls_streams.each { |stream| unnest_wowza_stream(stream) } if Settings.streaming.server == "wowza"
hls_streams
end
def hls_stream(master_file, quality)
- stream_info = secure_streams(master_file.stream_details)
+ stream_info = secure_streams(master_file.stream_details, master_file.media_object_id)
hls_stream = stream_info[:stream_hls].select { |stream| stream[:quality] == quality }
unnest_wowza_stream(hls_stream&.first) if Settings.streaming.server == "wowza"
hls_stream
diff --git a/app/controllers/media_objects_controller.rb b/app/controllers/media_objects_controller.rb
index 313f08853d..4b457566ff 100644
--- a/app/controllers/media_objects_controller.rb
+++ b/app/controllers/media_objects_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -30,7 +30,9 @@ class MediaObjectsController < ApplicationController
before_action :load_player_context, only: [:show]
def self.is_editor ctx
- ctx.current_ability.is_editor_of?(ctx.instance_variable_get('@media_object').collection)
+ Rails.cache.fetch([ctx.hash, :is_editor], expires_in: 5.seconds) do
+ ctx.current_ability.is_editor_of?(ctx.instance_variable_get('@media_object').collection)
+ end
end
def self.is_lti_session ctx
ctx.user_session.present? && ctx.user_session[:lti_group].present?
@@ -318,7 +320,7 @@ def custom_update
def index
respond_to do |format|
format.json {
- paginate json: MediaObject.all
+ paginate json: MediaObject.accessible_by(current_ability, :index)
}
end
end
@@ -468,7 +470,7 @@ def manifest
master_files = master_file_presenters
canvas_presenters = master_files.collect do |mf|
- stream_info = secure_streams(mf.stream_details)
+ stream_info = secure_streams(mf.stream_details, @media_object.id)
IiifCanvasPresenter.new(master_file: mf, stream_info: stream_info)
end
presenter = IiifManifestPresenter.new(media_object: @media_object, master_files: canvas_presenters)
@@ -516,6 +518,12 @@ def move_preview
end
end
+ rescue_from Avalon::VocabularyNotFound do |exception|
+ support_email = Settings.email.support
+ notice_text = I18n.t('errors.controlled_vocabulary_error') % [exception.message, support_email, support_email]
+ redirect_to root_path, flash: { error: notice_text.html_safe }
+ end
+
protected
def master_file_presenters
@@ -532,7 +540,8 @@ def master_file_presenters
workflow_id: nil,
comment: [],
supplemental_files_json: nil
- })
+ },
+ load_reflections: true)
end
def load_master_files(mode = :rw)
@@ -546,7 +555,11 @@ def set_player_token
def load_current_stream
set_active_file
set_player_token
- @currentStreamInfo = @currentStream.nil? ? {} : secure_streams(@currentStream.stream_details)
+ @currentStreamInfo = if params[:id]
+ @currentStream.nil? ? {} : secure_streams(@currentStream.stream_details, params[:id])
+ else
+ @currentStream.nil? ? {} : secure_streams(@currentStream.stream_details, @media_object.id)
+ end
@currentStreamInfo['t'] = view_context.parse_media_fragment(params[:t]) # add MediaFragment from params
@currentStreamInfo['lti_share_link'] = view_context.lti_share_url_for(@currentStream)
@currentStreamInfo['link_back_url'] = view_context.share_link_for(@currentStream)
diff --git a/app/controllers/playlists_controller.rb b/app/controllers/playlists_controller.rb
index 04f2cc06c7..6e1215d70f 100644
--- a/app/controllers/playlists_controller.rb
+++ b/app/controllers/playlists_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -63,7 +63,10 @@ def paged_index
sort_column = params['order']['0']['column'].to_i rescue 0
sort_direction = params['order']['0']['dir'] rescue 'asc'
session[:playlist_sort] = [sort_column, sort_direction]
- if columns[sort_column] != 'size'
+ if columns[sort_column] == 'created_at' || columns[sort_column] == 'updated_at'
+ @playlists = @playlists.order("#{columns[sort_column].downcase} #{sort_direction}")
+ @playlists = @playlists.offset(params['start']).limit(params['length'])
+ elsif columns[sort_column] != 'size'
@playlists = @playlists.order("lower(#{columns[sort_column].downcase}) #{sort_direction}, #{columns[sort_column].downcase} #{sort_direction}")
@playlists = @playlists.offset(params['start']).limit(params['length'])
else
diff --git a/app/controllers/samvera/persona/users_controller.rb b/app/controllers/samvera/persona/users_controller.rb
index 3ad5d7e1cd..64fc6b2889 100644
--- a/app/controllers/samvera/persona/users_controller.rb
+++ b/app/controllers/samvera/persona/users_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -52,17 +52,10 @@ def paged_index
# Filtering
search_value = params['search']['value']
@presenter = if search_value.present?
- search_role = @presenter.select { |p| p.groups.any? { |g| g.include? search_value } }
- search_date = @presenter.select { |p| last_sign_in(p).to_formatted_s(:long_ordinal).include? search_value }
- search_status = @presenter.select { |p| user_status(p).downcase.include? search_value.downcase }
@presenter.where(%(
username LIKE :search_value OR
- email LIKE :search_value OR
- provider LIKE :search_value
+ email LIKE :search_value
), search_value: "%#{search_value}%")
- .or(User.where(id: search_role.map(&:id)))
- .or(User.where(id: search_date.map(&:id)))
- .or(User.where(id: search_status.map(&:id)))
else
@presenter
end
@@ -74,16 +67,12 @@ def paged_index
sort_column = params['order']['0']['column'].to_i rescue 0
sort_direction = params['order']['0']['dir'] == 'desc' ? 'desc' : 'asc' rescue 'asc'
session[:presenter_sort] = [sort_column, sort_direction]
- if columns[sort_column] != 'entry'
- @presenter = @presenter.order("lower(#{columns[sort_column].downcase}) #{sort_direction}, #{columns[sort_column].downcase} #{sort_direction}")
- @presenter = @presenter.offset(params['start']).limit(params['length'])
- else
- user_roles = @presenter.collect { |p| [ p.groups, p ] }
- user_roles.sort_by! { |r| [-r[0].length, r] }
- @presenter = user_roles.collect { |p| p[1] }
- @presenter.reverse! if sort_direction == 'desc'
- @presenter = @presenter.slice(params['start'].to_i, params['length'].to_i)
- end
+ @presenter = if columns[sort_column] == 'last_sign_in_at'
+ @presenter.order("#{columns[sort_column].downcase} #{sort_direction}")
+ elsif columns[sort_column] != 'entry'
+ @presenter.order("lower(#{columns[sort_column].downcase}) #{sort_direction}, #{columns[sort_column].downcase} #{sort_direction}")
+ end
+ @presenter = @presenter.offset(params['start']).limit(params['length'])
# Build json response
response = {
@@ -98,7 +87,7 @@ def paged_index
view_context.link_to('Edit', main_app.edit_persona_user_path(presenter))
end
become_button = view_context.link_to('Become', main_app.impersonate_persona_user_path(presenter), method: :post)
- delete_button = view_context.link_to('Delete', main_app.persona_user_path(presenter), method: :delete, class: 'btn btn-danger btn-xs action-delete', data: { confirm: "Are you sure you wish to delete the user '#{presenter.email}'? This action is irreversible." })
+ delete_button = view_context.link_to('Delete', main_app.persona_user_path(presenter), method: :delete, class: 'btn btn-danger btn-sm action-delete', data: { confirm: "Are you sure you wish to delete the user '#{presenter.email}'? This action is irreversible." })
formatted_roles = format_roles(presenter.groups)
sign_in = last_sign_in(presenter)
[
@@ -191,7 +180,7 @@ def load_user
def app_view_path
my_engine_root = Samvera::Persona::Engine.root.to_s
- prepend_view_path "#{my_engine_root}/app/views/#{Rails.application.class.parent_name.downcase}"
+ prepend_view_path "#{my_engine_root}/app/views/#{Rails.application.class.module_parent_name.downcase}"
prepend_view_path Rails.root.join('app', 'views')
end
diff --git a/app/controllers/supplemental_files_controller.rb b/app/controllers/supplemental_files_controller.rb
index 7078b0e8c7..17c516f169 100644
--- a/app/controllers/supplemental_files_controller.rb
+++ b/app/controllers/supplemental_files_controller.rb
@@ -145,6 +145,7 @@ def object_supplemental_file_path
end
def authorize_object
- authorize! action_name.to_sym, @object, message: "You do not have sufficient privileges to #{action_name} this supplemental file"
+ action = action_name.to_sym == :show ? :show : :edit
+ authorize! action, @object, message: "You do not have sufficient privileges to #{action_name} this supplemental file"
end
end
diff --git a/app/controllers/timelines_controller.rb b/app/controllers/timelines_controller.rb
index 295ea38231..8b9b84be66 100644
--- a/app/controllers/timelines_controller.rb
+++ b/app/controllers/timelines_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -58,7 +58,11 @@ def paged_index
sort_direction = params['order']['0']['dir'] rescue 'asc'
session[:timeline_sort] = [sort_column, sort_direction]
- @timelines = @timelines.order("lower(#{columns[sort_column].downcase}) #{sort_direction}, #{columns[sort_column].downcase} #{sort_direction}")
+ @timelines = if columns[sort_column] == 'updated_at'
+ @timelines.order("#{columns[sort_column].downcase} #{sort_direction}")
+ else
+ @timelines.order("lower(#{columns[sort_column].downcase}) #{sort_direction}, #{columns[sort_column].downcase} #{sort_direction}")
+ end
@timelines = @timelines.offset(params['start']).limit(params['length'])
response = {
"draw": params['draw'],
@@ -99,13 +103,13 @@ def show
authorize! :read, @timeline
respond_to do |format|
format.html do
- url_fragment = "noHeader=true&noFooter=true&noSourceLink=false"
+ url_fragment = "noHeader=true&noFooter=true&noSourceLink=false&noVideo=false"
if current_user == @timeline.user
- url_fragment += "&resource=#{Addressable::URI.escape_component(manifest_timeline_url(@timeline, format: :json), '://?=')}"
- url_fragment += "&callback=#{Addressable::URI.escape_component(manifest_timeline_url(@timeline, format: :json), '://?=')}"
+ url_fragment += "&resource=#{Addressable::URI.escape_component(manifest_timeline_url(@timeline, format: :json), /[:\/?=]/)}"
+ url_fragment += "&callback=#{Addressable::URI.escape_component(manifest_timeline_url(@timeline, format: :json), /[:\/?=]/)}"
elsif current_user
- url_fragment += "&resource=#{Addressable::URI.escape_component(manifest_timeline_url(@timeline, format: :json, token: @timeline.access_token), '://?=')}"
- url_fragment += "&callback=#{Addressable::URI.escape_component(timelines_url, '://?=')}"
+ url_fragment += "&resource=#{Addressable::URI.escape_component(manifest_timeline_url(@timeline, format: :json, token: @timeline.access_token), /[:\/?=]/)}"
+ url_fragment += "&callback=#{Addressable::URI.escape_component(timelines_url, /[:\/?=]/)}"
end
@timeliner_iframe_url = timeliner_path + "##{url_fragment}"
end
@@ -193,12 +197,12 @@ def destroy
end
# GET /timelines/1/manifest.json
+ # GET /timelines/1/manifest
def manifest
authorize! :read, @timeline
respond_to do |format|
- format.json do
- render json: @timeline.manifest
- end
+ format.json { render json: @timeline.manifest }
+ format.html { render json: @timeline.manifest }
end
end
diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb
index 4beb1f4291..e1d65c88a1 100644
--- a/app/controllers/users/omniauth_callbacks_controller.rb
+++ b/app/controllers/users/omniauth_callbacks_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -87,4 +87,9 @@ def find_user(auth_type)
notice_text = I18n.t('errors.deleted_auth_error') % [support_email, support_email]
redirect_to root_path, flash: { error: notice_text.html_safe }
end
+
+ rescue_from OAuth::Signature::UnknownSignatureMethod do |exception|
+ notice_text = I18n.t('errors.general_auth_error')
+ redirect_to root_path, flash: { error: notice_text }
+ end
end
diff --git a/app/controllers/vocabulary_controller.rb b/app/controllers/vocabulary_controller.rb
index e74f22faff..e6d75a6874 100644
--- a/app/controllers/vocabulary_controller.rb
+++ b/app/controllers/vocabulary_controller.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -32,9 +32,13 @@ def update
render json: {errors: ["No update value sent"]}, status: 422 and return
end
- v = Avalon::ControlledVocabulary.vocabulary
- v[params[:id].to_sym] |= Array(params[:entry])
- result = Avalon::ControlledVocabulary.vocabulary = v
+ @v = Avalon::ControlledVocabulary.vocabulary
+ begin
+ build_update(@v)
+ rescue NoMethodError
+ render json: {errors: ["Update failed. Ensure that the new entry is in the proper form for the intended vocabulary."]}, status: 422 and return
+ end
+ result = Avalon::ControlledVocabulary.vocabulary = @v
if result
head :ok, content_type: 'application/json'
else
@@ -50,4 +54,16 @@ def verify_vocabulary_exists
end
end
+ def build_update(vocabulary)
+ if vocabulary_params[:entry].is_a?(ActionController::Parameters)
+ new_entry = vocabulary_params[:entry].to_hash
+ @v[params[:id].to_sym].merge!(new_entry)
+ else
+ @v[params[:id].to_sym] |= Array(params[:entry])
+ end
+ end
+
+ def vocabulary_params
+ params.permit(entry: {})
+ end
end
diff --git a/app/helpers/blacklight/local_blacklight_helper.rb b/app/helpers/blacklight/local_blacklight_helper.rb
index a60bc9a936..50d14df05b 100644
--- a/app/helpers/blacklight/local_blacklight_helper.rb
+++ b/app/helpers/blacklight/local_blacklight_helper.rb
@@ -86,4 +86,14 @@ def render_document_class(document)
classes << "row"
classes.join(' ')
end
+
+ # Override of blacklight for classes used for main content of Blacklight page
+ def main_content_classes
+ 'col-sm-12 col-md-8'
+ end
+
+ # Override of blacklight for classes used for sidebar content of Blacklight page
+ def sidebar_classes
+ 'page-sidebar col-sm-12 col-md-4'
+ end
end
diff --git a/app/helpers/devise_helper.rb b/app/helpers/cdl_helper.rb
similarity index 72%
rename from app/helpers/devise_helper.rb
rename to app/helpers/cdl_helper.rb
index a2654dd0e9..364b0a9cf0 100644
--- a/app/helpers/devise_helper.rb
+++ b/app/helpers/cdl_helper.rb
@@ -1,24 +1,21 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
# --- END LICENSE_HEADER BLOCK ---
-module DeviseHelper
- def devise_error_messages!
- return "" if resource.errors.empty?
-
- flash[:error] = I18n.t("errors.messages.not_saved",
- count: resource.errors.count,
- resource: resource.class.model_name.human.downcase
- )
+
+module CdlHelper
+ def lending_enabled?(context)
+ return context&.cdl_enabled? if Avalon::Configuration.controlled_digital_lending_enabled?
+ false
end
end
diff --git a/app/helpers/security_helper.rb b/app/helpers/security_helper.rb
index 50bbcd110c..98bc0821cc 100644
--- a/app/helpers/security_helper.rb
+++ b/app/helpers/security_helper.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -13,19 +13,31 @@
# --- END LICENSE_HEADER BLOCK ---
module SecurityHelper
+ include CdlHelper
+
def add_stream_cookies(stream_info)
SecurityHandler.secure_cookies(target: stream_info[:id], request_host: request.server_name).each_pair do |name, value|
cookies[name] = value
end
end
- def secure_streams(stream_info)
+ def secure_streams(stream_info, media_object_id)
+ add_stream_url(stream_info) unless not_checked_out?(media_object_id)
+ stream_info
+ end
+
+ def add_stream_url(stream_info)
add_stream_cookies(id: stream_info[:id])
[:stream_hls].each do |protocol|
stream_info[protocol].each do |quality|
quality[:url] = SecurityHandler.secure_url(quality[:url], session: session, target: stream_info[:id], protocol: protocol)
end
end
- stream_info
end
+
+ private
+
+ def not_checked_out?(media_object_id)
+ lending_enabled?(MediaObject.find(media_object_id)) && Checkout.checked_out_to_user(media_object_id, current_user&.id).empty?
+ end
end
diff --git a/app/javascript/components/collections/Collection.scss b/app/javascript/components/collections/Collection.scss
index 481b716589..c5691361c7 100644
--- a/app/javascript/components/collections/Collection.scss
+++ b/app/javascript/components/collections/Collection.scss
@@ -50,16 +50,11 @@
/* Collection cards */
.collection-card {
- height: 415px;
+ height: 95%;
overflow: hidden;
- // For medium screens
- @media (min-width: 768px) and (max-width: 1199.98px) {
- height: 420px;
- }
-
- // For smaller screens
- @media screen and (max-width: 767px) {
+ // For smaller screens set height to auto
+ @media screen and (max-width: 575.98px) {
height: auto;
}
@@ -72,6 +67,8 @@
.card-body {
padding-top: 5px;
padding-bottom: 0px;
+ padding-right: 1rem;
+ padding-left: 1rem;
}
}
@@ -81,6 +78,36 @@
.italic {
font-style: italic;
}
+
+ // When `line-clamp` is used with `display: -webkit-box`
+ // contains text to a given amount of lines (e.g.: 2)
+ // Reference: https://mgearon.com/css/line-clamp-css-guide/
+ h4 {
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
+}
+
+.card-text {
+ font-size: 14px;
+
+ dt, dd {
+ width: 100%;
+ padding-right: 8px;
+ padding-left: 8px;
+ }
+
+ // Limit metadata values to 2 lines in cards
+ dd {
+ display: -webkit-box;
+ -webkit-line-clamp: 2;
+ -webkit-box-orient: vertical;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ }
}
.search-within-facets {
@@ -101,6 +128,23 @@
margin-top: 3rem;
padding-left: 0;
+ // Using flexbox to adjust all card heights to match the tallest card height
+ @media screen and (min-width: 575.98px) {
+ display: flex;
+ flex-direction: row;
+ padding: 10px;
+
+ li {
+ padding-right: 10px;
+ flex-grow: 1;
+ width: 33%;
+
+ &:last-child {
+ padding-right: 0;
+ }
+ }
+ }
+
.document-thumbnail {
position: relative;
}
@@ -205,4 +249,4 @@
display: block;
width: fit-content;
margin-top: 10px;
-}
\ No newline at end of file
+}
diff --git a/app/javascript/components/collections/landing/SearchResultsCard.js b/app/javascript/components/collections/landing/SearchResultsCard.js
index 0fde8c633f..35ddd42276 100644
--- a/app/javascript/components/collections/landing/SearchResultsCard.js
+++ b/app/javascript/components/collections/landing/SearchResultsCard.js
@@ -25,9 +25,6 @@ const CardMetaData = ({ doc, fieldLabel, fieldName }) => {
let value = doc.attributes[fieldName]?.attributes?.value;
if (Array.isArray(value) && value.length > 1) {
metaData = value.join(', ');
- } else if (typeof value == 'string') {
- const summary = value.substring(0, 50);
- metaData = value.length >= 50 ? `${summary}...` : value;
} else {
metaData = value;
}
@@ -35,8 +32,8 @@ const CardMetaData = ({ doc, fieldLabel, fieldName }) => {
if (doc.attributes[fieldName]) {
return (
-
{fieldLabel}
-
+
{fieldLabel}
+
);
}
@@ -74,10 +71,7 @@ const thumbnailSrc = (doc, props) => {
};
const titleHTML = (doc) => {
- var title = doc.attributes['title_tesi'] && doc.attributes['title_tesi'].attributes.value.substring(0, 50) || doc['id'];
- if (doc.attributes['title_tesi'] && doc.attributes['title_tesi'].attributes.value.length >= 50) {
- title += "...";
- }
+ var title = doc.attributes['title_tesi'] && doc.attributes['title_tesi'].attributes.value || doc['id'];
return { __html: title };
};
diff --git a/app/javascript/iiif-timeliner-styles.css b/app/javascript/iiif-timeliner-styles.css
index 09485d308a..b380975f94 100644
--- a/app/javascript/iiif-timeliner-styles.css
+++ b/app/javascript/iiif-timeliner-styles.css
@@ -15,7 +15,7 @@
*/
@import url(https://fonts.googleapis.com/css?family=Roboto:300,400,500);
-*,:after,:before{box-sizing:border-box}body,html{font-family:Roboto,sans-serif;margin:0;padding:0;overflow:hidden;background:#eee;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.container{max-width:500px;margin:100px auto}.container h1{color:#005cc5}.container code{border:1px solid #ddd;background:#eee}::-webkit-scrollbar{width:2px;height:2px}::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}::-webkit-scrollbar-thumb{border-radius:0;background:rgba(0,0,0,.2)}::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.4)}::-webkit-scrollbar-thumb:window-inactive{background:rgba(0,0,0,.05)}#app{width:100%;height:100%}.documentation{position:fixed;top:0;right:0;background:#000;color:#fff;border-radius:0 0 0 3px;text-decoration:none;padding:10px}
+*,:after,:before{box-sizing:border-box}body,html{font-family:Roboto,sans-serif;margin:0;padding:0;overflow:hidden;background:#eee;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.homepage{margin:20px}.homepage h1{font-weight:500}.container{max-width:500px;margin:100px auto}.container h1{color:#005cc5;text-align:center}.container code{border:1px solid #ddd;background:#eee}.container .panel{line-height:25px;text-align:justify;background:#dad0e4;padding:1px 15px;margin-bottom:15px}.container .button{border:1px solid #3f50b5;background-color:#3f50b5;color:#fff;-webkit-text-decoration:solid;text-decoration:solid;border-radius:3px;margin:35%;padding:5px}::-webkit-scrollbar{width:2px;height:2px}::-webkit-scrollbar-track{border-radius:0;background:rgba(0,0,0,.1)}::-webkit-scrollbar-thumb{border-radius:0;background:rgba(0,0,0,.2)}::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.4)}::-webkit-scrollbar-thumb:window-inactive{background:rgba(0,0,0,.05)}#app{width:100%;height:100%}.documentation{position:fixed;top:0;right:0;background:#000;color:#fff;border-radius:0 0 0 3px;text-decoration:none;padding:10px}
.variations-app-bar{background:#3f50b5;color:#fff}.variations-app-bar-no-header{background:#fff}
.current-time-indicator{color:#777;margin-right:30px}.current-time-indicator--error{color:darkred}.current-time-indicator__current-time{color:#000}.current-time-indicator__runtime{font-size:.85em}
.zoom-controls{position:relative;top:0;right:0}
@@ -24,7 +24,7 @@
.colour-swatch-picker__option{width:64px;height:40px}
.time-picker{display:flex;flex-direction:row-reverse;align-items:flex-end;justify-content:space-evenly;width:80px;margin-right:8px;margin-top:13px;border:2px solid #ccc;padding:8px}.time-picker__unit{width:21px;border:0;outline:0;-webkit-appearance:none;-moz-appearance:none;border-radius:0}
.metadata-editor__button-bar{display:flex;flex-direction:row;justify-content:flex-end;align-items:center}
-.metadata{display:flex;flex-direction:row;align-items:stretch;flex-grow:1;flex-shrink:1;flex-basis:0px;min-height:0}.metadata__annotations{flex:2;padding-right:8px;display:flex;flex-direction:column}.metadata__annotations-content{background:#fff;padding:8px 16px;flex:1 1 0px;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.metadata__project{align-items:stretch;justify-content:stretch}.metadata__project,.metadata__project-content{flex:1 1 0px;display:flex;flex-direction:column}.metadata__project-content{width:100%;background:#fff;padding:8px 16px;overflow-y:auto;overflow-x:hidden}.metadata__content{padding:0 8px}
+.metadata{display:flex;flex-direction:row;align-items:stretch;flex-grow:1;flex-shrink:1;flex-basis:0px;min-height:0}.metadata__annotations{flex:2;padding-right:8px;display:flex;flex-direction:column}.metadata__annotations-content{background:#fff;padding:8px 16px;flex:1 1 0px;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.metadata__video-playback{flex:1;padding-right:8px;display:flex;flex-direction:column}.metadata__video-playback-content{background:#fff;padding:8px 16px;flex:1 1 0px;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.metadata__project{align-items:stretch;justify-content:stretch}.metadata__project,.metadata__project-content{flex:1 1 0px;display:flex;flex-direction:column}.metadata__project-content{width:100%;background:#fff;padding:8px 16px;overflow-y:auto;overflow-x:hidden}.metadata__content{padding:0 8px}
.file-upload{padding:14px;border:1px solid #ccc;border-radius:2px;margin-top:16px;margin-bottom:20px}.file-upload__label{line-height:34px;margin:0 15px}
.footer{margin-top:24px;height:24px}
diff --git a/app/javascript/packs/iiif-timeliner.js b/app/javascript/packs/iiif-timeliner.js
index aa4b28f3ed..46bd3f6c28 100644
--- a/app/javascript/packs/iiif-timeliner.js
+++ b/app/javascript/packs/iiif-timeliner.js
@@ -2982,6 +2982,18 @@ import "../iiif-timeliner-styles.css"
/***/ }),
+ /***/ "./node_modules/@material-ui/icons/PictureInPicture.js":
+ /*!*************************************************************!*\
+ !*** ./node_modules/@material-ui/icons/PictureInPicture.js ***!
+ \*************************************************************/
+ /*! no static exports found */
+ /***/ (function(module, exports, __webpack_require__) {
+
+ "use strict";
+ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@material-ui/icons/utils/createSvgIcon.js\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(_react.default.Fragment, null, _react.default.createElement(\"path\", {\n d: \"M19 7h-8v6h8V7zm2-4H3c-1.1 0-2 .9-2 2v14c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98V5c0-1.1-.9-2-2-2zm0 16.01H3V4.98h18v14.03z\"\n}), _react.default.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n})), 'PictureInPicture');\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/@material-ui/icons/PictureInPicture.js?");
+
+ /***/ }),
+
/***/ "./node_modules/@material-ui/icons/PlayCircleOutline.js":
/*!**************************************************************!*\
!*** ./node_modules/@material-ui/icons/PlayCircleOutline.js ***!
@@ -10151,11 +10163,11 @@ import "../iiif-timeliner-styles.css"
/*!*******************************!*\
!*** ./src/actions/canvas.js ***!
\*******************************/
- /*! exports provided: audioLoading, audioLoaded, audioError, loadCanvas, unloadAudio */
+ /*! exports provided: mediaLoading, mediaLoaded, mediaError, loadCanvas, loadPoster, unloadMedia */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"audioLoading\", function() { return audioLoading; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"audioLoaded\", function() { return audioLoaded; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"audioError\", function() { return audioError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadCanvas\", function() { return loadCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unloadAudio\", function() { return unloadAudio; });\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n/* harmony import */ var _utils_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/invariant */ \"./src/utils/invariant.js\");\n\n\nvar audioLoading = function audioLoading(bytesLoaded, bytesTotal, duration) {\n Object(_utils_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(function () {\n return bytesLoaded <= bytesTotal;\n }, 'Bytes loaded cannot be more than the total');\n var percent = parseInt(bytesLoaded / bytesTotal * 100, 10);\n var percentLoaded = Number.isNaN(percent) ? 100 : percent;\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"AUDIO_LOADING\"],\n payload: {\n percentLoaded: percentLoaded,\n duration: duration\n }\n };\n};\nvar audioLoaded = function audioLoaded(isLoaded) {\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"AUDIO_LOADED\"],\n payload: {\n isLoaded: isLoaded\n }\n };\n};\nvar audioError = function audioError(code) {\n var description = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Unknown error';\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"AUDIO_ERROR\"],\n payload: {\n code: code,\n description: description\n }\n };\n};\nvar loadCanvas = function loadCanvas(state) {\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_CANVAS\"],\n state: state\n };\n};\nvar unloadAudio = function unloadAudio() {\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"UNLOAD_AUDIO\"]\n };\n};\n\n//# sourceURL=webpack:///./src/actions/canvas.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mediaLoading\", function() { return mediaLoading; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mediaLoaded\", function() { return mediaLoaded; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mediaError\", function() { return mediaError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadCanvas\", function() { return loadCanvas; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadPoster\", function() { return loadPoster; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unloadMedia\", function() { return unloadMedia; });\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n/* harmony import */ var _utils_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/invariant */ \"./src/utils/invariant.js\");\n\n\nvar mediaLoading = function mediaLoading(bytesLoaded, bytesTotal, duration) {\n Object(_utils_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(function () {\n return bytesLoaded <= bytesTotal;\n }, 'Bytes loaded cannot be more than the total');\n var percent = parseInt(bytesLoaded / bytesTotal * 100, 10);\n var percentLoaded = Number.isNaN(percent) ? 100 : percent;\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"MEDIA_LOADING\"],\n payload: {\n percentLoaded: percentLoaded,\n duration: duration\n }\n };\n};\nvar mediaLoaded = function mediaLoaded(isLoaded) {\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"MEDIA_LOADED\"],\n payload: {\n isLoaded: isLoaded\n }\n };\n};\nvar mediaError = function mediaError(code) {\n var description = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Unknown error';\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"MEDIA_ERROR\"],\n payload: {\n code: code,\n description: description\n }\n };\n};\nvar loadCanvas = function loadCanvas(state) {\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_CANVAS\"],\n state: state\n };\n};\nvar loadPoster = function loadPoster(poster) {\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_POSTER\"],\n payload: {\n poster: poster\n }\n };\n};\nvar unloadMedia = function unloadMedia() {\n return {\n type: _constants_canvas__WEBPACK_IMPORTED_MODULE_0__[\"UNLOAD_MEDIA\"]\n };\n};\n\n//# sourceURL=webpack:///./src/actions/canvas.js?");
/***/ }),
@@ -10175,11 +10187,11 @@ import "../iiif-timeliner-styles.css"
/*!********************************!*\
!*** ./src/actions/project.js ***!
\********************************/
- /*! exports provided: updateSettings, setLanguage, setTitle, setDescription, resetDocument, importDocument, importError, exportDocument, loadProject, saveProject, setcolourPalette, clearCustomColors */
+ /*! exports provided: updateSettings, setLanguage, setTitle, setDescription, resetDocument, importDocument, importError, exportDocument, loadProject, saveProject, setcolourPalette, clearCustomColors, setProjectChanged */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateSettings\", function() { return updateSettings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLanguage\", function() { return setLanguage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTitle\", function() { return setTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDescription\", function() { return setDescription; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetDocument\", function() { return resetDocument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importDocument\", function() { return importDocument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importError\", function() { return importError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exportDocument\", function() { return exportDocument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadProject\", function() { return loadProject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveProject\", function() { return saveProject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setcolourPalette\", function() { return setcolourPalette; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearCustomColors\", function() { return clearCustomColors; });\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\nvar updateSettings = function updateSettings(form) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"UPDATE_SETTINGS\"],\n payload: form\n };\n};\nvar setLanguage = function setLanguage(language) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_LANGUAGE\"],\n payload: {\n language: language\n }\n };\n};\nvar setTitle = function setTitle(title) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_TITLE\"],\n payload: {\n title: title\n }\n };\n};\nvar setDescription = function setDescription(description) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_DESCRIPTION\"],\n payload: {\n description: description\n }\n };\n};\nvar resetDocument = function resetDocument() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"RESET_DOCUMENT\"]\n };\n};\nvar importDocument = function importDocument(manifest, source) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"IMPORT_DOCUMENT\"],\n manifest: manifest,\n source: source\n };\n};\nvar importError = function importError(error) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"IMPORT_ERROR\"],\n payload: {\n error: error.toString()\n }\n };\n};\nvar exportDocument = function exportDocument() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"EXPORT_DOCUMENT\"]\n };\n};\nvar loadProject = function loadProject(state) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_PROJECT\"],\n state: state\n };\n};\nvar saveProject = function saveProject() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SAVE_PROJECT\"]\n };\n};\nvar setcolourPalette = function setcolourPalette(pallet) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_COLOUR_PALETTE\"],\n payload: {\n pallet: pallet\n }\n };\n};\nvar clearCustomColors = function clearCustomColors() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"CLEAR_CUSTOM_COLORS\"]\n };\n};\n\n//# sourceURL=webpack:///./src/actions/project.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateSettings\", function() { return updateSettings; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLanguage\", function() { return setLanguage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setTitle\", function() { return setTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setDescription\", function() { return setDescription; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetDocument\", function() { return resetDocument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importDocument\", function() { return importDocument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importError\", function() { return importError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"exportDocument\", function() { return exportDocument; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadProject\", function() { return loadProject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveProject\", function() { return saveProject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setcolourPalette\", function() { return setcolourPalette; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearCustomColors\", function() { return clearCustomColors; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setProjectChanged\", function() { return setProjectChanged; });\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\nvar updateSettings = function updateSettings(form) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"UPDATE_SETTINGS\"],\n payload: form\n };\n};\nvar setLanguage = function setLanguage(language) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_LANGUAGE\"],\n payload: {\n language: language\n }\n };\n};\nvar setTitle = function setTitle(title) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_TITLE\"],\n payload: {\n title: title\n }\n };\n};\nvar setDescription = function setDescription(description) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_DESCRIPTION\"],\n payload: {\n description: description\n }\n };\n};\nvar resetDocument = function resetDocument() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"RESET_DOCUMENT\"]\n };\n};\nvar importDocument = function importDocument(manifest, source) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"IMPORT_DOCUMENT\"],\n manifest: manifest,\n source: source\n };\n};\nvar importError = function importError(error) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"IMPORT_ERROR\"],\n payload: {\n error: error.toString()\n }\n };\n};\nvar exportDocument = function exportDocument() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"EXPORT_DOCUMENT\"]\n };\n};\nvar loadProject = function loadProject(state) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_PROJECT\"],\n state: state\n };\n};\nvar saveProject = function saveProject() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SAVE_PROJECT\"]\n };\n};\nvar setcolourPalette = function setcolourPalette(pallet) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"SET_COLOUR_PALETTE\"],\n payload: {\n pallet: pallet\n }\n };\n};\nvar clearCustomColors = function clearCustomColors() {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"CLEAR_CUSTOM_COLORS\"]\n };\n};\nvar setProjectChanged = function setProjectChanged(isSaved) {\n return {\n type: _constants_project__WEBPACK_IMPORTED_MODULE_0__[\"PROJECT_CHANGED\"],\n payload: {\n isSaved: isSaved\n }\n };\n};\n\n//# sourceURL=webpack:///./src/actions/project.js?");
/***/ }),
@@ -10191,7 +10203,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitRangeAt\", function() { return splitRangeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rangeMutations\", function() { return rangeMutations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"groupSelectedRanges\", function() { return groupSelectedRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectRange\", function() { return selectRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"increaseRangeDepth\", function() { return increaseRangeDepth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decreaseRangeDepth\", function() { return decreaseRangeDepth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importRanges\", function() { return importRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deselectRange\", function() { return deselectRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRange\", function() { return createRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateRangeTime\", function() { return updateRangeTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateRange\", function() { return updateRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"movePoint\", function() { return movePoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deleteRange\", function() { return deleteRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scheduleDeleteRange\", function() { return scheduleDeleteRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scheduleDeleteRanges\", function() { return scheduleDeleteRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unsetRangeColor\", function() { return unsetRangeColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadRanges\", function() { return loadRanges; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _utils_internal_action__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/internal-action */ \"./src/utils/internal-action.js\");\n/* harmony import */ var _utils_generateId__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/generateId */ \"./src/utils/generateId.js\");\n\n\n\n\nvar splitRangeAt = function splitRangeAt(time) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SPLIT_RANGE_AT\"],\n payload: {\n time: time\n }\n };\n};\nvar rangeMutations = function rangeMutations(mutations) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"RANGE_MUTATION\"],\n mutations: mutations\n };\n};\nvar groupSelectedRanges = function groupSelectedRanges() {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"GROUP_RANGES\"]\n };\n};\nvar selectRange = function selectRange(id, deselectOthers) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SELECT_RANGE\"],\n payload: {\n id: id,\n deselectOthers: deselectOthers\n }\n };\n};\nvar increaseRangeDepth = function increaseRangeDepth(id) {\n var factor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"INCREASE_RANGE_DEPTH\"],\n payload: {\n id: id,\n factor: factor\n }\n };\n};\nvar decreaseRangeDepth = function decreaseRangeDepth(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"DECREASE_RANGE_DEPTH\"],\n payload: {\n id: id\n }\n };\n};\nvar importRanges = function importRanges(ranges) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"IMPORT_RANGES\"],\n payload: {\n ranges: ranges\n }\n };\n};\nvar deselectRange = function deselectRange(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"DESELECT_RANGE\"],\n payload: {\n id: id\n }\n };\n};\nvar createRange = function createRange(props) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"CREATE_RANGE\"],\n payload: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n id: Object(_utils_generateId__WEBPACK_IMPORTED_MODULE_3__[\"default\"])()\n }, props)\n };\n};\nvar updateRangeTime = function updateRangeTime(id, _ref) {\n var startTime = _ref.startTime,\n endTime = _ref.endTime;\n var undoable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return {\n type: undoable ? _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UPDATE_RANGE_TIME\"] : Object(_utils_internal_action__WEBPACK_IMPORTED_MODULE_2__[\"internal\"])(_constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UPDATE_RANGE_TIME\"]),\n payload: {\n id: id,\n startTime: startTime,\n endTime: endTime\n }\n };\n};\nvar updateRange = function updateRange(id, _ref2) {\n var label = _ref2.label,\n summary = _ref2.summary,\n startTime = _ref2.startTime,\n endTime = _ref2.endTime,\n colour = _ref2.colour,\n whiteText = _ref2.whiteText;\n var schedule = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return {\n type: schedule ? _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SCHEDULE_UPDATE_RANGE\"] : _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UPDATE_RANGE\"],\n payload: {\n id: id,\n label: label,\n summary: summary,\n startTime: startTime,\n endTime: endTime,\n colour: colour,\n whiteText: whiteText\n }\n };\n};\n/**\n * @deprecated\n */\n\nvar movePoint = function movePoint(x, originalX) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"MOVE_POINT\"],\n payload: {\n x: x,\n originalX: originalX\n }\n };\n};\nvar deleteRange = function deleteRange(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"DELETE_RANGE\"],\n payload: {\n id: id\n }\n };\n};\nvar scheduleDeleteRange = function scheduleDeleteRange(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SCHEDULE_DELETE_RANGE\"],\n payload: {\n id: id\n }\n };\n};\nvar scheduleDeleteRanges = function scheduleDeleteRanges(ranges) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SCHEDULE_DELETE_RANGES\"],\n payload: {\n ranges: ranges\n }\n };\n};\nvar unsetRangeColor = function unsetRangeColor(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UNSET_RANGE_COLOR\"],\n payload: {\n id: id\n }\n };\n};\n/**\n * @deprecated\n */\n\nvar loadRanges = function loadRanges(ranges) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"LOAD_RANGES\"],\n ranges: ranges\n };\n};\n\n//# sourceURL=webpack:///./src/actions/range.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"splitRangeAt\", function() { return splitRangeAt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rangeMutations\", function() { return rangeMutations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"groupSelectedRanges\", function() { return groupSelectedRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"selectRange\", function() { return selectRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"increaseRangeDepth\", function() { return increaseRangeDepth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"decreaseRangeDepth\", function() { return decreaseRangeDepth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"importRanges\", function() { return importRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deselectRange\", function() { return deselectRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRange\", function() { return createRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateRangeTime\", function() { return updateRangeTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateRange\", function() { return updateRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"movePoint\", function() { return movePoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"deleteRange\", function() { return deleteRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scheduleDeleteRange\", function() { return scheduleDeleteRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scheduleDeleteRanges\", function() { return scheduleDeleteRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unsetRangeColor\", function() { return unsetRangeColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadRanges\", function() { return loadRanges; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _utils_internal_action__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/internal-action */ \"./src/utils/internal-action.js\");\n/* harmony import */ var _utils_generateId__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/generateId */ \"./src/utils/generateId.js\");\n\n\n\n\nvar splitRangeAt = function splitRangeAt(time) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SPLIT_RANGE_AT\"],\n payload: {\n time: time\n }\n };\n};\nvar rangeMutations = function rangeMutations(mutations) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"RANGE_MUTATION\"],\n mutations: mutations\n };\n};\nvar groupSelectedRanges = function groupSelectedRanges() {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"GROUP_RANGES\"]\n };\n};\nvar selectRange = function selectRange(id, deselectOthers) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SELECT_RANGE\"],\n payload: {\n id: id,\n deselectOthers: deselectOthers\n }\n };\n};\nvar increaseRangeDepth = function increaseRangeDepth(id) {\n var factor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"INCREASE_RANGE_DEPTH\"],\n payload: {\n id: id,\n factor: factor\n }\n };\n};\nvar decreaseRangeDepth = function decreaseRangeDepth(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"DECREASE_RANGE_DEPTH\"],\n payload: {\n id: id\n }\n };\n};\nvar importRanges = function importRanges(ranges) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"IMPORT_RANGES\"],\n payload: {\n ranges: ranges\n }\n };\n};\nvar deselectRange = function deselectRange(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"DESELECT_RANGE\"],\n payload: {\n id: id\n }\n };\n};\nvar createRange = function createRange(props) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"CREATE_RANGE\"],\n payload: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n id: Object(_utils_generateId__WEBPACK_IMPORTED_MODULE_3__[\"default\"])()\n }, props)\n };\n};\nvar updateRangeTime = function updateRangeTime(id, _ref) {\n var startTime = _ref.startTime,\n endTime = _ref.endTime;\n var undoable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return {\n type: undoable ? _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UPDATE_RANGE_TIME\"] : Object(_utils_internal_action__WEBPACK_IMPORTED_MODULE_2__[\"internal\"])(_constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UPDATE_RANGE_TIME\"]),\n payload: {\n id: id,\n startTime: startTime,\n endTime: endTime\n }\n };\n};\nvar updateRange = function updateRange(id, _ref2) {\n var label = _ref2.label,\n summary = _ref2.summary,\n startTime = _ref2.startTime,\n endTime = _ref2.endTime,\n colour = _ref2.colour,\n whiteText = _ref2.whiteText;\n var schedule = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n return {\n type: schedule ? _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SCHEDULE_UPDATE_RANGE\"] : _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UPDATE_RANGE\"],\n payload: {\n id: id,\n label: label,\n summary: summary,\n startTime: startTime,\n endTime: endTime,\n colour: colour,\n whiteText: whiteText\n }\n };\n};\n/**\n * @deprecated\n */\n\nvar movePoint = function movePoint(x, originalX) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"MOVE_POINT\"],\n payload: {\n x: x,\n originalX: originalX\n }\n };\n};\nvar deleteRange = function deleteRange(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"DELETE_RANGE\"],\n payload: {\n id: id\n }\n };\n};\nvar scheduleDeleteRange = function scheduleDeleteRange(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SCHEDULE_DELETE_RANGE\"],\n payload: {\n id: id\n }\n };\n};\nvar scheduleDeleteRanges = function scheduleDeleteRanges(ranges) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"SCHEDULE_DELETE_RANGES\"],\n payload: {\n ranges: ranges\n }\n };\n};\nvar unsetRangeColor = function unsetRangeColor(id) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"UNSET_RANGE_COLOR\"],\n payload: {\n id: id\n }\n };\n};\n/**\n * @deprecated\n */\n\nvar loadRanges = function loadRanges(ranges) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_1__[\"LOAD_RANGES\"],\n ranges: ranges\n };\n};\n\n//# sourceURL=webpack:///./src/actions/range.js?");
/***/ }),
@@ -10199,11 +10211,11 @@ import "../iiif-timeliner-styles.css"
/*!**********************************!*\
!*** ./src/actions/viewState.js ***!
\**********************************/
- /*! exports provided: play, pause, zoomIn, zoomOut, zoomTo, resetZoom, updateViewerWidth, panToPosition, undoAll, setStartTime, showImportModal, dismissImportModal, showSettingsModal, dismissSettingsModal, nextBubble, previousBubble, fastForward, fastReward, setVolume, setCurrentTime, loadViewState, loadSource, editMetadata, editProjectMetadata, cancelProjectMetadataEdits, saveProjectMetadata, openVerifyDialog, closeVerifyDialog, confirmYes, confirmNo, finishedPlaying, setCallback, setResource */
+ /*! exports provided: play, pause, seek, zoomIn, zoomOut, zoomTo, resetZoom, updateViewerWidth, panToPosition, undoAll, setStartTime, showImportModal, dismissImportModal, showSettingsModal, dismissSettingsModal, nextBubble, previousBubble, fastForward, fastReward, setVolume, setCurrentTime, loadViewState, loadSource, editMetadata, editProjectMetadata, cancelProjectMetadataEdits, saveProjectMetadata, openVerifyDialog, closeVerifyDialog, confirmYes, confirmNo, finishedPlaying, setCallback, setResource */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"play\", function() { return play; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pause\", function() { return pause; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomIn\", function() { return zoomIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomOut\", function() { return zoomOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomTo\", function() { return zoomTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetZoom\", function() { return resetZoom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateViewerWidth\", function() { return updateViewerWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panToPosition\", function() { return panToPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"undoAll\", function() { return undoAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setStartTime\", function() { return setStartTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showImportModal\", function() { return showImportModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dismissImportModal\", function() { return dismissImportModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showSettingsModal\", function() { return showSettingsModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dismissSettingsModal\", function() { return dismissSettingsModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextBubble\", function() { return nextBubble; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"previousBubble\", function() { return previousBubble; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastForward\", function() { return fastForward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastReward\", function() { return fastReward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVolume\", function() { return setVolume; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCurrentTime\", function() { return setCurrentTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadViewState\", function() { return loadViewState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadSource\", function() { return loadSource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editMetadata\", function() { return editMetadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editProjectMetadata\", function() { return editProjectMetadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cancelProjectMetadataEdits\", function() { return cancelProjectMetadataEdits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveProjectMetadata\", function() { return saveProjectMetadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openVerifyDialog\", function() { return openVerifyDialog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeVerifyDialog\", function() { return closeVerifyDialog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"confirmYes\", function() { return confirmYes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"confirmNo\", function() { return confirmNo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"finishedPlaying\", function() { return finishedPlaying; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCallback\", function() { return setCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setResource\", function() { return setResource; });\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _utils_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/invariant */ \"./src/utils/invariant.js\");\n\n\nvar play = function play() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"PLAY_AUDIO\"]\n };\n};\nvar pause = function pause() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"STOP_AUDIO\"]\n };\n};\nvar zoomIn = function zoomIn() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"ZOOM_IN\"]\n };\n};\nvar zoomOut = function zoomOut() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"ZOOM_OUT\"]\n };\n};\nvar zoomTo = function zoomTo(zoom) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"ZOOM_TO\"],\n payload: {\n zoom: zoom\n }\n };\n};\nvar resetZoom = function resetZoom() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"RESET_ZOOM\"]\n };\n};\nvar updateViewerWidth = function updateViewerWidth(width) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"UPDATE_VIEWER_WIDTH\"],\n payload: {\n width: width\n }\n };\n};\nvar panToPosition = function panToPosition(time) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"PAN_TO_POSITION\"],\n payload: {\n x: time\n }\n };\n};\nvar undoAll = function undoAll() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"UNDO_ALL\"]\n };\n};\nvar setStartTime = function setStartTime(startTime) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_START_TIME\"],\n payload: {\n startTime: startTime\n }\n };\n};\nvar showImportModal = function showImportModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SHOW_IMPORT_MODAL\"]\n };\n};\nvar dismissImportModal = function dismissImportModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"DISMISS_IMPORT_MODAL\"]\n };\n};\nvar showSettingsModal = function showSettingsModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SHOW_SETTINGS_MODAL\"]\n };\n};\nvar dismissSettingsModal = function dismissSettingsModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"DISMISS_SETTINGS_MODAL\"]\n };\n};\nvar nextBubble = function nextBubble() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"NEXT_BUBBLE\"]\n };\n};\nvar previousBubble = function previousBubble() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"PREVIOUS_BUBBLE\"]\n };\n};\nvar fastForward = function fastForward() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"FAST_FORWARD\"]\n };\n};\nvar fastReward = function fastReward() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"FAST_REWARD\"]\n };\n};\nvar setVolume = function setVolume(volume) {\n return Object(_utils_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(function () {\n return volume >= 0 && volume <= 100;\n }, 'Volume must be between 0-100') && {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_VOLUME\"],\n payload: {\n volume: volume\n }\n };\n};\nvar setCurrentTime = function setCurrentTime(time) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_CURRENT_TIME\"],\n payload: {\n currentTime: time\n }\n };\n};\nvar loadViewState = function loadViewState(state) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_VIEW_STATE\"],\n state: state\n };\n};\nvar loadSource = function loadSource(source) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_SOURCE\"],\n payload: {\n source: source\n }\n };\n};\nvar editMetadata = function editMetadata(rangeId) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"EDIT_METADATA\"],\n rangeId: rangeId\n };\n};\nvar editProjectMetadata = function editProjectMetadata() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"EDIT_PROJECT_METADATA\"]\n };\n};\nvar cancelProjectMetadataEdits = function cancelProjectMetadataEdits() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CANCEL_PROJECT_METADATA_EDITS\"]\n };\n};\nvar saveProjectMetadata = function saveProjectMetadata(metadata) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SAVE_PROJECT_METADATA\"],\n metadata: metadata\n };\n};\nvar openVerifyDialog = function openVerifyDialog(title, doCancel) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"OPEN_CONFIRM_DIALOG\"],\n title: title,\n doCancel: doCancel\n };\n};\nvar closeVerifyDialog = function closeVerifyDialog() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CLOSE_CONFIRM_DIALOG\"]\n };\n};\nvar confirmYes = function confirmYes() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CONFIRM_YES\"]\n };\n};\nvar confirmNo = function confirmNo() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CONFIRM_NO\"]\n };\n};\nvar finishedPlaying = function finishedPlaying() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"FINISHED_PLAYING\"]\n };\n};\nvar setCallback = function setCallback(callback) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_CALLBACK\"],\n payload: {\n callback: callback\n }\n };\n};\nvar setResource = function setResource(resource) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_RESOURCE\"],\n payload: {\n resource: resource\n }\n };\n};\n\n//# sourceURL=webpack:///./src/actions/viewState.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"play\", function() { return play; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pause\", function() { return pause; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"seek\", function() { return seek; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomIn\", function() { return zoomIn; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomOut\", function() { return zoomOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"zoomTo\", function() { return zoomTo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetZoom\", function() { return resetZoom; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"updateViewerWidth\", function() { return updateViewerWidth; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"panToPosition\", function() { return panToPosition; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"undoAll\", function() { return undoAll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setStartTime\", function() { return setStartTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showImportModal\", function() { return showImportModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dismissImportModal\", function() { return dismissImportModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showSettingsModal\", function() { return showSettingsModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"dismissSettingsModal\", function() { return dismissSettingsModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"nextBubble\", function() { return nextBubble; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"previousBubble\", function() { return previousBubble; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastForward\", function() { return fastForward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fastReward\", function() { return fastReward; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setVolume\", function() { return setVolume; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCurrentTime\", function() { return setCurrentTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadViewState\", function() { return loadViewState; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadSource\", function() { return loadSource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editMetadata\", function() { return editMetadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editProjectMetadata\", function() { return editProjectMetadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cancelProjectMetadataEdits\", function() { return cancelProjectMetadataEdits; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveProjectMetadata\", function() { return saveProjectMetadata; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openVerifyDialog\", function() { return openVerifyDialog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"closeVerifyDialog\", function() { return closeVerifyDialog; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"confirmYes\", function() { return confirmYes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"confirmNo\", function() { return confirmNo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"finishedPlaying\", function() { return finishedPlaying; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setCallback\", function() { return setCallback; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setResource\", function() { return setResource; });\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _utils_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/invariant */ \"./src/utils/invariant.js\");\n\n\nvar play = function play() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"PLAY_MEDIA\"]\n };\n};\nvar pause = function pause() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"STOP_MEDIA\"]\n };\n};\nvar seek = function seek(flag) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SEEK_MEDIA\"],\n payload: {\n flag: flag\n }\n };\n};\nvar zoomIn = function zoomIn() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"ZOOM_IN\"]\n };\n};\nvar zoomOut = function zoomOut() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"ZOOM_OUT\"]\n };\n};\nvar zoomTo = function zoomTo(zoom) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"ZOOM_TO\"],\n payload: {\n zoom: zoom\n }\n };\n};\nvar resetZoom = function resetZoom() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"RESET_ZOOM\"]\n };\n};\nvar updateViewerWidth = function updateViewerWidth(width) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"UPDATE_VIEWER_WIDTH\"],\n payload: {\n width: width\n }\n };\n};\nvar panToPosition = function panToPosition(time) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"PAN_TO_POSITION\"],\n payload: {\n x: time\n }\n };\n};\nvar undoAll = function undoAll() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"UNDO_ALL\"]\n };\n};\nvar setStartTime = function setStartTime(startTime) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_START_TIME\"],\n payload: {\n startTime: startTime\n }\n };\n};\nvar showImportModal = function showImportModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SHOW_IMPORT_MODAL\"]\n };\n};\nvar dismissImportModal = function dismissImportModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"DISMISS_IMPORT_MODAL\"]\n };\n};\nvar showSettingsModal = function showSettingsModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SHOW_SETTINGS_MODAL\"]\n };\n};\nvar dismissSettingsModal = function dismissSettingsModal() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"DISMISS_SETTINGS_MODAL\"]\n };\n};\nvar nextBubble = function nextBubble() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"NEXT_BUBBLE\"]\n };\n};\nvar previousBubble = function previousBubble() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"PREVIOUS_BUBBLE\"]\n };\n};\nvar fastForward = function fastForward() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"FAST_FORWARD\"]\n };\n};\nvar fastReward = function fastReward() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"FAST_REWARD\"]\n };\n};\nvar setVolume = function setVolume(volume) {\n return Object(_utils_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(function () {\n return volume >= 0 && volume <= 100;\n }, 'Volume must be between 0-100') && {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_VOLUME\"],\n payload: {\n volume: volume\n }\n };\n};\nvar setCurrentTime = function setCurrentTime(time) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_CURRENT_TIME\"],\n payload: {\n currentTime: time\n }\n };\n};\nvar loadViewState = function loadViewState(state) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_VIEW_STATE\"],\n state: state\n };\n};\nvar loadSource = function loadSource(source) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"LOAD_SOURCE\"],\n payload: {\n source: source\n }\n };\n};\nvar editMetadata = function editMetadata(rangeId) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"EDIT_METADATA\"],\n rangeId: rangeId\n };\n};\nvar editProjectMetadata = function editProjectMetadata() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"EDIT_PROJECT_METADATA\"]\n };\n};\nvar cancelProjectMetadataEdits = function cancelProjectMetadataEdits() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CANCEL_PROJECT_METADATA_EDITS\"]\n };\n};\nvar saveProjectMetadata = function saveProjectMetadata(metadata) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SAVE_PROJECT_METADATA\"],\n metadata: metadata\n };\n};\nvar openVerifyDialog = function openVerifyDialog(title, doCancel) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"OPEN_CONFIRM_DIALOG\"],\n title: title,\n doCancel: doCancel\n };\n};\nvar closeVerifyDialog = function closeVerifyDialog() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CLOSE_CONFIRM_DIALOG\"]\n };\n};\nvar confirmYes = function confirmYes() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CONFIRM_YES\"]\n };\n};\nvar confirmNo = function confirmNo() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"CONFIRM_NO\"]\n };\n};\nvar finishedPlaying = function finishedPlaying() {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"FINISHED_PLAYING\"]\n };\n};\nvar setCallback = function setCallback(callback) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_CALLBACK\"],\n payload: {\n callback: callback\n }\n };\n};\nvar setResource = function setResource(resource) {\n return {\n type: _constants_viewState__WEBPACK_IMPORTED_MODULE_0__[\"SET_RESOURCE\"],\n payload: {\n resource: resource\n }\n };\n};\n\n//# sourceURL=webpack:///./src/actions/viewState.js?");
/***/ }),
@@ -10215,7 +10227,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _utils_iiifSaver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/iiifSaver */ \"./src/utils/iiifSaver.js\");\n\n\n\n\nvar createNewManifest = function createNewManifest(manifestDomain, audioUri, duration) {\n var _ref;\n\n return _ref = {\n label: {\n en: ['']\n },\n summary: {\n en: ['']\n },\n type: 'Manifest',\n id: \"\".concat(manifestDomain, \"/manifest\"),\n items: [{\n label: {\n en: ['Untitled Item']\n },\n type: 'Canvas',\n id: \"\".concat(manifestDomain, \"/canvas/c1\"),\n items: [{\n type: 'AnnotationPage',\n items: [{\n id: \"\".concat(manifestDomain, \"/annotation/c1-1\"),\n type: 'Annotation',\n motivation: 'painting',\n label: {\n en: ['Untitled audio']\n },\n body: {\n id: audioUri,\n type: 'Audio',\n duration: duration\n },\n target: \"\".concat(manifestDomain, \"/canvas/c\")\n }],\n id: \"\".concat(manifestDomain, \"/list/c1-ap\")\n }]\n }],\n structures: [{\n id: \"\".concat(manifestDomain, \"/range/r0\"),\n type: 'Range',\n label: {\n en: ['']\n },\n items: [{\n id: \"\".concat(manifestDomain, \"/canvas/c1#t=0,\").concat(duration),\n type: 'Canvas'\n }]\n }]\n }, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_1__[\"RDF_NAMESPACE\"], \":settings\"), Object(_utils_iiifSaver__WEBPACK_IMPORTED_MODULE_2__[\"getProjectSettings\"])(_constants_project__WEBPACK_IMPORTED_MODULE_1__[\"DEFAULT_SETTINGS\"])), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, '@context', ['http://digirati.com/ns/timeliner', 'http://www.w3.org/ns/anno.jsonld', 'http://iiif.io/api/presentation/3/context.json']), _ref;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createNewManifest);\n\n//# sourceURL=webpack:///./src/components/AudioImporter/AudioImporter.ManifestTemplate.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _utils_iiifSaver__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/iiifSaver */ \"./src/utils/iiifSaver.js\");\n\n\n\n\nvar createNewManifest = function createNewManifest(manifestDomain, uri, isVideo, duration) {\n var _ref;\n\n return _ref = {\n label: {\n en: ['']\n },\n summary: {\n en: ['']\n },\n type: 'Manifest',\n id: \"\".concat(manifestDomain, \"/manifest\"),\n items: [{\n label: {\n en: ['Untitled Item']\n },\n type: 'Canvas',\n id: \"\".concat(manifestDomain, \"/canvas/c1\"),\n items: [{\n type: 'AnnotationPage',\n items: [{\n id: \"\".concat(manifestDomain, \"/annotation/c1-1\"),\n type: 'Annotation',\n motivation: 'painting',\n label: {\n en: ['Untitled audio']\n },\n body: {\n id: uri,\n type: isVideo ? 'Video' : 'Audio',\n duration: duration\n },\n target: \"\".concat(manifestDomain, \"/canvas/c\")\n }],\n id: \"\".concat(manifestDomain, \"/list/c1-ap\")\n }]\n }],\n structures: [{\n id: \"\".concat(manifestDomain, \"/range/r0\"),\n type: 'Range',\n label: {\n en: ['']\n },\n items: [{\n id: \"\".concat(manifestDomain, \"/canvas/c1#t=0,\").concat(duration),\n type: 'Canvas'\n }]\n }]\n }, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_1__[\"RDF_NAMESPACE\"], \":settings\"), Object(_utils_iiifSaver__WEBPACK_IMPORTED_MODULE_2__[\"getProjectSettings\"])(_constants_project__WEBPACK_IMPORTED_MODULE_1__[\"DEFAULT_SETTINGS\"])), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, '@context', ['http://digirati.com/ns/timeliner', 'http://www.w3.org/ns/anno.jsonld', 'http://iiif.io/api/presentation/3/context.json']), _ref;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createNewManifest);\n\n//# sourceURL=webpack:///./src/components/AudioImporter/AudioImporter.ManifestTemplate.js?");
/***/ }),
@@ -10227,7 +10239,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapImportErrorMessage\", function() { return mapImportErrorMessage; });\n/* harmony import */ var _AudioImporter_ManifestTemplate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AudioImporter.ManifestTemplate */ \"./src/components/AudioImporter/AudioImporter.ManifestTemplate.js\");\n\nvar MANIFEST_DOMAIN = 'http://digirati.com/iiif/v3/temporary'; // TODO: check if it is valid\n// throws 'Invalid manifest'\n\nvar validateManifest = function validateManifest(manifest) {\n return true;\n};\n\nvar mapImportErrorMessage = function mapImportErrorMessage(error) {\n if (error.indexOf('SyntaxError') === 0) {\n return 'File chosen must be a JSON file';\n }\n\n if (error.indexOf('TypeError') === 0) {\n return 'Invalid JSON provided, please use JSON downloaded from this tool';\n }\n\n return 'An unknown error occurred while importing.';\n};\n\nvar importResource = function importResource(url) {\n return new Promise(function (resolve, reject) {\n fetch(url).then(function (res) {\n if (!res.ok) {\n if (res.status === 404) {\n throw new Error('Resource not found (404)');\n }\n\n console.log(res);\n }\n\n var contentType = res.headers.get('content-type');\n\n if (!contentType) {\n throw new Error('No content type on resource, unable to identify.');\n }\n\n if (contentType.includes('application/json') || contentType.includes('text/plain')) {\n var manifestJSON = res.json();\n validateManifest(manifestJSON);\n resolve(manifestJSON);\n } else {\n var audio = new Audio();\n var audioURL = url;\n audio.addEventListener('loadedmetadata', function () {\n resolve(Object(_AudioImporter_ManifestTemplate__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(MANIFEST_DOMAIN, audioURL, audio.duration));\n });\n audio.addEventListener('error', function () {\n switch (audio.error.code) {\n case 1:\n throw 'fetching process aborted by user';\n\n case 2:\n throw 'error occurred when downloading';\n\n case 3:\n throw 'error occurred when decoding';\n\n default:\n throw 'Unknown error with resource.';\n }\n });\n audio.src = audioURL;\n }\n }).catch(function (err) {\n reject(err.toString());\n });\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (importResource);\n\n//# sourceURL=webpack:///./src/components/AudioImporter/AudioImporter.Utils.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mapImportErrorMessage\", function() { return mapImportErrorMessage; });\n/* harmony import */ var _AudioImporter_ManifestTemplate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AudioImporter.ManifestTemplate */ \"./src/components/AudioImporter/AudioImporter.ManifestTemplate.js\");\n\nvar MANIFEST_DOMAIN = 'http://digirati.com/iiif/v3/temporary'; // TODO: check if it is valid\n// throws 'Invalid manifest'\n\nvar validateManifest = function validateManifest(manifest) {\n return true;\n};\n\nvar mapImportErrorMessage = function mapImportErrorMessage(error) {\n if (error.indexOf('SyntaxError') === 0) {\n return 'File chosen must be a JSON file';\n }\n\n if (error.indexOf('TypeError') === 0) {\n return 'Invalid JSON provided, please use JSON downloaded from this tool';\n }\n\n return 'An unknown error occurred while importing.';\n};\n\nvar importResource = function importResource(url) {\n return new Promise(function (resolve, reject) {\n fetch(url).then(function (res) {\n if (!res.ok) {\n if (res.status === 404) {\n throw new Error('Resource not found (404)');\n }\n\n console.log(res);\n }\n\n var contentType = res.headers.get('content-type');\n\n if (!contentType) {\n throw new Error('No content type on resource, unable to identify.');\n }\n\n if (contentType.includes('application/json') || contentType.includes('text/plain')) {\n var manifestJSON = res.json();\n validateManifest(manifestJSON);\n resolve(manifestJSON);\n } else {\n var isVideo = contentType.includes('audio/') ? false : true;\n var player = new Audio();\n var mediaURL = url;\n player.addEventListener('loadedmetadata', function () {\n resolve(Object(_AudioImporter_ManifestTemplate__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(MANIFEST_DOMAIN, mediaURL, isVideo, player.duration));\n });\n player.addEventListener('error', function () {\n switch (player.error.code) {\n case 1:\n throw 'fetching process aborted by user';\n\n case 2:\n throw 'error occurred when downloading';\n\n case 3:\n throw 'error occurred when decoding';\n\n default:\n throw 'Unknown error with resource.';\n }\n });\n player.src = mediaURL;\n }\n }).catch(function (err) {\n reject(err.toString());\n });\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (importResource);\n\n//# sourceURL=webpack:///./src/components/AudioImporter/AudioImporter.Utils.js?");
/***/ }),
@@ -10239,7 +10251,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./AudioImporter.Utils */ \"./src/components/AudioImporter/AudioImporter.Utils.js\");\n/* harmony import */ var _FileUpload_FileUpload__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../FileUpload/FileUpload */ \"./src/components/FileUpload/FileUpload.js\");\n/* harmony import */ var _material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @material-ui/core/Tabs */ \"./node_modules/@material-ui/core/Tabs/index.js\");\n/* harmony import */ var _material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @material-ui/core/Tab */ \"./node_modules/@material-ui/core/Tab/index.js\");\n/* harmony import */ var _material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/AudioImporter/AudioImporter.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 98\n },\n __self: undefined\n}, \"Open audio file\");\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18___default.a, {\n label: \"URL\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 106\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18___default.a, {\n label: \"Local file\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 107\n },\n __self: undefined\n});\n\nvar AudioImporter =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(AudioImporter, _Component);\n\n function AudioImporter() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, AudioImporter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(AudioImporter)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n localFile: false,\n error: ''\n };\n _this.importUrlField = react__WEBPACK_IMPORTED_MODULE_5___default.a.createRef();\n\n _this.onImportResource = function () {\n var onImport = _this.props.onImport;\n var resourceUri = _this.importUrlField.value;\n Object(_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(resourceUri).then(function (manifest) {\n onImport(manifest, resourceUri);\n }).catch(function (error) {\n return _this.setState({\n error: error\n });\n });\n };\n\n _this.onKeyPress = function () {\n _this.setState({\n error: ''\n });\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === 13) {\n _this.onImportResource();\n }\n };\n\n _this.toggleLocalFile = function () {\n _this.setState(function (s) {\n return {\n localFile: !s.localFile\n };\n });\n };\n\n _this.handleLocalImport = function (data) {\n var onImport = _this.props.onImport;\n\n if (data && data.error) {\n return _this.setState({\n error: Object(_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__[\"mapImportErrorMessage\"])(data.error.toString())\n });\n }\n\n if (!data) {\n return _this.setState({\n error: Object(_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__[\"mapImportErrorMessage\"])('unknown')\n });\n }\n\n try {\n onImport(data, data['@id']);\n\n _this.setState({\n error: null\n });\n } catch (err) {\n _this.setState({\n error: err\n });\n }\n };\n\n _this.handleChange = function (e, currentTab) {\n _this.setState({\n localFile: currentTab === 1\n });\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(AudioImporter, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n open = _this$props.open,\n onClose = _this$props.onClose;\n var localFile = this.state.localFile;\n var error = this.state.error || this.props.error;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10___default.a, {\n open: open,\n onClose: onClose,\n \"aria-labelledby\": \"form-dialog-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 97\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n style: {\n padding: '0 20px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 99\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17___default.a, {\n variant: \"fullWidth\",\n value: localFile ? 1 : 0,\n onChange: this.handleChange,\n indicatorColor: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 100\n },\n __self: this\n }, _ref2, _ref3)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12___default.a, {\n style: {\n width: 400,\n padding: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 110\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"form\", {\n onKeyDown: this.handleKeyDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 111\n },\n __self: this\n }, localFile ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13___default.a, {\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 113\n },\n __self: this\n }, \"Open a saved project from your computer (.json)\") : react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13___default.a, {\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 117\n },\n __self: this\n }, \"Open an audio file (.mp3, .json) from the web\"), localFile ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_FileUpload_FileUpload__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onChange: this.handleLocalImport,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 122\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n inputRef: function inputRef(x) {\n return _this2.importUrlField = x;\n },\n autoFocus: true,\n margin: \"dense\",\n id: \"manifestUrl\",\n name: \"manifestUrl\",\n label: \"Audio or Manifest url\",\n type: \"url\",\n onKeyPress: this.onKeyPress,\n fullWidth: true,\n variant: \"outlined\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 124\n },\n __self: this\n }), error && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9___default.a, {\n variant: \"body1\",\n color: \"error\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 138\n },\n __self: this\n }, error))), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 144\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n disabled: !onClose,\n onClick: onClose,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 145\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n onClick: this.onImportResource,\n variant: \"contained\",\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 148\n },\n __self: this\n }, \"Import\")));\n }\n }]);\n\n return AudioImporter;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nAudioImporter.propTypes = {\n /** Callback for when a manifest is imported, receives manifest object */\n onImport: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** On close */\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** is the dialog open */\n open: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Error state from the parent */\n error: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string\n};\nAudioImporter.defaultProps = {\n open: false,\n error: ''\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioImporter);\n\n//# sourceURL=webpack:///./src/components/AudioImporter/AudioImporter.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./AudioImporter.Utils */ \"./src/components/AudioImporter/AudioImporter.Utils.js\");\n/* harmony import */ var _FileUpload_FileUpload__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../FileUpload/FileUpload */ \"./src/components/FileUpload/FileUpload.js\");\n/* harmony import */ var _material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @material-ui/core/Tabs */ \"./node_modules/@material-ui/core/Tabs/index.js\");\n/* harmony import */ var _material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @material-ui/core/Tab */ \"./node_modules/@material-ui/core/Tab/index.js\");\n/* harmony import */ var _material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/AudioImporter/AudioImporter.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_14___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 98\n },\n __self: undefined\n}, \"Open media file\");\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18___default.a, {\n label: \"URL\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 106\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tab__WEBPACK_IMPORTED_MODULE_18___default.a, {\n label: \"Local file\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 107\n },\n __self: undefined\n});\n\nvar AudioImporter =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(AudioImporter, _Component);\n\n function AudioImporter() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, AudioImporter);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(AudioImporter)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n localFile: false,\n error: ''\n };\n _this.importUrlField = react__WEBPACK_IMPORTED_MODULE_5___default.a.createRef();\n\n _this.onImportResource = function () {\n var onImport = _this.props.onImport;\n var resourceUri = _this.importUrlField.value;\n Object(_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(resourceUri).then(function (manifest) {\n onImport(manifest, resourceUri);\n }).catch(function (error) {\n return _this.setState({\n error: error\n });\n });\n };\n\n _this.onKeyPress = function () {\n _this.setState({\n error: ''\n });\n };\n\n _this.handleKeyDown = function (e) {\n if (e.keyCode === 13) {\n _this.onImportResource();\n }\n };\n\n _this.toggleLocalFile = function () {\n _this.setState(function (s) {\n return {\n localFile: !s.localFile\n };\n });\n };\n\n _this.handleLocalImport = function (data) {\n var onImport = _this.props.onImport;\n\n if (data && data.error) {\n return _this.setState({\n error: Object(_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__[\"mapImportErrorMessage\"])(data.error.toString())\n });\n }\n\n if (!data) {\n return _this.setState({\n error: Object(_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_15__[\"mapImportErrorMessage\"])('unknown')\n });\n }\n\n try {\n onImport(data, data['@id']);\n\n _this.setState({\n error: null\n });\n } catch (err) {\n _this.setState({\n error: err\n });\n }\n };\n\n _this.handleChange = function (e, currentTab) {\n _this.setState({\n localFile: currentTab === 1\n });\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(AudioImporter, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n open = _this$props.open,\n onClose = _this$props.onClose;\n var localFile = this.state.localFile;\n var error = this.state.error || this.props.error;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_10___default.a, {\n open: open,\n onClose: onClose,\n \"aria-labelledby\": \"form-dialog-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 97\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n style: {\n padding: '0 20px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 99\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tabs__WEBPACK_IMPORTED_MODULE_17___default.a, {\n variant: \"fullWidth\",\n value: localFile ? 1 : 0,\n onChange: this.handleChange,\n indicatorColor: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 100\n },\n __self: this\n }, _ref2, _ref3)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_12___default.a, {\n style: {\n width: 400,\n padding: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 110\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"form\", {\n onKeyDown: this.handleKeyDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 111\n },\n __self: this\n }, localFile ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13___default.a, {\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 113\n },\n __self: this\n }, \"Open a saved project from your computer (.json)\") : react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_13___default.a, {\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 117\n },\n __self: this\n }, \"Open an audio/video file (.mp3, .mp4, .json) from the web\"), localFile ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_FileUpload_FileUpload__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onChange: this.handleLocalImport,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 122\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n inputRef: function inputRef(x) {\n return _this2.importUrlField = x;\n },\n autoFocus: true,\n margin: \"dense\",\n id: \"manifestUrl\",\n name: \"manifestUrl\",\n label: \"Audio/Video or Manifest url\",\n type: \"url\",\n onKeyPress: this.onKeyPress,\n fullWidth: true,\n variant: \"outlined\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 124\n },\n __self: this\n }), error && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_9___default.a, {\n variant: \"body1\",\n color: \"error\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 138\n },\n __self: this\n }, error))), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_11___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 144\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n disabled: !onClose,\n onClick: onClose,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 145\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n onClick: this.onImportResource,\n variant: \"contained\",\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 148\n },\n __self: this\n }, \"Import\")));\n }\n }]);\n\n return AudioImporter;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nAudioImporter.propTypes = {\n /** Callback for when a manifest is imported, receives manifest object */\n onImport: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** On close */\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** is the dialog open */\n open: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Error state from the parent */\n error: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string\n};\nAudioImporter.defaultProps = {\n open: false,\n error: ''\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioImporter);\n\n//# sourceURL=webpack:///./src/components/AudioImporter/AudioImporter.js?");
/***/ }),
@@ -10251,7 +10263,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _CurrentTimeIndicator_CurrentTimeIndicator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurrentTimeIndicator/CurrentTimeIndicator */ \"./src/components/CurrentTimeIndicator/CurrentTimeIndicator.js\");\n/* harmony import */ var _NextButton_NextButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../NextButton/NextButton */ \"./src/components/NextButton/NextButton.js\");\n/* harmony import */ var _PreviousButton_PreviousButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../PreviousButton/PreviousButton */ \"./src/components/PreviousButton/PreviousButton.js\");\n/* harmony import */ var _SkipAheadButton_SkipAheadButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../SkipAheadButton/SkipAheadButton */ \"./src/components/SkipAheadButton/SkipAheadButton.js\");\n/* harmony import */ var _SkipBackwardsButton_SkipBackwardsButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../SkipBackwardsButton/SkipBackwardsButton */ \"./src/components/SkipBackwardsButton/SkipBackwardsButton.js\");\n/* harmony import */ var _PlayPauseButton_PlayPauseButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../PlayPauseButton/PlayPauseButton */ \"./src/components/PlayPauseButton/PlayPauseButton.js\");\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _ZoomControls_ZoomControls__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../ZoomControls/ZoomControls */ \"./src/components/ZoomControls/ZoomControls.js\");\n/* harmony import */ var _AudioTransportBar_scss__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./AudioTransportBar.scss */ \"./src/components/AudioTransportBar/AudioTransportBar.scss\");\n/* harmony import */ var _AudioTransportBar_scss__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_AudioTransportBar_scss__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _VolumeSliderCompact_VolumeSliderCompact__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../VolumeSliderCompact/VolumeSliderCompact */ \"./src/components/VolumeSliderCompact/VolumeSliderCompact.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @material-ui/icons/GroupWork */ \"./node_modules/@material-ui/icons/GroupWork.js\");\n/* harmony import */ var _material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @material-ui/icons/Delete */ \"./node_modules/@material-ui/icons/Delete.js\");\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @material-ui/icons/ArrowDropUp */ \"./node_modules/@material-ui/icons/ArrowDropUp.js\");\n/* harmony import */ var _material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @material-ui/icons/Add */ \"./node_modules/@material-ui/icons/Add.js\");\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/AudioTransportBar/AudioTransportBar.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 125\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 143\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 162\n },\n __self: undefined\n});\n\nvar _ref4 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 180\n },\n __self: undefined\n});\n\nvar AudioTransportBar =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(AudioTransportBar, _Component);\n\n function AudioTransportBar() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, AudioTransportBar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(AudioTransportBar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.keyboardListener = function (e) {\n if (e.target && ['INPUT', 'BUTTON', 'TEXTAREA'].indexOf(e.target.tagName) !== -1) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n //left\n return _this.props.onScrubBackwards();\n\n case 39:\n // right\n return _this.props.onScrubAhead();\n\n case 40: //down\n\n case 38: // top\n\n case 32:\n // space-bar\n return _this.props.isPlaying ? _this.props.onPause() : _this.props.onPlay();\n\n default:\n return;\n }\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(AudioTransportBar, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onAddBubble = _this$props.onAddBubble,\n onGroupBubble = _this$props.onGroupBubble,\n onDeleteBubble = _this$props.onDeleteBubble,\n onAddMarker = _this$props.onAddMarker,\n onPreviousBubble = _this$props.onPreviousBubble,\n onScrubBackwards = _this$props.onScrubBackwards,\n isPlaying = _this$props.isPlaying,\n onPlay = _this$props.onPlay,\n onPause = _this$props.onPause,\n onScrubAhead = _this$props.onScrubAhead,\n onNextBubble = _this$props.onNextBubble,\n volume = _this$props.volume,\n onVolumeChanged = _this$props.onVolumeChanged,\n currentTime = _this$props.currentTime,\n runTime = _this$props.runTime,\n zoom = _this$props.zoom,\n zoomIn = _this$props.zoomIn,\n zoomOut = _this$props.zoomOut,\n resetZoom = _this$props.resetZoom;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"audio-transport-bar\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 106\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n container: true,\n direction: \"row\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 107\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 4,\n className: \"audio-transport-bar__actions\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 108\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_CurrentTimeIndicator_CurrentTimeIndicator__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n currentTime: currentTime,\n runtime: runTime,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 109\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onAddBubble,\n onClick: onAddBubble,\n style: {\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 110\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Split the current bubble at the current time\",\n \"aria-label\": \"Split the current bubble at the current time\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 120\n },\n __self: this\n }, _ref)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onAddMarker,\n onClick: onAddMarker,\n style: {\n marginLeft: 16,\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Add new marker at current time\",\n \"aria-label\": \"Add new marker at current time\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 138\n },\n __self: this\n }, _ref2)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onGroupBubble,\n onClick: onGroupBubble,\n style: {\n marginLeft: 16,\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 147\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Group bubbles together\",\n \"aria-label\": \"Group bubbles together\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }, _ref3)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onDeleteBubble,\n onClick: onDeleteBubble,\n style: {\n marginLeft: 16,\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 165\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Delete bubbles\",\n \"aria-label\": \"Delete bubbles\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 175\n },\n __self: this\n }, _ref4))), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 4,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 184\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"audio-transport-bar__buttons\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 185\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PreviousButton_PreviousButton__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: onPreviousBubble,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 186\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_SkipBackwardsButton_SkipBackwardsButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: onScrubBackwards,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 187\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PlayPauseButton_PlayPauseButton__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n isPlaying: isPlaying,\n onPlay: onPlay,\n onPause: onPause,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 188\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_SkipAheadButton_SkipAheadButton__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n onClick: onScrubAhead,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 193\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_NextButton_NextButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: onNextBubble,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 194\n },\n __self: this\n }))), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 2,\n className: \"audio-transport-bar__zoom\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 198\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_ZoomControls_ZoomControls__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n onZoomIn: this.props.zoomIn,\n onZoomOut: zoom > 1 ? this.props.zoomOut : null,\n onResetView: zoom !== 1 ? this.props.resetZoom : null,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 199\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 2,\n className: \"audio-transport-bar__volume\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 206\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_VolumeSliderCompact_VolumeSliderCompact__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n flipped: true,\n volume: volume,\n onVolumeChanged: onVolumeChanged,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 207\n },\n __self: this\n }))));\n }\n }]);\n\n return AudioTransportBar;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nAudioTransportBar.propTypes = {\n /** Boolean value for the current playing state */\n isPlaying: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n\n /** Handler for play button */\n onPlay: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for pause button */\n onPause: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for next button */\n onNextBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for previous button */\n onPreviousBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for scrubbing ahead button */\n onScrubAhead: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for scrubbing backwards button */\n onScrubBackwards: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Current time */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Runtime time */\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Add bubble handle splits the first selected bubble in the middle */\n onAddBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Creates a group if multiple items selected */\n onGroupBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Deletes the selected bubble */\n onDeleteBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioTransportBar);\n\n//# sourceURL=webpack:///./src/components/AudioTransportBar/AudioTransportBar.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _CurrentTimeIndicator_CurrentTimeIndicator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CurrentTimeIndicator/CurrentTimeIndicator */ \"./src/components/CurrentTimeIndicator/CurrentTimeIndicator.js\");\n/* harmony import */ var _NextButton_NextButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../NextButton/NextButton */ \"./src/components/NextButton/NextButton.js\");\n/* harmony import */ var _PreviousButton_PreviousButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../PreviousButton/PreviousButton */ \"./src/components/PreviousButton/PreviousButton.js\");\n/* harmony import */ var _SkipAheadButton_SkipAheadButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../SkipAheadButton/SkipAheadButton */ \"./src/components/SkipAheadButton/SkipAheadButton.js\");\n/* harmony import */ var _SkipBackwardsButton_SkipBackwardsButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../SkipBackwardsButton/SkipBackwardsButton */ \"./src/components/SkipBackwardsButton/SkipBackwardsButton.js\");\n/* harmony import */ var _PlayPauseButton_PlayPauseButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../PlayPauseButton/PlayPauseButton */ \"./src/components/PlayPauseButton/PlayPauseButton.js\");\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _ZoomControls_ZoomControls__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../ZoomControls/ZoomControls */ \"./src/components/ZoomControls/ZoomControls.js\");\n/* harmony import */ var _AudioTransportBar_scss__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./AudioTransportBar.scss */ \"./src/components/AudioTransportBar/AudioTransportBar.scss\");\n/* harmony import */ var _AudioTransportBar_scss__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_AudioTransportBar_scss__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _VolumeSliderCompact_VolumeSliderCompact__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../VolumeSliderCompact/VolumeSliderCompact */ \"./src/components/VolumeSliderCompact/VolumeSliderCompact.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @material-ui/icons/GroupWork */ \"./node_modules/@material-ui/icons/GroupWork.js\");\n/* harmony import */ var _material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @material-ui/icons/Delete */ \"./node_modules/@material-ui/icons/Delete.js\");\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @material-ui/icons/ArrowDropUp */ \"./node_modules/@material-ui/icons/ArrowDropUp.js\");\n/* harmony import */ var _material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @material-ui/icons/Add */ \"./node_modules/@material-ui/icons/Add.js\");\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/AudioTransportBar/AudioTransportBar.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_22___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 125\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_ArrowDropUp__WEBPACK_IMPORTED_MODULE_21___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 143\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_GroupWork__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 162\n },\n __self: undefined\n});\n\nvar _ref4 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_20___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 180\n },\n __self: undefined\n});\n\nvar AudioTransportBar =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(AudioTransportBar, _Component);\n\n function AudioTransportBar() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, AudioTransportBar);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(AudioTransportBar)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.keyboardListener = function (e) {\n if (e.target && ['INPUT', 'BUTTON', 'TEXTAREA'].indexOf(e.target.tagName) !== -1) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n //left\n return _this.props.onScrubBackwards();\n\n case 39:\n // right\n return _this.props.onScrubAhead();\n\n case 40: //down\n\n case 38: // top\n\n case 32:\n // space-bar\n return _this.props.isPlaying ? _this.props.onPause() : _this.props.onPlay();\n\n default:\n return;\n }\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(AudioTransportBar, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onAddBubble = _this$props.onAddBubble,\n onGroupBubble = _this$props.onGroupBubble,\n onDeleteBubble = _this$props.onDeleteBubble,\n onAddMarker = _this$props.onAddMarker,\n onPreviousBubble = _this$props.onPreviousBubble,\n onScrubBackwards = _this$props.onScrubBackwards,\n isPlaying = _this$props.isPlaying,\n onPlay = _this$props.onPlay,\n onPause = _this$props.onPause,\n onScrubAhead = _this$props.onScrubAhead,\n onNextBubble = _this$props.onNextBubble,\n volume = _this$props.volume,\n onVolumeChanged = _this$props.onVolumeChanged,\n currentTime = _this$props.currentTime,\n runTime = _this$props.runTime,\n zoom = _this$props.zoom,\n zoomIn = _this$props.zoomIn,\n zoomOut = _this$props.zoomOut,\n resetZoom = _this$props.resetZoom;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"audio-transport-bar\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 106\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n container: true,\n direction: \"row\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 107\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 4,\n className: \"audio-transport-bar__actions\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 108\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_CurrentTimeIndicator_CurrentTimeIndicator__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n currentTime: currentTime,\n runtime: runTime,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 109\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onAddBubble,\n onClick: onAddBubble,\n style: {\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 110\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Split the current bubble at the current time\",\n \"aria-label\": \"Split the current bubble at the current time\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 120\n },\n __self: this\n }, _ref)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onAddMarker,\n onClick: onAddMarker,\n style: {\n marginLeft: 16,\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Add new marker at current time\",\n \"aria-label\": \"Add new marker at current time\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 138\n },\n __self: this\n }, _ref2)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onGroupBubble,\n onClick: onGroupBubble,\n style: {\n marginLeft: 16,\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 147\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Group bubbles together\",\n \"aria-label\": \"Group bubbles together\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }, _ref3)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !onDeleteBubble,\n onClick: onDeleteBubble,\n style: {\n marginLeft: 16,\n padding: 4\n },\n size: \"small\",\n classes: {\n root: 'audio-transport-bar__button-text',\n label: 'audio-transport-bar__button-text'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 165\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_18___default.a, {\n classes: {\n tooltip: 'audio-transport-bar__tooltip'\n },\n title: \"Delete bubbles\",\n \"aria-label\": \"Delete bubbles\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 175\n },\n __self: this\n }, _ref4))), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 4,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 184\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"audio-transport-bar__buttons\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 185\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PreviousButton_PreviousButton__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: onPreviousBubble,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 186\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_SkipBackwardsButton_SkipBackwardsButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: onScrubBackwards,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 187\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PlayPauseButton_PlayPauseButton__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n isPlaying: isPlaying,\n onPlay: onPlay,\n onPause: onPause,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 188\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_SkipAheadButton_SkipAheadButton__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n onClick: onScrubAhead,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 193\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_NextButton_NextButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: onNextBubble,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 194\n },\n __self: this\n }))), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 2,\n className: \"audio-transport-bar__zoom\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 198\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_ZoomControls_ZoomControls__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n onZoomIn: this.props.zoomIn,\n onZoomOut: zoom > 1 ? this.props.zoomOut : null,\n onResetView: zoom !== 1 ? this.props.resetZoom : null,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 199\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_14___default.a, {\n item: true,\n xs: 2,\n className: \"audio-transport-bar__volume\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 206\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_VolumeSliderCompact_VolumeSliderCompact__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n flipped: true,\n volume: volume,\n onVolumeChanged: onVolumeChanged,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 207\n },\n __self: this\n }))));\n }\n }]);\n\n return AudioTransportBar;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nAudioTransportBar.propTypes = {\n /** Boolean value for the current playing state */\n isPlaying: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n\n /** Handler for play button */\n onPlay: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for pause button */\n onPause: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for next button */\n onNextBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for previous button */\n onPreviousBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for scrubbing ahead button */\n onScrubAhead: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Handler for scrubbing backwards button */\n onScrubBackwards: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n\n /** Current time */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Runtime time */\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Add bubble handle splits the first selected bubble in the middle */\n onAddBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Creates a group if multiple items selected */\n onGroupBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Deletes the selected bubble */\n onDeleteBubble: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (AudioTransportBar);\n\n//# sourceURL=webpack:///./src/components/AudioTransportBar/AudioTransportBar.js?");
/***/ }),
@@ -10274,7 +10286,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/AuthModal/AuthModal.js\";\n\n\n\n\n\n\n\n\nvar AuthModal = function AuthModal(_ref) {\n var header = _ref.header,\n description = _ref.description,\n onDismiss = _ref.onDismiss,\n _ref$dismissLabel = _ref.dismissLabel,\n dismissLabel = _ref$dismissLabel === void 0 ? 'cancel' : _ref$dismissLabel,\n onConfirm = _ref.onConfirm,\n confirmLabel = _ref.confirmLabel;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5___default.a, {\n open: true,\n \"aria-labelledby\": \"form-dialog-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 18\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, header), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 20\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: description\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 22\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 24\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1___default.a, {\n color: \"primary\",\n onClick: onDismiss,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 25\n },\n __self: this\n }, dismissLabel), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1___default.a, {\n color: \"primary\",\n variant: \"contained\",\n onClick: onConfirm,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 28\n },\n __self: this\n }, confirmLabel))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AuthModal);\n\n//# sourceURL=webpack:///./src/components/AuthModal/AuthModal.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/AuthModal/AuthModal.js\";\n\n\n\n\n\n\n\n\nvar AuthModal = function AuthModal(_ref) {\n var header = _ref.header,\n description = _ref.description,\n onDismiss = _ref.onDismiss,\n _ref$dismissLabel = _ref.dismissLabel,\n dismissLabel = _ref$dismissLabel === void 0 ? 'cancel' : _ref$dismissLabel,\n onConfirm = _ref.onConfirm,\n confirmLabel = _ref.confirmLabel;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_5___default.a, {\n open: true,\n \"aria-labelledby\": \"form-dialog-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 18\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_4___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, header), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 20\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_2___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n dangerouslySetInnerHTML: {\n __html: description\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 22\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 24\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1___default.a, {\n color: \"primary\",\n onClick: onDismiss,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 25\n },\n __self: this\n }, dismissLabel), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_1___default.a, {\n color: \"primary\",\n variant: \"contained\",\n onClick: onConfirm,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 28\n },\n __self: this\n }, confirmLabel))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (AuthModal);\n\n//# sourceURL=webpack:///./src/components/AuthModal/AuthModal.js?");
/***/ }),
@@ -10286,7 +10298,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _BubbleDisplay_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./BubbleDisplay.scss */ \"./src/components/BubbleDisplay/BubbleDisplay.scss\");\n/* harmony import */ var _BubbleDisplay_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_BubbleDisplay_scss__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants/range */ \"./src/constants/range.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/BubbleDisplay/BubbleDisplay.js\";\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default.a.block('bubble-display');\n\nvar BubbleDisplay =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(BubbleDisplay, _Component);\n\n function BubbleDisplay() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, BubbleDisplay);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(BubbleDisplay)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n mouseDown: false\n };\n\n _this.getDx = function (point, pts, projectionFactor) {\n var firstChild = pts.filter(function (pt) {\n return pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] === point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] && pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] < point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n }).sort(function (ptA, ptB) {\n return ptA[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] - ptB[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n })[0];\n var lastChild = pts.filter(function (pt) {\n return pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] === point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] && pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] < point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n }).sort(function (ptA, ptB) {\n return ptA[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] - ptB[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n })[0];\n var dXCandidate = Math.min(firstChild ? firstChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] - firstChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] : Number.MAX_SAFE_INTEGER, lastChild ? lastChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] - lastChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] : Number.MAX_SAFE_INTEGER);\n\n if (dXCandidate === Number.MAX_SAFE_INTEGER) {\n return null;\n } else {\n return dXCandidate / 1.5 * projectionFactor;\n }\n };\n\n _this.onMouseDown = function () {\n _this.setState({\n mouseDown: true\n });\n };\n\n _this.onMouseUp = function () {\n _this.setState({\n mouseDown: false\n });\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(BubbleDisplay, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n width = _this$props.width,\n height = _this$props.height,\n zoom = _this$props.zoom,\n x = _this$props.x,\n points = _this$props.points,\n children = _this$props.children,\n shape = _this$props.shape,\n bubbleHeight = _this$props.bubbleHeight,\n colourPalette = _this$props.colourPalette;\n var mouseDown = this.state.mouseDown;\n var realWidth = width * zoom;\n var computedWidth = Math.max(width, 1);\n var maxWidth = Math.max.apply(null, Object.values(points).map(function (point) {\n return point.endTime;\n }));\n var colours = colourPalette.colours;\n var projectionFactor = realWidth / maxWidth;\n var viewBox = [0, 0, computedWidth, height].join(' ');\n var bubbles = Object.values(points).map(function (point, idx, pts) {\n return {\n x: point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] * projectionFactor,\n width: (point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] - point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME]) * projectionFactor,\n colour: point.colour || colours[(point.depth - 1) % colours.length],\n height: point.depth * bubbleHeight,\n label: point.label,\n summary: point.summary,\n dX: _this2.getDx(point, pts, projectionFactor),\n point: point,\n isSelected: point.isSelected,\n labelColour: point.whiteText ? '#fff' : '#000',\n shape: shape\n };\n });\n var childrenWithProps = typeof children === 'function' ? children(bubbles) : react__WEBPACK_IMPORTED_MODULE_5___default.a.Children.map(children, function (child) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.cloneElement(child, {\n points: bubbles\n });\n });\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"svg\", {\n width: computedWidth,\n height: height,\n viewBox: viewBox,\n className: $style.modifiers({\n mouseDown: mouseDown\n }),\n xmlns: \"http://www.w3.org/2000/svg\",\n version: \"1.1\",\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 121\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"g\", {\n key: \"bubble_display_main\",\n transform: \"translate(\".concat(Math.round(-x), \",\").concat(height, \") scale(1, -1)\"),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 131\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"rect\", {\n className: \"bubble-display__rect\",\n width: computedWidth * zoom,\n height: height,\n onMouseDown: this.props.onPanStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 135\n },\n __self: this\n }), childrenWithProps));\n }\n }]);\n\n return BubbleDisplay;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nBubbleDisplay.propTypes = {\n /** Map of points @todo custom validator */\n points: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.object.isRequired,\n\n /** Width to display bubble UI */\n width: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Height to display bubble UI */\n height: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Current zoom */\n zoom: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** X offset of view box */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** Bubble style passed to single bubbles */\n shape: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Bubble height */\n bubbleHeight: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** on pan start trigger */\n onPanStart: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\nBubbleDisplay.defaultProps = {\n zoom: 1,\n x: 0,\n bubbleHeight: 70,\n onPanStart: function onPanStart() {}\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (BubbleDisplay);\n\n//# sourceURL=webpack:///./src/components/BubbleDisplay/BubbleDisplay.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _BubbleDisplay_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./BubbleDisplay.scss */ \"./src/components/BubbleDisplay/BubbleDisplay.scss\");\n/* harmony import */ var _BubbleDisplay_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_BubbleDisplay_scss__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants/range */ \"./src/constants/range.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/BubbleDisplay/BubbleDisplay.js\";\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default.a.block('bubble-display');\n\nvar BubbleDisplay =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(BubbleDisplay, _Component);\n\n function BubbleDisplay() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, BubbleDisplay);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(BubbleDisplay)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n mouseDown: false\n };\n\n _this.getDx = function (point, pts, projectionFactor) {\n var firstChild = pts.filter(function (pt) {\n return pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] === point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] && pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] < point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n }).sort(function (ptA, ptB) {\n return ptA[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] - ptB[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n })[0];\n var lastChild = pts.filter(function (pt) {\n return pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] === point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] && pt[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] < point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n }).sort(function (ptA, ptB) {\n return ptA[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH] - ptB[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].DEPTH];\n })[0];\n var dXCandidate = Math.min(firstChild ? firstChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] - firstChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] : Number.MAX_SAFE_INTEGER, lastChild ? lastChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] - lastChild[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] : Number.MAX_SAFE_INTEGER);\n\n if (dXCandidate === Number.MAX_SAFE_INTEGER) {\n return null;\n } else {\n return dXCandidate / 1.5 * projectionFactor;\n }\n };\n\n _this.onMouseDown = function () {\n _this.setState({\n mouseDown: true\n });\n };\n\n _this.onMouseUp = function () {\n _this.setState({\n mouseDown: false\n });\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(BubbleDisplay, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n width = _this$props.width,\n height = _this$props.height,\n zoom = _this$props.zoom,\n x = _this$props.x,\n points = _this$props.points,\n children = _this$props.children,\n shape = _this$props.shape,\n bubbleHeight = _this$props.bubbleHeight,\n colourPalette = _this$props.colourPalette;\n var mouseDown = this.state.mouseDown;\n var realWidth = width * zoom;\n var computedWidth = Math.max(width, 1);\n var maxWidth = Math.max.apply(null, Object.values(points).map(function (point) {\n return point.endTime;\n }));\n var colours = colourPalette.colours;\n var projectionFactor = realWidth / maxWidth;\n var viewBox = [0, 0, computedWidth, height].join(' ');\n var bubbles = Object.values(points).map(function (point, idx, pts) {\n return {\n x: point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME] * projectionFactor,\n width: (point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].END_TIME] - point[_constants_range__WEBPACK_IMPORTED_MODULE_9__[\"RANGE\"].START_TIME]) * projectionFactor,\n colour: point.colour || colours[(point.depth - 1) % colours.length],\n height: point.depth * bubbleHeight,\n label: point.label,\n summary: point.summary,\n dX: _this2.getDx(point, pts, projectionFactor),\n point: point,\n isSelected: point.isSelected,\n labelColour: point.whiteText ? '#fff' : '#000',\n shape: shape\n };\n });\n var childrenWithProps = typeof children === 'function' ? children(bubbles) : react__WEBPACK_IMPORTED_MODULE_5___default.a.Children.map(children, function (child) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.cloneElement(child, {\n points: bubbles\n });\n });\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"svg\", {\n width: computedWidth,\n height: height,\n viewBox: viewBox,\n className: $style.modifiers({\n mouseDown: mouseDown\n }),\n xmlns: \"http://www.w3.org/2000/svg\",\n version: \"1.1\",\n onMouseDown: this.onMouseDown,\n onMouseUp: this.onMouseUp,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 121\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"g\", {\n key: \"bubble_display_main\",\n transform: \"translate(\".concat(Math.round(-x), \",\").concat(height, \") scale(1, -1)\"),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 131\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"rect\", {\n className: \"bubble-display__rect\",\n width: computedWidth * zoom,\n height: height,\n onMouseDown: this.props.onPanStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 135\n },\n __self: this\n }), childrenWithProps));\n }\n }]);\n\n return BubbleDisplay;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nBubbleDisplay.propTypes = {\n /** Map of points @todo custom validator */\n points: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.object.isRequired,\n\n /** Width to display bubble UI */\n width: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Height to display bubble UI */\n height: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Current zoom */\n zoom: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** X offset of view box */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** Bubble style passed to single bubbles */\n shape: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Bubble height */\n bubbleHeight: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** on pan start trigger */\n onPanStart: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\nBubbleDisplay.defaultProps = {\n zoom: 1,\n x: 0,\n bubbleHeight: 70,\n onPanStart: function onPanStart() {}\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (BubbleDisplay);\n\n//# sourceURL=webpack:///./src/components/BubbleDisplay/BubbleDisplay.js?");
/***/ }),
@@ -10309,7 +10321,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-color */ \"./node_modules/react-color/lib/index.js\");\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_color__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/icons/KeyboardArrowDown */ \"./node_modules/@material-ui/icons/KeyboardArrowDown.js\");\n/* harmony import */ var _material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _ColourSwatchPicker_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ColourSwatchPicker.scss */ \"./src/components/ColourSwatchPicker/ColourSwatchPicker.scss\");\n/* harmony import */ var _ColourSwatchPicker_scss__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_ColourSwatchPicker_scss__WEBPACK_IMPORTED_MODULE_12__);\n\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/ColourSwatchPicker/ColourSwatchPicker.js\";\n\n\n\n\n\n\n\nvar hexToRgb = function hexToRgb(hex) {\n return hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, function (m, r, g, b) {\n return '#' + r + r + g + g + b + b;\n }).substring(1).match(/.{2}/g).map(function (x) {\n return parseInt(x, 16);\n });\n};\n\nvar rgbToOrgba = function rgbToOrgba(rgb) {\n return rgb.reduce(function (rgba, component, idx) {\n rgba[Object.keys(rgba)[idx]] = component;\n return rgba;\n }, {\n r: 255,\n g: 255,\n b: 255,\n a: 1\n });\n};\n\nvar orgbToHex = function orgbToHex(orgb) {\n var r = parseInt(orgb.r, 10).toString(16).padStart(2, '0');\n var g = parseInt(orgb.g, 10).toString(16).padStart(2, '0');\n var b = parseInt(orgb.b, 10).toString(16).padStart(2, '0');\n return \"#\".concat(r).concat(g).concat(b);\n};\n\nfunction orgbToRgb(colour) {\n return \"rgb(\".concat(colour[0], \",\").concat(colour[1], \",\").concat(colour[2], \")\");\n}\n\nfunction parseRgbString(currentColour) {\n var _currentColour$match = currentColour.match(/\\d+/g),\n _currentColour$match2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_currentColour$match, 3),\n r = _currentColour$match2[0],\n g = _currentColour$match2[1],\n b = _currentColour$match2[2];\n\n return {\n r: r,\n g: g,\n b: b,\n a: 1\n };\n}\n\nvar superGlobalCache = [];\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(_material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 196\n },\n __self: undefined\n});\n\nvar ColourSwatchPicker =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ColourSwatchPicker, _Component);\n\n function ColourSwatchPicker() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, ColourSwatchPicker);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(ColourSwatchPicker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n colour: {\n r: '241',\n g: '112',\n b: '19',\n a: '1'\n },\n displayColourPicker: false\n };\n\n _this.handleClick = function () {\n if (_this.state.displayColourPicker) {\n return _this.closePicker();\n }\n\n return _this.openPicker();\n };\n\n _this.handleChange = function (colour) {\n _this.setState({\n colour: colour\n });\n\n _this.props.onSelectColour(colour.hex);\n };\n\n _this.closeEvent = function (e) {\n var el = e.target;\n\n do {\n if (el.classList.contains('colour-swatch-picker')) return null;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1); // This doesn't need to force render as its used in the next render.\n\n\n if (_this.state.initialColour !== _this.props.currentColour && superGlobalCache.indexOf(orgbToHex(_this.state.colour)) === -1) {\n superGlobalCache.push(orgbToHex(_this.state.colour));\n\n if (superGlobalCache.length > 5) {\n superGlobalCache.shift();\n }\n }\n\n _this.closePicker();\n };\n\n _this.closePicker = function () {\n _this.setState({\n displayColourPicker: false\n });\n\n document.removeEventListener('click', _this.closeEvent);\n };\n\n _this.openPicker = function () {\n _this.setState({\n displayColourPicker: true\n });\n\n document.addEventListener('click', _this.closeEvent);\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ColourSwatchPicker, [{\n key: \"render\",\n value: function render() {\n var swatch = this.props.swatch;\n var _this$state = this.state,\n colour = _this$state.colour,\n displayColourPicker = _this$state.displayColourPicker;\n var popover = {\n position: 'absolute',\n zIndex: '2',\n transform: 'translate(0,-100%)',\n paddingBottom: '50px'\n };\n var cover = {\n position: 'fixed',\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px'\n };\n return react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n className: \"colour-swatch-picker\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 183\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10___default.a, {\n variant: \"outlined\",\n size: \"small\",\n color: \"primary\",\n onClick: this.handleClick,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 184\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n className: \"colour-swatch-picker__option\",\n style: {\n backgroundColor: orgbToHex(colour)\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 190\n },\n __self: this\n }), _ref), displayColourPicker ? react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n style: popover,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 199\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n style: cover,\n onClick: this.closePicker,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 200\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(react_color__WEBPACK_IMPORTED_MODULE_9__[\"SketchPicker\"], {\n disableAlpha: true,\n presetColors: [].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(swatch), superGlobalCache),\n color: colour,\n onChange: this.handleChange,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 201\n },\n __self: this\n })) : '');\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.currentColour && nextProps.currentColour.startsWith('#') && nextProps.currentColour !== orgbToHex(prevState.colour)) {\n return {\n colour: rgbToOrgba(hexToRgb(nextProps.currentColour)),\n initialColour: rgbToOrgba(hexToRgb(nextProps.currentColour))\n };\n }\n\n if (nextProps.currentColour && nextProps.currentColour.startsWith('rgb') && nextProps.currentColour.replace(/ /g, '') !== orgbToRgb(prevState.colour)) {\n return {\n colour: parseRgbString(nextProps.currentColour),\n initialColour: parseRgbString(nextProps.currentColour)\n };\n }\n\n return null;\n }\n }]);\n\n return ColourSwatchPicker;\n}(react__WEBPACK_IMPORTED_MODULE_7__[\"Component\"]);\n\nColourSwatchPicker.propTypes = {\n /** Array of colours to display as choices */\n swatch: prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.string.isRequired).isRequired,\n\n /** Current colour as chosen by user */\n currentColour: prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.string,\n\n /** Handler for when a colour is selected */\n onSelectColour: prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.func\n};\nColourSwatchPicker.defaultProps = {\n currentColour: null,\n swatch: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n onSelectColour: function onSelectColour() {}\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ColourSwatchPicker);\n\n//# sourceURL=webpack:///./src/components/ColourSwatchPicker/ColourSwatchPicker.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-color */ \"./node_modules/react-color/lib/index.js\");\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_color__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/icons/KeyboardArrowDown */ \"./node_modules/@material-ui/icons/KeyboardArrowDown.js\");\n/* harmony import */ var _material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _ColourSwatchPicker_scss__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ColourSwatchPicker.scss */ \"./src/components/ColourSwatchPicker/ColourSwatchPicker.scss\");\n/* harmony import */ var _ColourSwatchPicker_scss__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_ColourSwatchPicker_scss__WEBPACK_IMPORTED_MODULE_12__);\n\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/ColourSwatchPicker/ColourSwatchPicker.js\";\n\n\n\n\n\n\n\nvar hexToRgb = function hexToRgb(hex) {\n return hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, function (m, r, g, b) {\n return '#' + r + r + g + g + b + b;\n }).substring(1).match(/.{2}/g).map(function (x) {\n return parseInt(x, 16);\n });\n};\n\nvar rgbToOrgba = function rgbToOrgba(rgb) {\n return rgb.reduce(function (rgba, component, idx) {\n rgba[Object.keys(rgba)[idx]] = component;\n return rgba;\n }, {\n r: 255,\n g: 255,\n b: 255,\n a: 1\n });\n};\n\nvar orgbToHex = function orgbToHex(orgb) {\n var r = parseInt(orgb.r, 10).toString(16).padStart(2, '0');\n var g = parseInt(orgb.g, 10).toString(16).padStart(2, '0');\n var b = parseInt(orgb.b, 10).toString(16).padStart(2, '0');\n return \"#\".concat(r).concat(g).concat(b);\n};\n\nfunction orgbToRgb(colour) {\n return \"rgb(\".concat(colour[0], \",\").concat(colour[1], \",\").concat(colour[2], \")\");\n}\n\nfunction parseRgbString(currentColour) {\n var _currentColour$match = currentColour.match(/\\d+/g),\n _currentColour$match2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_currentColour$match, 3),\n r = _currentColour$match2[0],\n g = _currentColour$match2[1],\n b = _currentColour$match2[2];\n\n return {\n r: r,\n g: g,\n b: b,\n a: 1\n };\n}\n\nvar superGlobalCache = [];\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(_material_ui_icons_KeyboardArrowDown__WEBPACK_IMPORTED_MODULE_11___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 196\n },\n __self: undefined\n});\n\nvar ColourSwatchPicker =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ColourSwatchPicker, _Component);\n\n function ColourSwatchPicker() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, ColourSwatchPicker);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(ColourSwatchPicker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n colour: {\n r: '241',\n g: '112',\n b: '19',\n a: '1'\n },\n displayColourPicker: false\n };\n\n _this.handleClick = function () {\n if (_this.state.displayColourPicker) {\n return _this.closePicker();\n }\n\n return _this.openPicker();\n };\n\n _this.handleChange = function (colour) {\n _this.setState({\n colour: colour\n });\n\n _this.props.onSelectColour(colour.hex);\n };\n\n _this.closeEvent = function (e) {\n var el = e.target;\n\n do {\n if (el.classList.contains('colour-swatch-picker')) return null;\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1); // This doesn't need to force render as its used in the next render.\n\n\n if (_this.state.initialColour !== _this.props.currentColour && superGlobalCache.indexOf(orgbToHex(_this.state.colour)) === -1) {\n superGlobalCache.push(orgbToHex(_this.state.colour));\n\n if (superGlobalCache.length > 5) {\n superGlobalCache.shift();\n }\n }\n\n _this.closePicker();\n };\n\n _this.closePicker = function () {\n _this.setState({\n displayColourPicker: false\n });\n\n document.removeEventListener('click', _this.closeEvent);\n };\n\n _this.openPicker = function () {\n _this.setState({\n displayColourPicker: true\n });\n\n document.addEventListener('click', _this.closeEvent);\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ColourSwatchPicker, [{\n key: \"render\",\n value: function render() {\n var swatch = this.props.swatch;\n var _this$state = this.state,\n colour = _this$state.colour,\n displayColourPicker = _this$state.displayColourPicker;\n var popover = {\n position: 'absolute',\n zIndex: '2',\n transform: 'translate(0,-100%)',\n paddingBottom: '50px'\n };\n var cover = {\n position: 'fixed',\n top: '0px',\n right: '0px',\n bottom: '0px',\n left: '0px'\n };\n return react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n className: \"colour-swatch-picker\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 183\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_10___default.a, {\n variant: \"outlined\",\n size: \"small\",\n color: \"primary\",\n onClick: this.handleClick,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 184\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n className: \"colour-swatch-picker__option\",\n style: {\n backgroundColor: orgbToHex(colour)\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 190\n },\n __self: this\n }), _ref), displayColourPicker ? react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n style: popover,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 199\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(\"div\", {\n style: cover,\n onClick: this.closePicker,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 200\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_7___default.a.createElement(react_color__WEBPACK_IMPORTED_MODULE_9__[\"SketchPicker\"], {\n disableAlpha: true,\n presetColors: [].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(swatch), superGlobalCache),\n color: colour,\n onChange: this.handleChange,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 201\n },\n __self: this\n })) : '');\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.currentColour && nextProps.currentColour.startsWith('#') && nextProps.currentColour !== orgbToHex(prevState.colour)) {\n return {\n colour: rgbToOrgba(hexToRgb(nextProps.currentColour)),\n initialColour: rgbToOrgba(hexToRgb(nextProps.currentColour))\n };\n }\n\n if (nextProps.currentColour && nextProps.currentColour.startsWith('rgb') && nextProps.currentColour.replace(/ /g, '') !== orgbToRgb(prevState.colour)) {\n return {\n colour: parseRgbString(nextProps.currentColour),\n initialColour: parseRgbString(nextProps.currentColour)\n };\n }\n\n return null;\n }\n }]);\n\n return ColourSwatchPicker;\n}(react__WEBPACK_IMPORTED_MODULE_7__[\"Component\"]);\n\nColourSwatchPicker.propTypes = {\n /** Array of colours to display as choices */\n swatch: prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.string.isRequired).isRequired,\n\n /** Current colour as chosen by user */\n currentColour: prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.string,\n\n /** Handler for when a colour is selected */\n onSelectColour: prop_types__WEBPACK_IMPORTED_MODULE_8___default.a.func\n};\nColourSwatchPicker.defaultProps = {\n currentColour: null,\n swatch: ['#B80000', '#DB3E00', '#FCCB00', '#008B02', '#006B76', '#1273DE', '#004DCF', '#5300EB', '#EB9694', '#FAD0C3', '#FEF3BD', '#C1E1C5', '#BEDADC', '#C4DEF6', '#BED3F3', '#D4C4FB'],\n onSelectColour: function onSelectColour() {}\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ColourSwatchPicker);\n\n//# sourceURL=webpack:///./src/components/ColourSwatchPicker/ColourSwatchPicker.js?");
/***/ }),
@@ -10332,7 +10344,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _LoadingIndicator_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LoadingIndicator/LoadingIndicator */ \"./src/components/LoadingIndicator/LoadingIndicator.js\");\n/* harmony import */ var _ContentOverlay_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ContentOverlay.scss */ \"./src/components/ContentOverlay/ContentOverlay.scss\");\n/* harmony import */ var _ContentOverlay_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_ContentOverlay_scss__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_es_DialogActions_DialogActions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/es/DialogActions/DialogActions */ \"./node_modules/@material-ui/core/es/DialogActions/DialogActions.js\");\n/* harmony import */ var _material_ui_core_es_Button_Button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/es/Button/Button */ \"./node_modules/@material-ui/core/es/Button/Button.js\");\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/ContentOverlay/ContentOverlay.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 22\n },\n __self: undefined\n}, \"We are unable to play this content\");\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 32\n },\n __self: undefined\n}, \"Please refresh the page to try another resource.\");\n\nvar ContentOverlay = function ContentOverlay(props) {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false),\n _useState2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n dismissed = _useState2[0],\n setDismissed = _useState2[1];\n\n if (dismissed) return null;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"content-overlay\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, props.error.code ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7___default.a, {\n open: true,\n \"aria-labelledby\": \"form-dialog-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 23\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default.a, {\n style: {\n color: 'red',\n marginBottom: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 24\n },\n __self: this\n }, props.error.description), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 27\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"a\", {\n href: props.audioUrl,\n target: \"_blank\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 28\n },\n __self: this\n }, props.audioUrl)), _ref2), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_es_DialogActions_DialogActions__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 36\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_es_Button_Button__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n color: \"primary\",\n variant: \"outlined\",\n onClick: function onClick() {\n return setDismissed(true);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 37\n },\n __self: this\n }, \"Continue anyway\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_es_Button_Button__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n color: \"primary\",\n variant: \"contained\",\n onClick: function onClick() {\n return window.location.reload(true);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 44\n },\n __self: this\n }, \"Refresh page\"))) : !props.isLoaded ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_LoadingIndicator_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n loadingPercent: props.loadingPercent,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 54\n },\n __self: this\n }) : '');\n};\n\nContentOverlay.propTypes = {\n loadingPercent: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n error: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object,\n audioUrl: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n isLoaded: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n onContinue: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ContentOverlay);\n\n//# sourceURL=webpack:///./src/components/ContentOverlay/ContentOverlay.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _LoadingIndicator_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LoadingIndicator/LoadingIndicator */ \"./src/components/LoadingIndicator/LoadingIndicator.js\");\n/* harmony import */ var _ContentOverlay_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ContentOverlay.scss */ \"./src/components/ContentOverlay/ContentOverlay.scss\");\n/* harmony import */ var _ContentOverlay_scss__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_ContentOverlay_scss__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_es_DialogActions_DialogActions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/es/DialogActions/DialogActions */ \"./node_modules/@material-ui/core/es/DialogActions/DialogActions.js\");\n/* harmony import */ var _material_ui_core_es_Button_Button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/es/Button/Button */ \"./node_modules/@material-ui/core/es/Button/Button.js\");\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/ContentOverlay/ContentOverlay.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_8___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 22\n },\n __self: undefined\n}, \"We are unable to play this content\");\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 32\n },\n __self: undefined\n}, \"Please refresh the page to try another resource.\");\n\nvar ContentOverlay = function ContentOverlay(props) {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false),\n _useState2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n dismissed = _useState2[0],\n setDismissed = _useState2[1];\n\n if (dismissed) return null;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"content-overlay\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, props.error.code ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_7___default.a, {\n open: true,\n \"aria-labelledby\": \"form-dialog-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 23\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default.a, {\n style: {\n color: 'red',\n marginBottom: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 24\n },\n __self: this\n }, props.error.description), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 27\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"a\", {\n href: props.audioUrl,\n target: \"_blank\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 28\n },\n __self: this\n }, props.audioUrl)), _ref2), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_es_DialogActions_DialogActions__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 36\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_es_Button_Button__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n color: \"primary\",\n variant: \"outlined\",\n onClick: function onClick() {\n return setDismissed(true);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 37\n },\n __self: this\n }, \"Continue anyway\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_es_Button_Button__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n color: \"primary\",\n variant: \"contained\",\n onClick: function onClick() {\n return window.location.reload(true);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 44\n },\n __self: this\n }, \"Refresh page\"))) : !props.isLoaded ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_LoadingIndicator_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n loadingPercent: props.loadingPercent,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 54\n },\n __self: this\n }) : '');\n};\n\nContentOverlay.propTypes = {\n loadingPercent: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n error: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object,\n audioUrl: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n isLoaded: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n onContinue: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ContentOverlay);\n\n//# sourceURL=webpack:///./src/components/ContentOverlay/ContentOverlay.js?");
/***/ }),
@@ -10355,7 +10367,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/index.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(date_fns__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _CurrentTimeIndicator_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurrentTimeIndicator.scss */ \"./src/components/CurrentTimeIndicator/CurrentTimeIndicator.scss\");\n/* harmony import */ var _CurrentTimeIndicator_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_CurrentTimeIndicator_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/CurrentTimeIndicator/CurrentTimeIndicator.js\";\n\n\n\n\n\nvar style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_9___default.a.block('current-time-indicator');\n\nvar CurrentTimeIndicator =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(CurrentTimeIndicator, _Component);\n\n function CurrentTimeIndicator() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, CurrentTimeIndicator);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(CurrentTimeIndicator)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n currentFormattedTime: '00:00',\n currentFormattedRuntime: '00:00',\n error: ''\n };\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(CurrentTimeIndicator, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this.validateProps(this.props);\n this.updateTimeFormat(this.props.currentTime, this.props.runtime);\n this.updateRuntimeFormat(this.props.runtime);\n }\n }, {\n key: \"validateProps\",\n value: function validateProps(props) {\n if (props.currentTime > props.runtime) {\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(new Date('0'), 'HH:mm:ss')\n });\n }\n\n if (this.state.error) {\n return this.setState({\n error: null\n });\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps, nextContext) {\n this.validateProps(nextProps);\n\n if (nextProps.currentTime !== this.props.currentTime) {\n this.updateTimeFormat(nextProps.currentTime, nextProps.runtime);\n }\n\n if (nextProps.runtime !== this.props.runtime) {\n this.updateRuntimeFormat(nextProps.runtime);\n }\n }\n }, {\n key: \"updateRuntimeFormat\",\n value: function updateRuntimeFormat(runtime) {\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(runtime + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return this.setState({\n error: 'Invalid runtime'\n });\n }\n\n var timeFormat = runtime >= 3600000 ? 'HH:mm:ss' : 'mm:ss';\n this.setState({\n currentFormattedRuntime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(date, timeFormat)\n });\n }\n }, {\n key: \"updateTimeFormat\",\n value: function updateTimeFormat(time, runtime) {\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(time + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(new Date('0'), 'HH:mm:ss')\n });\n }\n\n if (runtime >= 3600000) {\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(date, 'HH:mm:ss')\n });\n }\n\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(date, 'mm:ss')\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var separator = this.props.separator;\n var _this$state = this.state,\n currentFormattedTime = _this$state.currentFormattedTime,\n currentFormattedRuntime = _this$state.currentFormattedRuntime;\n\n if (this.state.error) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.modifier('error'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 99\n },\n __self: this\n }, this.state.error);\n }\n\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 104\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.element('current-time'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 105\n },\n __self: this\n }, currentFormattedTime), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.element('separator'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 108\n },\n __self: this\n }, separator), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.element('runtime'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 109\n },\n __self: this\n }, currentFormattedRuntime));\n }\n }]);\n\n return CurrentTimeIndicator;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nCurrentTimeIndicator.propTypes = {\n /** Current time of the audio */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Full runtime of audio */\n runtime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Separator between times */\n separator: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string\n};\nCurrentTimeIndicator.defaultProps = {\n separator: ' / '\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (CurrentTimeIndicator);\n\n//# sourceURL=webpack:///./src/components/CurrentTimeIndicator/CurrentTimeIndicator.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! date-fns */ \"./node_modules/date-fns/index.js\");\n/* harmony import */ var date_fns__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(date_fns__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _CurrentTimeIndicator_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./CurrentTimeIndicator.scss */ \"./src/components/CurrentTimeIndicator/CurrentTimeIndicator.scss\");\n/* harmony import */ var _CurrentTimeIndicator_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_CurrentTimeIndicator_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_9__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/CurrentTimeIndicator/CurrentTimeIndicator.js\";\n\n\n\n\n\nvar style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_9___default.a.block('current-time-indicator');\n\nvar CurrentTimeIndicator =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(CurrentTimeIndicator, _Component);\n\n function CurrentTimeIndicator() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, CurrentTimeIndicator);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(CurrentTimeIndicator)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n currentFormattedTime: '00:00',\n currentFormattedRuntime: '00:00',\n error: ''\n };\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(CurrentTimeIndicator, [{\n key: \"componentWillMount\",\n value: function componentWillMount() {\n this.validateProps(this.props);\n this.updateTimeFormat(this.props.currentTime, this.props.runtime);\n this.updateRuntimeFormat(this.props.runtime);\n }\n }, {\n key: \"validateProps\",\n value: function validateProps(props) {\n if (props.currentTime > props.runtime) {\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(new Date('0'), 'HH:mm:ss')\n });\n }\n\n if (this.state.error) {\n return this.setState({\n error: null\n });\n }\n }\n }, {\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps, nextContext) {\n this.validateProps(nextProps);\n\n if (nextProps.currentTime !== this.props.currentTime) {\n this.updateTimeFormat(nextProps.currentTime, nextProps.runtime);\n }\n\n if (nextProps.runtime !== this.props.runtime) {\n this.updateRuntimeFormat(nextProps.runtime);\n }\n }\n }, {\n key: \"updateRuntimeFormat\",\n value: function updateRuntimeFormat(runtime) {\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(runtime + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return this.setState({\n error: 'Invalid runtime'\n });\n }\n\n var timeFormat = runtime >= 3600000 ? 'HH:mm:ss' : 'mm:ss';\n this.setState({\n currentFormattedRuntime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(date, timeFormat)\n });\n }\n }, {\n key: \"updateTimeFormat\",\n value: function updateTimeFormat(time, runtime) {\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(time + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(new Date('0'), 'HH:mm:ss')\n });\n }\n\n if (runtime >= 3600000) {\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(date, 'HH:mm:ss')\n });\n }\n\n return this.setState({\n currentFormattedTime: Object(date_fns__WEBPACK_IMPORTED_MODULE_7__[\"format\"])(date, 'mm:ss')\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var separator = this.props.separator;\n var _this$state = this.state,\n currentFormattedTime = _this$state.currentFormattedTime,\n currentFormattedRuntime = _this$state.currentFormattedRuntime;\n\n if (this.state.error) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.modifier('error'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 99\n },\n __self: this\n }, this.state.error);\n }\n\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 104\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.element('current-time'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 105\n },\n __self: this\n }, currentFormattedTime), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.element('separator'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 108\n },\n __self: this\n }, separator), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: style.element('runtime'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 109\n },\n __self: this\n }, currentFormattedRuntime));\n }\n }]);\n\n return CurrentTimeIndicator;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nCurrentTimeIndicator.propTypes = {\n /** Current time of the audio */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Full runtime of audio */\n runtime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Separator between times */\n separator: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string\n};\nCurrentTimeIndicator.defaultProps = {\n separator: ' / '\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (CurrentTimeIndicator);\n\n//# sourceURL=webpack:///./src/components/CurrentTimeIndicator/CurrentTimeIndicator.js?");
/***/ }),
@@ -10378,7 +10390,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _FileUpload_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./FileUpload.scss */ \"./src/components/FileUpload/FileUpload.scss\");\n/* harmony import */ var _FileUpload_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_FileUpload_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/FileUpload/FileUpload.js\";\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default.a.block('file-upload');\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 47\n },\n __self: undefined\n}, \"Loading...\");\n\nvar FileUpload =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(FileUpload, _Component);\n\n function FileUpload() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, FileUpload);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(FileUpload)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n json: null\n };\n _this.fileInput = react__WEBPACK_IMPORTED_MODULE_5___default.a.createRef();\n\n _this.onChange = function (e) {\n _this.setState({\n loading: true\n });\n\n var reader = new FileReader();\n reader.readAsText(e.target.files[0]);\n reader.addEventListener('load', function (ev) {\n try {\n var json = JSON.parse(reader.result.toString());\n\n if (_this.props.onChange) {\n _this.props.onChange(json);\n }\n\n _this.setState({\n json: json,\n loading: false\n });\n } catch (error) {\n _this.props.onChange({\n error: error\n });\n\n _this.setState({\n loading: false\n });\n }\n });\n };\n\n _this.resetForm = function () {\n _this.setState({\n json: null\n });\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(FileUpload, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state = this.state,\n json = _this$state.json,\n loading = _this$state.loading;\n\n if (loading) {\n return _ref;\n }\n\n if (json) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: $style,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 51\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: $style.element('label'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 52\n },\n __self: this\n }, json.label && json.label.en && json.label.en.join('') ? json.label.en.join(' ') : 'Untitled manifest', ' '), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: this.resetForm,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 57\n },\n __self: this\n }, \"Remove\"));\n }\n\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: $style,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n ref: function ref(_ref2) {\n return _this2.fileInput = _ref2;\n },\n type: \"file\",\n onChange: this.onChange,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }));\n }\n }]);\n\n return FileUpload;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nFileUpload.propTypes = {\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (FileUpload);\n\n//# sourceURL=webpack:///./src/components/FileUpload/FileUpload.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _FileUpload_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./FileUpload.scss */ \"./src/components/FileUpload/FileUpload.scss\");\n/* harmony import */ var _FileUpload_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_FileUpload_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/FileUpload/FileUpload.js\";\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default.a.block('file-upload');\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 47\n },\n __self: undefined\n}, \"Loading...\");\n\nvar FileUpload =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(FileUpload, _Component);\n\n function FileUpload() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, FileUpload);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(FileUpload)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n json: null\n };\n _this.fileInput = react__WEBPACK_IMPORTED_MODULE_5___default.a.createRef();\n\n _this.onChange = function (e) {\n _this.setState({\n loading: true\n });\n\n var reader = new FileReader();\n reader.readAsText(e.target.files[0]);\n reader.addEventListener('load', function (ev) {\n try {\n var json = JSON.parse(reader.result.toString());\n\n if (_this.props.onChange) {\n _this.props.onChange(json);\n }\n\n _this.setState({\n json: json,\n loading: false\n });\n } catch (error) {\n _this.props.onChange({\n error: error\n });\n\n _this.setState({\n loading: false\n });\n }\n });\n };\n\n _this.resetForm = function () {\n _this.setState({\n json: null\n });\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(FileUpload, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state = this.state,\n json = _this$state.json,\n loading = _this$state.loading;\n\n if (loading) {\n return _ref;\n }\n\n if (json) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: $style,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 51\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: $style.element('label'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 52\n },\n __self: this\n }, json.label && json.label.en && json.label.en.join('') ? json.label.en.join(' ') : 'Untitled manifest', ' '), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: this.resetForm,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 57\n },\n __self: this\n }, \"Remove\"));\n }\n\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: $style,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n ref: function ref(_ref2) {\n return _this2.fileInput = _ref2;\n },\n type: \"file\",\n onChange: this.onChange,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }));\n }\n }]);\n\n return FileUpload;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nFileUpload.propTypes = {\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (FileUpload);\n\n//# sourceURL=webpack:///./src/components/FileUpload/FileUpload.js?");
/***/ }),
@@ -10401,7 +10413,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Footer_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Footer.scss */ \"./src/components/Footer/Footer.scss\");\n/* harmony import */ var _Footer_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Footer_scss__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/Footer/Footer.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n xs: 6,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n}, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2___default.a, {\n variant: \"body1\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 9\n },\n __self: undefined\n}, \"\\xA9 Indiana University, 2018\"));\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2___default.a, {\n variant: \"body1\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 18\n },\n __self: undefined\n}, \"About Timeliner | Help | Contact\");\n\nvar Footer = function Footer() {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n className: \"footer\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n xs: 6,\n style: {\n textAlign: 'right'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, _ref2));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Footer);\n\n//# sourceURL=webpack:///./src/components/Footer/Footer.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _Footer_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Footer.scss */ \"./src/components/Footer/Footer.scss\");\n/* harmony import */ var _Footer_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_Footer_scss__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/Footer/Footer.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n xs: 6,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n}, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2___default.a, {\n variant: \"body1\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 9\n },\n __self: undefined\n}, \"\\xA9 Indiana University, 2018\"));\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_2___default.a, {\n variant: \"body1\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 18\n },\n __self: undefined\n}, \"About Timeliner | Help | Contact\");\n\nvar Footer = function Footer() {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n className: \"footer\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n xs: 6,\n style: {\n textAlign: 'right'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, _ref2));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Footer);\n\n//# sourceURL=webpack:///./src/components/Footer/Footer.js?");
/***/ }),
@@ -10424,7 +10436,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/CircularProgress */ \"./node_modules/@material-ui/core/CircularProgress/index.js\");\n/* harmony import */ var _material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _LoadingIndicator_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LoadingIndicator.scss */ \"./src/components/LoadingIndicator/LoadingIndicator.scss\");\n/* harmony import */ var _LoadingIndicator_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_LoadingIndicator_scss__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/LoadingIndicator/LoadingIndicator.js\";\n\n\n\n\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2___default.a, {\n value: typeof props.loadingPercent === 'number' ? props.loadingPercent : undefined,\n variant: \"indeterminate\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n });\n};\n\nLoadingIndicator.propTypes = {\n /** Optional progress between 0-100 */\n loadingPercent: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (LoadingIndicator);\n\n//# sourceURL=webpack:///./src/components/LoadingIndicator/LoadingIndicator.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/CircularProgress */ \"./node_modules/@material-ui/core/CircularProgress/index.js\");\n/* harmony import */ var _material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _LoadingIndicator_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./LoadingIndicator.scss */ \"./src/components/LoadingIndicator/LoadingIndicator.scss\");\n/* harmony import */ var _LoadingIndicator_scss__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_LoadingIndicator_scss__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/LoadingIndicator/LoadingIndicator.js\";\n\n\n\n\n\nvar LoadingIndicator = function LoadingIndicator(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_CircularProgress__WEBPACK_IMPORTED_MODULE_2___default.a, {\n value: typeof props.loadingPercent === 'number' ? props.loadingPercent : undefined,\n variant: \"indeterminate\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n });\n};\n\nLoadingIndicator.propTypes = {\n /** Optional progress between 0-100 */\n loadingPercent: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (LoadingIndicator);\n\n//# sourceURL=webpack:///./src/components/LoadingIndicator/LoadingIndicator.js?");
/***/ }),
@@ -10447,7 +10459,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MarkerMetadata; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Card */ \"./node_modules/@material-ui/core/Card/index.js\");\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/CardContent */ \"./node_modules/@material-ui/core/CardContent/index.js\");\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/icons/Delete */ \"./node_modules/@material-ui/icons/Delete.js\");\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/icons/ArrowForward */ \"./node_modules/@material-ui/icons/ArrowForward.js\");\n/* harmony import */ var _material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/format/index.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(date_fns_format__WEBPACK_IMPORTED_MODULE_14__);\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/MarkerMetadata/MarkerMetadata.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9___default.a, {\n fontSize: \"small\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 64\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10___default.a, {\n fontSize: \"small\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 74\n },\n __self: undefined\n});\n\nfunction DisplayMarker(props) {\n var _this = this;\n\n var onGoToMarker = props.onGoToMarker;\n var _props$marker = props.marker,\n label = _props$marker.label,\n summary = _props$marker.summary,\n time = _props$marker.time;\n\n var onDelete = function onDelete(e) {\n e.preventDefault();\n e.stopPropagation();\n props.onDelete();\n };\n\n var timeToLabel = function timeToLabel(timeOffset) {\n if (timeOffset < 0) {\n return _this.timeToLabel(0);\n }\n\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(timeOffset + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return 'Invalid time';\n }\n\n var format = timeOffset >= 3600000 ? 'hh:mm:ss.SS' : 'mm:ss.SS';\n return date_fns_format__WEBPACK_IMPORTED_MODULE_14___default()(date, format);\n };\n\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: props.onEdit,\n style: {\n cursor: 'pointer',\n padding: '8px 16px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 39\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n direction: \"row\",\n justify: \"space-between\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 43\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 49\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default.a, {\n inline: true,\n variant: \"h6\",\n component: \"h3\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 50\n },\n __self: this\n }, label || 'Unnamed marker'), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default.a, {\n inline: true,\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n paddingLeft: 8\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 53\n },\n __self: this\n }, \"(\", timeToLabel(time), \")\")), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8___default.a, {\n onClick: onDelete,\n style: {\n padding: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }, _ref), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8___default.a, {\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n onGoToMarker();\n },\n style: {\n padding: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }, _ref2))), summary && react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"subtitle1\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 80\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"span\", {\n style: {\n color: '#999'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 81\n },\n __self: this\n }, summary)));\n}\n\nfunction CustomTextField(props) {\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11___default.a, Object.assign({\n autoFocus: false,\n InputLabelProps: {\n shrink: true\n },\n fullWidth: true,\n margin: \"normal\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 90\n },\n __self: this\n }));\n}\n\nfunction EditMarker(props) {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useState\"])(function () {\n return {\n label: props.marker.label,\n summary: props.marker.summary\n };\n }),\n _useState2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_useState, 2),\n draft = _useState2[0],\n setDraft = _useState2[1];\n\n var onSave = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useCallback\"])(function () {\n return props.onSave(draft);\n }, [draft]);\n var handleKeyDown = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useCallback\"])(function (e) {\n if (e.target && e.target.tagName === 'TEXTAREA') {\n return;\n }\n\n if (e.keyCode === 13) {\n onSave();\n }\n\n if (e.keyCode === 27) {\n props.onCancel();\n }\n }, [draft, onSave]);\n\n var updateDraftField = function updateDraftField(name, type) {\n return function (event) {\n return setDraft(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, draft, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, type === 'checkbox' ? event.target.checked : event.target.value)));\n };\n };\n\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"form\", {\n style: {\n padding: 20\n },\n onKeyDown: handleKeyDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 132\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(CustomTextField, {\n id: \"label\",\n label: \"Label\",\n placeholder: \"Untitled marker\",\n value: draft.label,\n onChange: updateDraftField('label'),\n autoFocus: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 133\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(CustomTextField, {\n id: \"summary\",\n name: \"summary\",\n label: \"Description\",\n placeholder: \"Marker description\",\n multiline: true,\n value: draft.summary,\n onChange: updateDraftField('summary'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 141\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n spacing: 16,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 150\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flex: '1 1 0px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n onClick: props.onCancel,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 166\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !props.onSave,\n onClick: onSave,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 167\n },\n __self: this\n }, \"Save\"))));\n}\n\nfunction MarkerMetadata(props) {\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useState\"])(),\n _useState4 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_useState3, 2),\n isEditing = _useState4[0],\n setIsEditing = _useState4[1];\n\n var marker = props.marker,\n onSaveMarker = props.onSaveMarker,\n onDeleteMarker = props.onDeleteMarker,\n highlight = props.highlight,\n onGoToMarker = props.onGoToMarker;\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4___default.a, {\n style: {\n marginLeft: \"\".concat(props.inset * 24, \"px\"),\n marginBottom: 8,\n borderLeft: highlight ? '5px solid rgb(63, 81, 181, .5)' : '0px solid transparent',\n transition: 'border .3s'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 187\n },\n __self: this\n }, isEditing ? react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(EditMarker, {\n marker: marker,\n onSave: function onSave(draft) {\n onSaveMarker(draft);\n setIsEditing(false);\n },\n onCancel: function onCancel() {\n return setIsEditing(false);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 198\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(DisplayMarker, {\n marker: marker,\n onDelete: onDeleteMarker,\n onEdit: function onEdit() {\n return setIsEditing(true);\n },\n onGoToMarker: onGoToMarker,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 207\n },\n __self: this\n }));\n}\n\n//# sourceURL=webpack:///./src/components/MarkerMetadata/MarkerMetadata.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return MarkerMetadata; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Card */ \"./node_modules/@material-ui/core/Card/index.js\");\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/CardContent */ \"./node_modules/@material-ui/core/CardContent/index.js\");\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/icons/Delete */ \"./node_modules/@material-ui/icons/Delete.js\");\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/icons/ArrowForward */ \"./node_modules/@material-ui/icons/ArrowForward.js\");\n/* harmony import */ var _material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/format/index.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(date_fns_format__WEBPACK_IMPORTED_MODULE_14__);\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/MarkerMetadata/MarkerMetadata.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_9___default.a, {\n fontSize: \"small\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 64\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_icons_ArrowForward__WEBPACK_IMPORTED_MODULE_10___default.a, {\n fontSize: \"small\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 74\n },\n __self: undefined\n});\n\nfunction DisplayMarker(props) {\n var _this = this;\n\n var onGoToMarker = props.onGoToMarker;\n var _props$marker = props.marker,\n label = _props$marker.label,\n summary = _props$marker.summary,\n time = _props$marker.time;\n\n var onDelete = function onDelete(e) {\n e.preventDefault();\n e.stopPropagation();\n props.onDelete();\n };\n\n var timeToLabel = function timeToLabel(timeOffset) {\n if (timeOffset < 0) {\n return _this.timeToLabel(0);\n }\n\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(timeOffset + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return 'Invalid time';\n }\n\n var format = timeOffset >= 3600000 ? 'hh:mm:ss.SS' : 'mm:ss.SS';\n return date_fns_format__WEBPACK_IMPORTED_MODULE_14___default()(date, format);\n };\n\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: props.onEdit,\n style: {\n cursor: 'pointer',\n padding: '8px 16px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 39\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n direction: \"row\",\n justify: \"space-between\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 43\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 49\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default.a, {\n inline: true,\n variant: \"h6\",\n component: \"h3\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 50\n },\n __self: this\n }, label || 'Unnamed marker'), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default.a, {\n inline: true,\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n paddingLeft: 8\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 53\n },\n __self: this\n }, \"(\", timeToLabel(time), \")\")), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8___default.a, {\n onClick: onDelete,\n style: {\n padding: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }, _ref), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_8___default.a, {\n onClick: function onClick(e) {\n e.preventDefault();\n e.stopPropagation();\n onGoToMarker();\n },\n style: {\n padding: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }, _ref2))), summary && react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"subtitle1\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 80\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"span\", {\n style: {\n color: '#999'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 81\n },\n __self: this\n }, summary)));\n}\n\nfunction CustomTextField(props) {\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_11___default.a, Object.assign({\n autoFocus: false,\n InputLabelProps: {\n shrink: true\n },\n fullWidth: true,\n margin: \"normal\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 90\n },\n __self: this\n }));\n}\n\nfunction EditMarker(props) {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useState\"])(function () {\n return {\n label: props.marker.label,\n summary: props.marker.summary\n };\n }),\n _useState2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_useState, 2),\n draft = _useState2[0],\n setDraft = _useState2[1];\n\n var onSave = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useCallback\"])(function () {\n return props.onSave(draft);\n }, [draft]);\n var handleKeyDown = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useCallback\"])(function (e) {\n if (e.target && e.target.tagName === 'TEXTAREA') {\n return;\n }\n\n if (e.keyCode === 13) {\n onSave();\n }\n\n if (e.keyCode === 27) {\n props.onCancel();\n }\n }, [draft, onSave]);\n\n var updateDraftField = function updateDraftField(name, type) {\n return function (event) {\n return setDraft(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, draft, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, type === 'checkbox' ? event.target.checked : event.target.value)));\n };\n };\n\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(\"form\", {\n style: {\n padding: 20\n },\n onKeyDown: handleKeyDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 132\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(CustomTextField, {\n id: \"label\",\n label: \"Label\",\n placeholder: \"Untitled marker\",\n value: draft.label,\n onChange: updateDraftField('label'),\n autoFocus: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 133\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(CustomTextField, {\n id: \"summary\",\n name: \"summary\",\n label: \"Description\",\n placeholder: \"Marker description\",\n multiline: true,\n value: draft.summary,\n onChange: updateDraftField('summary'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 141\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n spacing: 16,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 150\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flex: '1 1 0px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n onClick: props.onCancel,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 166\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: !props.onSave,\n onClick: onSave,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 167\n },\n __self: this\n }, \"Save\"))));\n}\n\nfunction MarkerMetadata(props) {\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_3__[\"useState\"])(),\n _useState4 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_useState3, 2),\n isEditing = _useState4[0],\n setIsEditing = _useState4[1];\n\n var marker = props.marker,\n onSaveMarker = props.onSaveMarker,\n onDeleteMarker = props.onDeleteMarker,\n highlight = props.highlight,\n onGoToMarker = props.onGoToMarker;\n return react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_4___default.a, {\n style: {\n marginLeft: \"\".concat(props.inset * 24, \"px\"),\n marginBottom: 8,\n borderLeft: highlight ? '5px solid rgb(63, 81, 181, .5)' : '0px solid transparent',\n transition: 'border .3s'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 187\n },\n __self: this\n }, isEditing ? react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(EditMarker, {\n marker: marker,\n onSave: function onSave(draft) {\n onSaveMarker(draft);\n setIsEditing(false);\n },\n onCancel: function onCancel() {\n return setIsEditing(false);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 198\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(DisplayMarker, {\n marker: marker,\n onDelete: onDeleteMarker,\n onEdit: function onEdit() {\n return setIsEditing(true);\n },\n onGoToMarker: onGoToMarker,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 207\n },\n __self: this\n }));\n}\n\n//# sourceURL=webpack:///./src/components/MarkerMetadata/MarkerMetadata.js?");
/***/ }),
@@ -10459,7 +10471,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _MetadataDisplay_MetadataDisplay__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../MetadataDisplay/MetadataDisplay */ \"./src/components/MetadataDisplay/MetadataDisplay.js\");\n/* harmony import */ var _MetadataEditor_MetadataEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../MetadataEditor/MetadataEditor */ \"./src/components/MetadataEditor/MetadataEditor.js\");\n/* harmony import */ var _ProjectMetadataDisplay_ProjectMetadataDisplay__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ProjectMetadataDisplay/ProjectMetadataDisplay */ \"./src/components/ProjectMetadataDisplay/ProjectMetadataDisplay.js\");\n/* harmony import */ var _ProjectMetadataEditor_ProjectMetadataEditor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ProjectMetadataEditor/ProjectMetadataEditor */ \"./src/components/ProjectMetadataEditor/ProjectMetadataEditor.js\");\n/* harmony import */ var _Metadata_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Metadata.scss */ \"./src/components/Metadata/Metadata.scss\");\n/* harmony import */ var _Metadata_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Metadata_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _MarkerMetadata_MarkerMetadata__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../MarkerMetadata/MarkerMetadata */ \"./src/components/MarkerMetadata/MarkerMetadata.js\");\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/Metadata/Metadata.js\";\n\n\n\n\n\n\n\n\n\n\nvar fix = function fix(num) {\n return parseInt((num || 0).toFixed(0), 10);\n};\n\nfunction getCurrentRanges(currentTime, ranges) {\n return ranges.filter(function (range) {\n return fix(range.startTime) <= fix(currentTime) && fix(range.endTime) > fix(currentTime);\n }).sort(function (a, b) {\n return b.endTime - b.startTime - (a.endTime - a.startTime);\n });\n}\n\nvar getLastRange = function getLastRange(ranges) {\n return ranges[ranges.length - 1] || {\n startTime: -Infinity,\n endTime: Infinity\n };\n};\n\nvar getMinStartTime = function getMinStartTime(ranges) {\n return Math.min.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ranges.map(function (r) {\n return r.startTime;\n })));\n};\n\nvar getMaxEndTime = function getMaxEndTime(ranges) {\n return Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ranges.map(function (r) {\n return r.endTime;\n })));\n};\n\nvar getMarkers = function getMarkers(markers, min, max) {\n return Object.values(markers).filter(function (marker) {\n return marker.time >= min && marker.time < max;\n }).sort(function (a, b) {\n return a.time - b.time;\n });\n};\n\nvar Metadata = function Metadata(props) {\n var rangesToShow = getCurrentRanges(props.currentTime, props.ranges);\n var lastRange = getLastRange(rangesToShow); // This is a future prop that we can offer to show more markers.\n // Not active at the moment as it requires a new interface.\n // Current set of markers are passed to the last item in the range.\n\n var min = props.showAllParentMarkers ? getMinStartTime(rangesToShow) : lastRange.startTime;\n var max = props.showAllParentMarkers ? getMaxEndTime(rangesToShow) : lastRange.endTime;\n var markers = getMarkers(props.markers, min, max);\n\n var currentMarker = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(markers).sort(function (a, b) {\n return Math.abs(props.currentTime - b.time) - Math.abs(props.currentTime - a.time);\n }).pop();\n\n var colours = props.colourPalette.colours;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__annotations\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__annotations-content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 64\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, \"Annotations\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 72\n },\n __self: this\n }, rangesToShow.map(function (range, depth) {\n return range.id === props.rangeToEdit ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MetadataEditor_MetadataEditor__WEBPACK_IMPORTED_MODULE_5__[\"default\"], Object.assign({\n key: \"metadata_editor-\".concat(range.id)\n }, range, {\n colour: range.colour || colours[(range.depth - 1) % colours.length],\n onSave: props.onUpdateRange,\n onDelete: props.onDeleteRange,\n swatch: props.swatch,\n onCancel: function onCancel() {\n props.onEdit(null);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 75\n },\n __self: this\n })) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MetadataDisplay_MetadataDisplay__WEBPACK_IMPORTED_MODULE_4__[\"default\"], Object.assign({\n key: \"metadata_display-\".concat(range.id)\n }, range, {\n inset: depth,\n colour: range.colour || colours[(range.depth - 1) % colours.length],\n onEditClick: function (selectedRange) {\n return function () {\n return props.onEdit(selectedRange.id);\n };\n }(range),\n blackAndWhiteMode: props.blackAndWhiteMode,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 89\n },\n __self: this\n }));\n })), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 103\n },\n __self: this\n }, markers.map(function (marker) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MarkerMetadata_MarkerMetadata__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n inset: rangesToShow.length,\n key: marker.id,\n highlight: false,\n marker: marker,\n onDeleteMarker: function onDeleteMarker() {\n return props.deleteMarker(marker.id);\n },\n onSaveMarker: function onSaveMarker(data) {\n return props.updateMarker(marker.id, data);\n },\n onGoToMarker: function onGoToMarker() {\n return props.setCurrentTime(marker.time);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 106\n },\n __self: this\n });\n })))), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__project\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 120\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__project-content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 121\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 122\n },\n __self: this\n }, \"Timeline information\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 129\n },\n __self: this\n }, props.projectMetadataEditorOpen ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_ProjectMetadataEditor_ProjectMetadataEditor__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n manifestLabel: props.manifestLabel,\n manifestSummary: props.manifestSummary,\n onSave: props.onSaveProjectMetadata,\n onCancel: props.onCancelEditingProjectMetadata,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 131\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_ProjectMetadataDisplay_ProjectMetadataDisplay__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n manifestLabel: props.manifestLabel,\n manifestSummary: props.manifestSummary,\n homepage: props.homepage,\n homepageLabel: props.homepageLabel,\n noSourceLink: props.noSourceLink,\n onEditClick: props.onEditProjectMetadata,\n onSaveButtonClicked: props.onSaveButtonClicked,\n onEraseButtonClicked: props.onEraseButtonClicked,\n url: props.url,\n canSave: props.canSave,\n canErase: props.canErase,\n undoAll: props.undoAll,\n hasResource: props.hasResource,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 138\n },\n __self: this\n })))));\n};\n\nMetadata.propTypes = {\n /** Current label of the manifest or range */\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n\n /** Current summary of the manifest or range */\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n homepage: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n homepageLabel: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n noSourceLink: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n\n /** Total runtime of manifest */\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n\n /** Current time */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n\n /** Range to edit */\n rangeToEdit: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n\n /** Activates edit mode */\n onEdit: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** handles update range */\n onUpdateRange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Removes range */\n onDeleteRange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Cancels range edit */\n onCancelRangeEdit: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Array of Ranges */\n ranges: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n id: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n label: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n summary: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n startTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n endTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n depth: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n colour: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n }).isRequired).isRequired,\n\n /** Black and white mode */\n blackAndWhiteMode: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n projectMetadataEditorOpen: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n hasResource: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n canSave: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n canErase: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n showAllParentMarkers: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n onEditProjectMetadata: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onSaveProjectMetadata: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onSaveButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onEraseButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n deleteMarker: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Audio url */\n url: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n};\nMetadata.defaultProps = {\n blackAndWhiteMode: false,\n showAllParentMarkers: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Metadata);\n\n//# sourceURL=webpack:///./src/components/Metadata/Metadata.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _MetadataDisplay_MetadataDisplay__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../MetadataDisplay/MetadataDisplay */ \"./src/components/MetadataDisplay/MetadataDisplay.js\");\n/* harmony import */ var _MetadataEditor_MetadataEditor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../MetadataEditor/MetadataEditor */ \"./src/components/MetadataEditor/MetadataEditor.js\");\n/* harmony import */ var _ProjectMetadataDisplay_ProjectMetadataDisplay__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../ProjectMetadataDisplay/ProjectMetadataDisplay */ \"./src/components/ProjectMetadataDisplay/ProjectMetadataDisplay.js\");\n/* harmony import */ var _ProjectMetadataEditor_ProjectMetadataEditor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../ProjectMetadataEditor/ProjectMetadataEditor */ \"./src/components/ProjectMetadataEditor/ProjectMetadataEditor.js\");\n/* harmony import */ var _containers_Video_Video__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../containers/Video/Video */ \"./src/containers/Video/Video.js\");\n/* harmony import */ var _Metadata_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Metadata.scss */ \"./src/components/Metadata/Metadata.scss\");\n/* harmony import */ var _Metadata_scss__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_Metadata_scss__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _MarkerMetadata_MarkerMetadata__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../MarkerMetadata/MarkerMetadata */ \"./src/components/MarkerMetadata/MarkerMetadata.js\");\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/Metadata/Metadata.js\";\n\n\n\n\n\n\n\n\n\n\n\nvar fix = function fix(num) {\n return parseInt((num || 0).toFixed(0), 10);\n};\n\nfunction getCurrentRanges(currentTime, ranges) {\n return ranges.filter(function (range) {\n return fix(range.startTime) <= fix(currentTime) && fix(range.endTime) > fix(currentTime);\n }).sort(function (a, b) {\n return b.endTime - b.startTime - (a.endTime - a.startTime);\n });\n}\n\nvar getLastRange = function getLastRange(ranges) {\n return ranges[ranges.length - 1] || {\n startTime: -Infinity,\n endTime: Infinity\n };\n};\n\nvar getMinStartTime = function getMinStartTime(ranges) {\n return Math.min.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ranges.map(function (r) {\n return r.startTime;\n })));\n};\n\nvar getMaxEndTime = function getMaxEndTime(ranges) {\n return Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(ranges.map(function (r) {\n return r.endTime;\n })));\n};\n\nvar getMarkers = function getMarkers(markers, min, max) {\n return Object.values(markers).filter(function (marker) {\n return marker.time >= min && marker.time < max;\n }).sort(function (a, b) {\n return a.time - b.time;\n });\n};\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_containers_Video_Video__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 135\n },\n __self: undefined\n});\n\nvar Metadata = function Metadata(props) {\n var rangesToShow = getCurrentRanges(props.currentTime, props.ranges);\n var lastRange = getLastRange(rangesToShow); // This is a future prop that we can offer to show more markers.\n // Not active at the moment as it requires a new interface.\n // Current set of markers are passed to the last item in the range.\n\n var min = props.showAllParentMarkers ? getMinStartTime(rangesToShow) : lastRange.startTime;\n var max = props.showAllParentMarkers ? getMaxEndTime(rangesToShow) : lastRange.endTime;\n var markers = getMarkers(props.markers, min, max);\n\n var currentMarker = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(markers).sort(function (a, b) {\n return Math.abs(props.currentTime - b.time) - Math.abs(props.currentTime - a.time);\n }).pop();\n\n var colours = props.colourPalette.colours;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__annotations\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 64\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__annotations-content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }, \"Annotations\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 73\n },\n __self: this\n }, rangesToShow.map(function (range, depth) {\n return range.id === props.rangeToEdit ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MetadataEditor_MetadataEditor__WEBPACK_IMPORTED_MODULE_5__[\"default\"], Object.assign({\n key: \"metadata_editor-\".concat(range.id)\n }, range, {\n colour: range.colour || colours[(range.depth - 1) % colours.length],\n onSave: props.onUpdateRange,\n onDelete: props.onDeleteRange,\n swatch: props.swatch,\n onCancel: function onCancel() {\n props.onEdit(null);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 76\n },\n __self: this\n })) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MetadataDisplay_MetadataDisplay__WEBPACK_IMPORTED_MODULE_4__[\"default\"], Object.assign({\n key: \"metadata_display-\".concat(range.id)\n }, range, {\n inset: depth,\n colour: range.colour || colours[(range.depth - 1) % colours.length],\n onEditClick: function (selectedRange) {\n return function () {\n return props.onEdit(selectedRange.id);\n };\n }(range),\n blackAndWhiteMode: props.blackAndWhiteMode,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 90\n },\n __self: this\n }));\n })), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 104\n },\n __self: this\n }, markers.map(function (marker) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_MarkerMetadata_MarkerMetadata__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n inset: rangesToShow.length,\n key: marker.id,\n highlight: false,\n marker: marker,\n onDeleteMarker: function onDeleteMarker() {\n props.deleteMarker(marker.id);\n props.updateProjectStatus(false);\n },\n onSaveMarker: function onSaveMarker(data) {\n return props.updateMarker(marker.id, data);\n },\n onGoToMarker: function onGoToMarker() {\n return props.setCurrentTime(marker.time);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 107\n },\n __self: this\n });\n })))), props.isVideo && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__video-playback\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 126\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__video-playback-content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 127\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 128\n },\n __self: this\n }, \"Video Playback\"), _ref)), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__project\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 139\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__project-content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 140\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 141\n },\n __self: this\n }, \"Timeline information\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n className: \"metadata__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 148\n },\n __self: this\n }, props.projectMetadataEditorOpen ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_ProjectMetadataEditor_ProjectMetadataEditor__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n manifestLabel: props.manifestLabel,\n manifestSummary: props.manifestSummary,\n onSave: props.onSaveProjectMetadata,\n onCancel: props.onCancelEditingProjectMetadata,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 150\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_ProjectMetadataDisplay_ProjectMetadataDisplay__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n manifestLabel: props.manifestLabel,\n manifestSummary: props.manifestSummary,\n homepage: props.homepage,\n homepageLabel: props.homepageLabel,\n noSourceLink: props.noSourceLink,\n onEditClick: props.onEditProjectMetadata,\n onSaveButtonClicked: props.onSaveButtonClicked,\n onEraseButtonClicked: props.onEraseButtonClicked,\n url: props.url,\n canSave: props.canSave,\n canErase: props.canErase,\n undoAll: props.undoAll,\n hasResource: props.hasResource,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n })))));\n};\n\nMetadata.propTypes = {\n /** Current label of the manifest or range */\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n\n /** Current summary of the manifest or range */\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n homepage: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n homepageLabel: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n noSourceLink: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n\n /** Total runtime of manifest */\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n\n /** Current time */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n\n /** Range to edit */\n rangeToEdit: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n\n /** Activates edit mode */\n onEdit: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** handles update range */\n onUpdateRange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Removes range */\n onDeleteRange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Cancels range edit */\n onCancelRangeEdit: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Array of Ranges */\n ranges: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n id: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n label: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n summary: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n startTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n endTime: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n depth: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n colour: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n }).isRequired).isRequired,\n\n /** Black and white mode */\n blackAndWhiteMode: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n projectMetadataEditorOpen: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n hasResource: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n canSave: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n canErase: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n showAllParentMarkers: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n onEditProjectMetadata: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onSaveProjectMetadata: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onSaveButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n onEraseButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n deleteMarker: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n\n /** Media url */\n url: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n};\nMetadata.defaultProps = {\n blackAndWhiteMode: false,\n showAllParentMarkers: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Metadata);\n\n//# sourceURL=webpack:///./src/components/Metadata/Metadata.js?");
/***/ }),
@@ -10482,7 +10494,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Card */ \"./node_modules/@material-ui/core/Card/index.js\");\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/CardContent */ \"./node_modules/@material-ui/core/CardContent/index.js\");\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/icons/Edit */ \"./node_modules/@material-ui/icons/Edit.js\");\n/* harmony import */ var _material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/MetadataDisplay/MetadataDisplay.js\";\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7___default.a, {\n fontSize: \"small\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33\n },\n __self: undefined\n});\n\nvar MetadataDisplay = function MetadataDisplay(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default.a, {\n style: {\n borderLeft: \"4px solid \".concat(props.colour),\n marginLeft: \"\".concat(props.inset * 24, \"px\"),\n marginBottom: 8,\n filter: props.blackAndWhiteMode ? 'grayscale(1.0)' : ''\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default.a, {\n style: {\n padding: '8px 16px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n container: true,\n direction: \"row\",\n justify: \"space-between\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 20\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 26\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default.a, {\n variant: \"h6\",\n component: \"h3\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 27\n },\n __self: this\n }, props.label || 'Untitled section')), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 31\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: props.onEditClick,\n style: {\n padding: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 32\n },\n __self: this\n }, _ref))), props.summary && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default.a, {\n variant: \"subtitle1\",\n component: \"pre\",\n style: {\n whiteSpace: 'pre-line'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 38\n },\n __self: this\n }, props.summary)));\n};\n\nMetadataDisplay.propTypes = {\n /** Label of the manifest or range */\n label: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n\n /** Summary of the manifest or range */\n summary: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n\n /** Time (ms) when metadata should be displayed from */\n startTime: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number.isRequired,\n\n /** Time (ms) when metadata should be displayed until */\n endTime: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number.isRequired,\n\n /** On Edit Click handler */\n onEditClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Black and white mode */\n blackAndWhiteMode: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** how deep the element is in the hierarchy */\n inset: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number\n};\nMetadataDisplay.defaultProps = {\n label: '',\n summary: '',\n blackAndWhiteMode: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (MetadataDisplay);\n\n//# sourceURL=webpack:///./src/components/MetadataDisplay/MetadataDisplay.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Card */ \"./node_modules/@material-ui/core/Card/index.js\");\n/* harmony import */ var _material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/CardContent */ \"./node_modules/@material-ui/core/CardContent/index.js\");\n/* harmony import */ var _material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/icons/Edit */ \"./node_modules/@material-ui/icons/Edit.js\");\n/* harmony import */ var _material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/MetadataDisplay/MetadataDisplay.js\";\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Edit__WEBPACK_IMPORTED_MODULE_7___default.a, {\n fontSize: \"small\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33\n },\n __self: undefined\n});\n\nvar MetadataDisplay = function MetadataDisplay(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Card__WEBPACK_IMPORTED_MODULE_2___default.a, {\n style: {\n borderLeft: \"4px solid \".concat(props.colour),\n marginLeft: \"\".concat(props.inset * 24, \"px\"),\n marginBottom: 8,\n filter: props.blackAndWhiteMode ? 'grayscale(1.0)' : ''\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_CardContent__WEBPACK_IMPORTED_MODULE_3___default.a, {\n style: {\n padding: '8px 16px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n container: true,\n direction: \"row\",\n justify: \"space-between\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 20\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 26\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default.a, {\n variant: \"h6\",\n component: \"h3\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 27\n },\n __self: this\n }, props.label || 'Untitled section')), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 31\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: props.onEditClick,\n style: {\n padding: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 32\n },\n __self: this\n }, _ref))), props.summary && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_4___default.a, {\n variant: \"subtitle1\",\n component: \"pre\",\n style: {\n whiteSpace: 'pre-line'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 38\n },\n __self: this\n }, props.summary)));\n};\n\nMetadataDisplay.propTypes = {\n /** Label of the manifest or range */\n label: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n\n /** Summary of the manifest or range */\n summary: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired,\n\n /** Time (ms) when metadata should be displayed from */\n startTime: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number.isRequired,\n\n /** Time (ms) when metadata should be displayed until */\n endTime: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number.isRequired,\n\n /** On Edit Click handler */\n onEditClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Black and white mode */\n blackAndWhiteMode: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** how deep the element is in the hierarchy */\n inset: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number\n};\nMetadataDisplay.defaultProps = {\n label: '',\n summary: '',\n blackAndWhiteMode: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (MetadataDisplay);\n\n//# sourceURL=webpack:///./src/components/MetadataDisplay/MetadataDisplay.js?");
/***/ }),
@@ -10494,7 +10506,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/InputLabel */ \"./node_modules/@material-ui/core/InputLabel/index.js\");\n/* harmony import */ var _material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/FormControlLabel */ \"./node_modules/@material-ui/core/FormControlLabel/index.js\");\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/Checkbox */ \"./node_modules/@material-ui/core/Checkbox/index.js\");\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n/* harmony import */ var _ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../ColourSwatchPicker/ColourSwatchPicker */ \"./src/components/ColourSwatchPicker/ColourSwatchPicker.js\");\n/* harmony import */ var _TimePicker_TimePicker__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../TimePicker/TimePicker */ \"./src/components/TimePicker/TimePicker.js\");\n/* harmony import */ var _MetadataEditor_scss__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./MetadataEditor.scss */ \"./src/components/MetadataEditor/MetadataEditor.scss\");\n/* harmony import */ var _MetadataEditor_scss__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_MetadataEditor_scss__WEBPACK_IMPORTED_MODULE_19__);\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/MetadataEditor/MetadataEditor.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar metadataEditor = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_15___default.a.block('metadata-editor');\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11___default.a, {\n htmlFor: \"startTime\",\n shrink: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 154\n },\n __self: undefined\n}, \"Start Time\");\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11___default.a, {\n htmlFor: \"endTime\",\n shrink: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 165\n },\n __self: undefined\n}, \"End Time\");\n\nvar MetadataEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(MetadataEditor, _Component);\n\n function MetadataEditor(props) {\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, MetadataEditor);\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(MetadataEditor).call(this, props));\n\n _this.handleChange = function (name, type) {\n return function (event) {\n _this.setState(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, type === 'checkbox' ? event.target.checked : event.target.value));\n };\n };\n\n _this.handleTimePickerChange = function (name) {\n return function (value) {\n _this.setState(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, value));\n };\n };\n\n _this.onSelectColour = function (colour) {\n _this.setState({\n colour: colour\n });\n };\n\n _this.onSave = function () {\n var _this$state = _this.state,\n colour = _this$state.colour,\n label = _this$state.label,\n summary = _this$state.summary,\n whiteText = _this$state.whiteText;\n var state = _this.state;\n var newValues = {\n label: label,\n summary: summary,\n whiteText: whiteText\n };\n var startTime = state.startTime;\n var endTime = state.endTime;\n\n if (startTime !== _this.props.startTime) {\n newValues.startTime = startTime;\n }\n\n if (endTime !== _this.props.endTime) {\n newValues.endTime = endTime;\n }\n\n newValues.colour = colour || _this.props.colour;\n\n _this.props.onSave(_this.props.id, newValues);\n };\n\n _this.handleKeyDown = function (e) {\n if (e.target && e.target.tagName === 'TEXTAREA') {\n return;\n }\n\n if (e.keyCode === 13) {\n _this.onSave();\n }\n\n if (e.keyCode === 27) {\n _this.props.onCancel();\n }\n };\n\n var _label = props.label,\n _summary = props.summary,\n _startTime = props.startTime,\n _endTime = props.endTime,\n _whiteText = props.whiteText;\n _this.state = {\n label: _label,\n summary: _summary,\n startTime: _startTime,\n endTime: _endTime,\n whiteText: _whiteText\n };\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(MetadataEditor, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n swatch = _this$props.swatch,\n onCancel = _this$props.onCancel;\n var _this$state2 = this.state,\n label = _this$state2.label,\n summary = _this$state2.summary,\n colour = _this$state2.colour,\n startTime = _this$state2.startTime,\n endTime = _this$state2.endTime,\n whiteText = _this$state2.whiteText;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"form\", {\n className: metadataEditor,\n onKeyDown: this.handleKeyDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 117\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"label\",\n autoFocus: true,\n label: \"Label\",\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Untitled section\",\n fullWidth: true,\n margin: \"normal\",\n value: label,\n onChange: this.handleChange('label'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 118\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"summary\",\n name: \"summary\",\n label: \"Description\",\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Section description\",\n fullWidth: true,\n multiline: true,\n margin: \"normal\",\n value: summary,\n onChange: this.handleChange('summary'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 131\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n container: true,\n spacing: 16,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 145\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 152\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 153\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimePicker_TimePicker__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n value: startTime,\n onChange: this.handleTimePickerChange('startTime'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }))), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 163\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 164\n },\n __self: this\n }, _ref2, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimePicker_TimePicker__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n value: endTime,\n onChange: this.handleTimePickerChange('endTime'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 168\n },\n __self: this\n }))), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 174\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n swatch: swatch,\n label: \"Color\",\n currentColour: colour || this.props.colour,\n onSelectColour: this.onSelectColour,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 175\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 182\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14___default.a, {\n checked: whiteText,\n onChange: this.handleChange('whiteText', 'checkbox'),\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 185\n },\n __self: this\n }),\n label: \"White label color\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 183\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flex: '1 1 0px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 194\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default.a, {\n onClick: onCancel,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 203\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n disabled: !this.props.onSave,\n onClick: this.onSave,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 204\n },\n __self: this\n }, \"Save\"))));\n }\n }]);\n\n return MetadataEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nMetadataEditor.propTypes = {\n /** Current label of the manifest or range */\n label: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Current summary of the manifest or range */\n summary: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Selected theme colour */\n colour: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Call back when save button is clicked, gets passed an object with label and summary */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Call back when delete button is clicked, gets passed an object with label and summary */\n onDelete: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** on Cancel annotation edit */\n onCancel: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Is new */\n isNew: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool.isRequired,\n\n /** White label text */\n whiteText: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool\n};\nMetadataEditor.defaultProps = {\n isNew: true,\n label: '',\n summary: '',\n colour: 0,\n whiteText: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (MetadataEditor);\n\n//# sourceURL=webpack:///./src/components/MetadataEditor/MetadataEditor.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/InputLabel */ \"./node_modules/@material-ui/core/InputLabel/index.js\");\n/* harmony import */ var _material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/FormControlLabel */ \"./node_modules/@material-ui/core/FormControlLabel/index.js\");\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/Checkbox */ \"./node_modules/@material-ui/core/Checkbox/index.js\");\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n/* harmony import */ var _ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../ColourSwatchPicker/ColourSwatchPicker */ \"./src/components/ColourSwatchPicker/ColourSwatchPicker.js\");\n/* harmony import */ var _TimePicker_TimePicker__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../TimePicker/TimePicker */ \"./src/components/TimePicker/TimePicker.js\");\n/* harmony import */ var _MetadataEditor_scss__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./MetadataEditor.scss */ \"./src/components/MetadataEditor/MetadataEditor.scss\");\n/* harmony import */ var _MetadataEditor_scss__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_MetadataEditor_scss__WEBPACK_IMPORTED_MODULE_19__);\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/MetadataEditor/MetadataEditor.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar metadataEditor = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_15___default.a.block('metadata-editor');\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11___default.a, {\n htmlFor: \"startTime\",\n shrink: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 154\n },\n __self: undefined\n}, \"Start Time\");\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_InputLabel__WEBPACK_IMPORTED_MODULE_11___default.a, {\n htmlFor: \"endTime\",\n shrink: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 165\n },\n __self: undefined\n}, \"End Time\");\n\nvar MetadataEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(MetadataEditor, _Component);\n\n function MetadataEditor(props) {\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, MetadataEditor);\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(MetadataEditor).call(this, props));\n\n _this.handleChange = function (name, type) {\n return function (event) {\n _this.setState(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, type === 'checkbox' ? event.target.checked : event.target.value));\n };\n };\n\n _this.handleTimePickerChange = function (name) {\n return function (value) {\n _this.setState(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, value));\n };\n };\n\n _this.onSelectColour = function (colour) {\n _this.setState({\n colour: colour\n });\n };\n\n _this.onSave = function () {\n var _this$state = _this.state,\n colour = _this$state.colour,\n label = _this$state.label,\n summary = _this$state.summary,\n whiteText = _this$state.whiteText;\n var state = _this.state;\n var newValues = {\n label: label,\n summary: summary,\n whiteText: whiteText\n };\n var startTime = state.startTime;\n var endTime = state.endTime;\n\n if (startTime !== _this.props.startTime) {\n newValues.startTime = startTime;\n }\n\n if (endTime !== _this.props.endTime) {\n newValues.endTime = endTime;\n }\n\n newValues.colour = colour || _this.props.colour;\n\n _this.props.onSave(_this.props.id, newValues);\n };\n\n _this.handleKeyDown = function (e) {\n if (e.target && e.target.tagName === 'TEXTAREA') {\n return;\n }\n\n if (e.keyCode === 13) {\n _this.onSave();\n }\n\n if (e.keyCode === 27) {\n _this.props.onCancel();\n }\n };\n\n var _label = props.label,\n _summary = props.summary,\n _startTime = props.startTime,\n _endTime = props.endTime,\n _whiteText = props.whiteText;\n _this.state = {\n label: _label,\n summary: _summary,\n startTime: _startTime,\n endTime: _endTime,\n whiteText: _whiteText\n };\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(MetadataEditor, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n swatch = _this$props.swatch,\n onCancel = _this$props.onCancel;\n var _this$state2 = this.state,\n label = _this$state2.label,\n summary = _this$state2.summary,\n colour = _this$state2.colour,\n startTime = _this$state2.startTime,\n endTime = _this$state2.endTime,\n whiteText = _this$state2.whiteText;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"form\", {\n className: metadataEditor,\n onKeyDown: this.handleKeyDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 117\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"label\",\n autoFocus: true,\n label: \"Label\",\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Untitled section\",\n fullWidth: true,\n margin: \"normal\",\n value: label,\n onChange: this.handleChange('label'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 118\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"summary\",\n name: \"summary\",\n label: \"Description\",\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Section description\",\n fullWidth: true,\n multiline: true,\n margin: \"normal\",\n value: summary,\n onChange: this.handleChange('summary'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 131\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n container: true,\n spacing: 16,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 145\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 152\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 153\n },\n __self: this\n }, _ref, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimePicker_TimePicker__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n value: startTime,\n onChange: this.handleTimePickerChange('startTime'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }))), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 163\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_12___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 164\n },\n __self: this\n }, _ref2, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimePicker_TimePicker__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n value: endTime,\n onChange: this.handleTimePickerChange('endTime'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 168\n },\n __self: this\n }))), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 174\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n swatch: swatch,\n label: \"Color\",\n currentColour: colour || this.props.colour,\n onSelectColour: this.onSelectColour,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 175\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 182\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_13___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_14___default.a, {\n checked: whiteText,\n onChange: this.handleChange('whiteText', 'checkbox'),\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 185\n },\n __self: this\n }),\n label: \"White label color\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 183\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flex: '1 1 0px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 194\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default.a, {\n onClick: onCancel,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 203\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n disabled: !this.props.onSave,\n onClick: this.onSave,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 204\n },\n __self: this\n }, \"Save\"))));\n }\n }]);\n\n return MetadataEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nMetadataEditor.propTypes = {\n /** Current label of the manifest or range */\n label: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Current summary of the manifest or range */\n summary: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Selected theme colour */\n colour: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Call back when save button is clicked, gets passed an object with label and summary */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Call back when delete button is clicked, gets passed an object with label and summary */\n onDelete: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** on Cancel annotation edit */\n onCancel: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Is new */\n isNew: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool.isRequired,\n\n /** White label text */\n whiteText: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool\n};\nMetadataEditor.defaultProps = {\n isNew: true,\n label: '',\n summary: '',\n colour: 0,\n whiteText: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (MetadataEditor);\n\n//# sourceURL=webpack:///./src/components/MetadataEditor/MetadataEditor.js?");
/***/ }),
@@ -10517,7 +10529,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/SkipNext */ \"./node_modules/@material-ui/icons/SkipNext.js\");\n/* harmony import */ var _material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/NextButton/NextButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar NextButton = function NextButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Next Bubble\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nNextButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nNextButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (NextButton);\n\n//# sourceURL=webpack:///./src/components/NextButton/NextButton.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/SkipNext */ \"./node_modules/@material-ui/icons/SkipNext.js\");\n/* harmony import */ var _material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/NextButton/NextButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_SkipNext__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar NextButton = function NextButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Next Bubble\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nNextButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nNextButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (NextButton);\n\n//# sourceURL=webpack:///./src/components/NextButton/NextButton.js?");
/***/ }),
@@ -10529,7 +10541,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/PlayCircleOutline */ \"./node_modules/@material-ui/icons/PlayCircleOutline.js\");\n/* harmony import */ var _material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/PauseCircleOutline */ \"./node_modules/@material-ui/icons/PauseCircleOutline.js\");\n/* harmony import */ var _material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/PlayPauseButton/PlayPauseButton.js\";\n\n\n\n\n\nvar PLAY_PAUSE_BUTTON_SIZE = {\n width: 48,\n height: 48\n};\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3___default.a, {\n style: PLAY_PAUSE_BUTTON_SIZE,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 28\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2___default.a, {\n style: PLAY_PAUSE_BUTTON_SIZE,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 30\n },\n __self: undefined\n});\n\nvar PlayPauseButton = function PlayPauseButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: props.isPlaying ? 'Pause' : 'Play',\n onClick: function onClick() {\n if (props.isPlaying) {\n props.onPause();\n } else {\n props.onPlay();\n }\n },\n style: {\n border: '2px solid black'\n },\n disabled: props.disabled,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 13\n },\n __self: this\n }, props.isPlaying ? _ref : _ref2);\n};\n\nPlayPauseButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when play button is clicked */\n onPlay: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n\n /** Handler for when pause button is clicked */\n onPause: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n\n /** Is playing? */\n isPlaying: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n};\nPlayPauseButton.defaultProps = {\n disabled: false,\n isPlaying: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PlayPauseButton);\n\n//# sourceURL=webpack:///./src/components/PlayPauseButton/PlayPauseButton.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/PlayCircleOutline */ \"./node_modules/@material-ui/icons/PlayCircleOutline.js\");\n/* harmony import */ var _material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/PauseCircleOutline */ \"./node_modules/@material-ui/icons/PauseCircleOutline.js\");\n/* harmony import */ var _material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/PlayPauseButton/PlayPauseButton.js\";\n\n\n\n\n\nvar PLAY_PAUSE_BUTTON_SIZE = {\n width: 48,\n height: 48\n};\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_PauseCircleOutline__WEBPACK_IMPORTED_MODULE_3___default.a, {\n style: PLAY_PAUSE_BUTTON_SIZE,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 28\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_PlayCircleOutline__WEBPACK_IMPORTED_MODULE_2___default.a, {\n style: PLAY_PAUSE_BUTTON_SIZE,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 30\n },\n __self: undefined\n});\n\nvar PlayPauseButton = function PlayPauseButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n title: props.isPlaying ? 'Pause' : 'Play',\n onClick: function onClick() {\n if (props.isPlaying) {\n props.onPause();\n } else {\n props.onPlay();\n }\n },\n style: {\n border: '2px solid black'\n },\n disabled: props.disabled,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 13\n },\n __self: this\n }, props.isPlaying ? _ref : _ref2);\n};\n\nPlayPauseButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when play button is clicked */\n onPlay: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n\n /** Handler for when pause button is clicked */\n onPause: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n\n /** Is playing? */\n isPlaying: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n};\nPlayPauseButton.defaultProps = {\n disabled: false,\n isPlaying: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PlayPauseButton);\n\n//# sourceURL=webpack:///./src/components/PlayPauseButton/PlayPauseButton.js?");
/***/ }),
@@ -10541,7 +10553,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Playhead_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Playhead.scss */ \"./src/components/Playhead/Playhead.scss\");\n/* harmony import */ var _Playhead_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Playhead_scss__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/Playhead/Playhead.js\";\n\n\n\n\n\nvar Playhead =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Playhead, _Component);\n\n function Playhead() {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Playhead);\n\n return Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Playhead).apply(this, arguments));\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Playhead, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n theme = _this$props.theme;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"playhead\",\n style: {\n width: \"\".concat(x, \"%\")\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 16\n },\n __self: this\n });\n }\n }]);\n\n return Playhead;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nPlayhead.propTypes = {\n /** percentage position of the playhead */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"withTheme\"])()(Playhead));\n\n//# sourceURL=webpack:///./src/components/Playhead/Playhead.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _Playhead_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Playhead.scss */ \"./src/components/Playhead/Playhead.scss\");\n/* harmony import */ var _Playhead_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Playhead_scss__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/Playhead/Playhead.js\";\n\n\n\n\n\nvar Playhead =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Playhead, _Component);\n\n function Playhead() {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Playhead);\n\n return Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Playhead).apply(this, arguments));\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Playhead, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n theme = _this$props.theme;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"playhead\",\n style: {\n width: \"\".concat(x, \"%\")\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 16\n },\n __self: this\n });\n }\n }]);\n\n return Playhead;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nPlayhead.propTypes = {\n /** percentage position of the playhead */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"withTheme\"])()(Playhead));\n\n//# sourceURL=webpack:///./src/components/Playhead/Playhead.js?");
/***/ }),
@@ -10564,7 +10576,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/SkipPrevious */ \"./node_modules/@material-ui/icons/SkipPrevious.js\");\n/* harmony import */ var _material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/PreviousButton/PreviousButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar PreviousButton = function PreviousButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Previous Bubble\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nPreviousButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nPreviousButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PreviousButton);\n\n//# sourceURL=webpack:///./src/components/PreviousButton/PreviousButton.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/SkipPrevious */ \"./node_modules/@material-ui/icons/SkipPrevious.js\");\n/* harmony import */ var _material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/PreviousButton/PreviousButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_SkipPrevious__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar PreviousButton = function PreviousButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Previous Bubble\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nPreviousButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nPreviousButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PreviousButton);\n\n//# sourceURL=webpack:///./src/components/PreviousButton/PreviousButton.js?");
/***/ }),
@@ -10576,7 +10588,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__);\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/PrimaryButton/PrimaryButton.js\";\n\n\n\n\nvar PrimaryButton = function PrimaryButton(props) {\n var children = props.children,\n buttonProps = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, [\"children\"]);\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default.a, Object.assign({\n variant: \"contained\",\n color: \"primary\"\n }, buttonProps, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: this\n }), children);\n};\n\nPrimaryButton.propTypes = {\n /** Content of the button */\n children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PrimaryButton);\n\n//# sourceURL=webpack:///./src/components/PrimaryButton/PrimaryButton.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__);\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/PrimaryButton/PrimaryButton.js\";\n\n\n\n\nvar PrimaryButton = function PrimaryButton(props) {\n var children = props.children,\n buttonProps = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, [\"children\"]);\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default.a, Object.assign({\n variant: \"contained\",\n color: \"primary\"\n }, buttonProps, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: this\n }), children);\n};\n\nPrimaryButton.propTypes = {\n /** Content of the button */\n children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (PrimaryButton);\n\n//# sourceURL=webpack:///./src/components/PrimaryButton/PrimaryButton.js?");
/***/ }),
@@ -10588,7 +10600,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/CloudDownload */ \"./node_modules/@material-ui/icons/CloudDownload.js\");\n/* harmony import */ var _material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/RestorePage */ \"./node_modules/@material-ui/icons/RestorePage.js\");\n/* harmony import */ var _material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/ProjectMetadataDisplay/ProjectMetadataDisplay.js\";\n\n\n\n\n\n\n\n\nvar ProjectMetadataDisplay = function ProjectMetadataDisplay(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 10\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n onClick: props.onEditClick,\n style: {\n cursor: 'pointer'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"h6\",\n component: \"h3\",\n style: {\n margin: '10px 0'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 12\n },\n __self: this\n }, props.manifestLabel || 'Unnamed manifest'), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"body1\",\n component: \"p\",\n style: {\n whiteSpace: 'pre-line'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 15\n },\n __self: this\n }, props.manifestSummary || 'Description of timeline')), !props.noSourceLink && props.homepage && props.homepageLabel && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"body1\",\n component: \"p\",\n style: {\n marginTop: 14\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 26\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: props.homepage,\n target: \"_top\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33\n },\n __self: this\n }, props.homepageLabel)), !props.noSourceLink && (!props.homepage || !props.homepageLabel) && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 37\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n marginTop: 20,\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 38\n },\n __self: this\n }, \"Source\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"body1\",\n component: \"p\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 45\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: props.url,\n target: \"_top\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 46\n },\n __self: this\n }, props.url))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"hr\", {\n style: {\n background: '#BDBDBD',\n height: 1,\n border: 'none',\n marginTop: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 50\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"flex-start\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 58\n },\n __self: this\n }, props.canSave && !props.hasResource ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12,\n style: {\n margin: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"text\",\n color: \"primary\",\n onClick: props.onSaveButtonClicked,\n title: \"Download timeline\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4___default.a, {\n nativeColor: \"#FF4081\",\n style: {\n marginRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 72\n },\n __self: this\n }), \"Download this timeline\")) : null, props.canErase && !props.hasResource ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12,\n style: {\n margin: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 78\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"text\",\n color: \"primary\",\n onClick: props.onEraseButtonClicked,\n title: \"Start timeline over\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 79\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5___default.a, {\n nativeColor: \"#303F9F\",\n style: {\n marginRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 85\n },\n __self: this\n }), \"Start this timeline over\")) : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12,\n style: {\n margin: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 90\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"text\",\n color: \"primary\",\n onClick: props.undoAll,\n disabled: !props.undoAll,\n title: \"Revert changes\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 91\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5___default.a, {\n nativeColor: props.undoAll ? '#303F9F' : '#bbb',\n style: {\n marginRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 98\n },\n __self: this\n }), \"Revert changes\"))));\n};\n\nProjectMetadataDisplay.propTypes = {\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n url: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n homepage: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n homepageLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n noSourceLink: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n onEditClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onSaveButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onEraseButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n canErase: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n canSave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n hasResource: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ProjectMetadataDisplay);\n\n//# sourceURL=webpack:///./src/components/ProjectMetadataDisplay/ProjectMetadataDisplay.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/CloudDownload */ \"./node_modules/@material-ui/icons/CloudDownload.js\");\n/* harmony import */ var _material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/RestorePage */ \"./node_modules/@material-ui/icons/RestorePage.js\");\n/* harmony import */ var _material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/ProjectMetadataDisplay/ProjectMetadataDisplay.js\";\n\n\n\n\n\n\n\n\nvar ProjectMetadataDisplay = function ProjectMetadataDisplay(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 10\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n onClick: props.onEditClick,\n style: {\n cursor: 'pointer'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"h6\",\n component: \"h3\",\n style: {\n margin: '10px 0'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 12\n },\n __self: this\n }, props.manifestLabel || 'Unnamed manifest'), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"body1\",\n component: \"p\",\n style: {\n whiteSpace: 'pre-line'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 15\n },\n __self: this\n }, props.manifestSummary || 'Description of timeline')), !props.noSourceLink && props.homepage && props.homepageLabel && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"body1\",\n component: \"p\",\n style: {\n marginTop: 14\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 26\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: props.homepage,\n target: \"_top\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33\n },\n __self: this\n }, props.homepageLabel)), !props.noSourceLink && (!props.homepage || !props.homepageLabel) && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 37\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"subtitle1\",\n color: \"textSecondary\",\n style: {\n marginTop: 20,\n marginBottom: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 38\n },\n __self: this\n }, \"Source\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"body1\",\n component: \"p\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 45\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: props.url,\n target: \"_top\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 46\n },\n __self: this\n }, props.url))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"hr\", {\n style: {\n background: '#BDBDBD',\n height: 1,\n border: 'none',\n marginTop: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 50\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"flex-start\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 58\n },\n __self: this\n }, props.canSave && !props.hasResource ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12,\n style: {\n margin: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"text\",\n color: \"primary\",\n onClick: props.onSaveButtonClicked,\n title: \"Download timeline\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_CloudDownload__WEBPACK_IMPORTED_MODULE_4___default.a, {\n nativeColor: \"#FF4081\",\n style: {\n marginRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 72\n },\n __self: this\n }), \"Download this timeline\")) : null, props.canErase && !props.hasResource ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12,\n style: {\n margin: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 78\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"text\",\n color: \"primary\",\n onClick: props.onEraseButtonClicked,\n title: \"Start timeline over\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 79\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5___default.a, {\n nativeColor: \"#303F9F\",\n style: {\n marginRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 85\n },\n __self: this\n }), \"Start this timeline over\")) : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12,\n style: {\n margin: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 90\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {\n variant: \"text\",\n color: \"primary\",\n onClick: props.undoAll,\n disabled: !props.undoAll,\n title: \"Revert changes\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 91\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_RestorePage__WEBPACK_IMPORTED_MODULE_5___default.a, {\n nativeColor: props.undoAll ? '#303F9F' : '#bbb',\n style: {\n marginRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 98\n },\n __self: this\n }), \"Revert changes\"))));\n};\n\nProjectMetadataDisplay.propTypes = {\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n url: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n homepage: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n homepageLabel: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string,\n noSourceLink: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n onEditClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onSaveButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n onEraseButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n canErase: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n canSave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n hasResource: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ProjectMetadataDisplay);\n\n//# sourceURL=webpack:///./src/components/ProjectMetadataDisplay/ProjectMetadataDisplay.js?");
/***/ }),
@@ -10600,7 +10612,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/ProjectMetadataEditor/ProjectMetadataEditor.js\";\n\n\n\n\n\n\n\nvar ProjectMetadataEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ProjectMetadataEditor, _Component);\n\n function ProjectMetadataEditor(props) {\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, ProjectMetadataEditor);\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(ProjectMetadataEditor).call(this, props));\n\n _this.handleKeyDown = function (e) {\n if (e.target && e.target.tagName === 'TEXTAREA') {\n return;\n }\n\n if (e.keyCode === 13) {\n _this.onSave();\n }\n\n if (e.keyCode === 27) {\n _this.props.onCancel();\n }\n };\n\n _this.handleChange = function (name) {\n return function (ev) {\n _this.setState(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, ev.target.value));\n };\n };\n\n _this.onSave = function () {\n var _this$state = _this.state,\n manifestLabel = _this$state.manifestLabel,\n manifestSummary = _this$state.manifestSummary;\n var newValues = {\n manifestLabel: manifestLabel,\n manifestSummary: manifestSummary\n };\n\n _this.props.onSave(newValues);\n };\n\n var _manifestLabel = props.manifestLabel,\n _manifestSummary = props.manifestSummary;\n _this.state = {\n manifestLabel: _manifestLabel,\n manifestSummary: _manifestSummary\n };\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ProjectMetadataEditor, [{\n key: \"render\",\n value: function render() {\n var onCancel = this.props.onCancel;\n var _this$state2 = this.state,\n manifestLabel = _this$state2.manifestLabel,\n manifestSummary = _this$state2.manifestSummary;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"form\", {\n onKeyDown: this.handleKeyDown,\n style: {\n paddingRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"manifestLabel\",\n label: \"Label\",\n autoFocus: true,\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Unnamed manifest\",\n fullWidth: true,\n margin: \"normal\",\n value: manifestLabel,\n onChange: this.handleChange('manifestLabel'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"manifestSummary\",\n name: \"manifestSummary\",\n label: \"Description\",\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Description of timeline\",\n fullWidth: true,\n multiline: true,\n margin: \"normal\",\n value: manifestSummary,\n onChange: this.handleChange('manifestSummary'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 79\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n container: true,\n spacing: 16,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 93\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flex: '1 1 0px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 100\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default.a, {\n disabled: !this.props.onCancel,\n onClick: onCancel,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 109\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n disabled: !this.props.onSave,\n onClick: this.onSave,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 112\n },\n __self: this\n }, \"Save\"))));\n }\n }]);\n\n return ProjectMetadataEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nProjectMetadataEditor.propTypes = {\n /** Current label of the manifest or range */\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Current summary of the manifest or range */\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Call back when save button is clicked, gets passed an object with label and summary */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Call back when delete button is clicked, gets passed an object with label and summary */\n onCancel: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func\n};\nProjectMetadataEditor.defaultProps = {\n manifestLabel: 'Untitled',\n manifestSummary: ''\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ProjectMetadataEditor);\n\n//# sourceURL=webpack:///./src/components/ProjectMetadataEditor/ProjectMetadataEditor.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../PrimaryButton/PrimaryButton */ \"./src/components/PrimaryButton/PrimaryButton.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/ProjectMetadataEditor/ProjectMetadataEditor.js\";\n\n\n\n\n\n\n\nvar ProjectMetadataEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ProjectMetadataEditor, _Component);\n\n function ProjectMetadataEditor(props) {\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, ProjectMetadataEditor);\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(ProjectMetadataEditor).call(this, props));\n\n _this.handleKeyDown = function (e) {\n if (e.target && e.target.tagName === 'TEXTAREA') {\n return;\n }\n\n if (e.keyCode === 13) {\n _this.onSave();\n }\n\n if (e.keyCode === 27) {\n _this.props.onCancel();\n }\n };\n\n _this.handleChange = function (name) {\n return function (ev) {\n _this.setState(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, ev.target.value));\n };\n };\n\n _this.onSave = function () {\n var _this$state = _this.state,\n manifestLabel = _this$state.manifestLabel,\n manifestSummary = _this$state.manifestSummary;\n var newValues = {\n manifestLabel: manifestLabel,\n manifestSummary: manifestSummary\n };\n\n _this.props.onSave(newValues);\n };\n\n var _manifestLabel = props.manifestLabel,\n _manifestSummary = props.manifestSummary;\n _this.state = {\n manifestLabel: _manifestLabel,\n manifestSummary: _manifestSummary\n };\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ProjectMetadataEditor, [{\n key: \"render\",\n value: function render() {\n var onCancel = this.props.onCancel;\n var _this$state2 = this.state,\n manifestLabel = _this$state2.manifestLabel,\n manifestSummary = _this$state2.manifestSummary;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"form\", {\n onKeyDown: this.handleKeyDown,\n style: {\n paddingRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"manifestLabel\",\n label: \"Label\",\n autoFocus: true,\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Unnamed manifest\",\n fullWidth: true,\n margin: \"normal\",\n value: manifestLabel,\n onChange: this.handleChange('manifestLabel'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_8___default.a, {\n id: \"manifestSummary\",\n name: \"manifestSummary\",\n label: \"Description\",\n InputLabelProps: {\n shrink: true\n },\n placeholder: \"Description of timeline\",\n fullWidth: true,\n multiline: true,\n margin: \"normal\",\n value: manifestSummary,\n onChange: this.handleChange('manifestSummary'),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 79\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n container: true,\n spacing: 16,\n direction: \"row\",\n justify: \"flex-start\",\n alignItems: \"center\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 93\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_10___default.a, {\n item: true,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n flex: '1 1 0px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 100\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_9___default.a, {\n disabled: !this.props.onCancel,\n onClick: onCancel,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 109\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_PrimaryButton_PrimaryButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n disabled: !this.props.onSave,\n onClick: this.onSave,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 112\n },\n __self: this\n }, \"Save\"))));\n }\n }]);\n\n return ProjectMetadataEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nProjectMetadataEditor.propTypes = {\n /** Current label of the manifest or range */\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Current summary of the manifest or range */\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.string.isRequired,\n\n /** Call back when save button is clicked, gets passed an object with label and summary */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Call back when delete button is clicked, gets passed an object with label and summary */\n onCancel: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func\n};\nProjectMetadataEditor.defaultProps = {\n manifestLabel: 'Untitled',\n manifestSummary: ''\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ProjectMetadataEditor);\n\n//# sourceURL=webpack:///./src/components/ProjectMetadataEditor/ProjectMetadataEditor.js?");
/***/ }),
@@ -10612,7 +10624,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsPopup; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var voca__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! voca */ \"./node_modules/voca/index.js\");\n/* harmony import */ var voca__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(voca__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @material-ui/core/FormLabel */ \"./node_modules/@material-ui/core/FormLabel/index.js\");\n/* harmony import */ var _material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @material-ui/core/FormGroup */ \"./node_modules/@material-ui/core/FormGroup/index.js\");\n/* harmony import */ var _material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @material-ui/core/FormControlLabel */ \"./node_modules/@material-ui/core/FormControlLabel/index.js\");\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @material-ui/core/Checkbox */ \"./node_modules/@material-ui/core/Checkbox/index.js\");\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var _material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @material-ui/core/RadioGroup */ \"./node_modules/@material-ui/core/RadioGroup/index.js\");\n/* harmony import */ var _material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var _material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @material-ui/core/Radio */ \"./node_modules/@material-ui/core/Radio/index.js\");\n/* harmony import */ var _material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @material-ui/lab/Slider */ \"./node_modules/@material-ui/lab/Slider/index.js\");\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../ColourSwatchPicker/ColourSwatchPicker */ \"./src/components/ColourSwatchPicker/ColourSwatchPicker.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n\n\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/SettingsPopoup/SettingsPopup.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColourPaletteSwitcher = function ColourPaletteSwitcher(_ref) {\n var _React$createElement;\n\n var currentKey = _ref.currentKey,\n onChange = _ref.onChange;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useState\"])(false),\n _useState2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_useState, 2),\n isOpen = _useState2[0],\n setOpen = _useState2[1];\n\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", (_React$createElement = {\n onClick: function onClick() {\n return setOpen(!isOpen);\n },\n style: {\n position: 'relative'\n }\n }, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_React$createElement, \"style\", {\n marginTop: 16\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_React$createElement, \"__source\", {\n fileName: _jsxFileName,\n lineNumber: 31\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(_React$createElement, \"__self\", this), _React$createElement), Object.keys(_config__WEBPACK_IMPORTED_MODULE_27__[\"colourPalettes\"]).map(function (key) {\n var pallet = _config__WEBPACK_IMPORTED_MODULE_27__[\"colourPalettes\"][key];\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n key: key,\n onClick: function onClick() {\n return onChange(key);\n },\n style: {\n border: key === currentKey ? '1px solid blue' : '1px solid #ddd',\n marginBottom: 8,\n padding: 5,\n borderRadius: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 39\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n style: {\n fontSize: 14,\n marginBottom: 8\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 49\n },\n __self: this\n }, pallet.name), pallet.colours.map(function (colour) {\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n key: colour,\n style: {\n display: 'inline-block',\n margin: 4,\n background: colour,\n height: 10,\n width: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 52\n },\n __self: this\n });\n }));\n }));\n};\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 146\n },\n __self: undefined\n}, \"Settings\");\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 177\n },\n __self: undefined\n}, \"Audio Settings\");\n\nvar _ref6 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 215\n },\n __self: undefined\n}, \"Timeline Appearance\");\n\nvar _ref7 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23___default.a, {\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 283\n },\n __self: undefined\n});\n\nvar _ref8 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23___default.a, {\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 289\n },\n __self: undefined\n});\n\nvar _ref9 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 300\n },\n __self: undefined\n}, \"Bubble Height\");\n\nvar _ref10 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 347\n },\n __self: undefined\n}, \"Color palette\");\n\nvar SettingsPopup =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(SettingsPopup, _React$Component);\n\n function SettingsPopup() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, SettingsPopup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(SettingsPopup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"DEFAULT_SETTINGS\"]);\n\n _this.handleChange = function (name, type) {\n return function (event) {\n _this.setState(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__[\"default\"])({}, name, type === 'checkbox' ? event.target.checked : event.target.value));\n };\n };\n\n _this.onSelectBackground = function (value) {\n _this.setState(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BACKGROUND_COLOUR, value));\n };\n\n _this.handleSliderChange = function (event, value) {\n _this.setState({\n bubbleHeight: value\n });\n };\n\n _this.onSaveClicked = function () {\n _this.props.onSave(_this.state);\n\n _this.props.onClose();\n };\n\n _this.keyboardListener = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n\n _this.onSaveClicked();\n }\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(SettingsPopup, [{\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (prevProps.open === false && this.props.open) {\n this.setState(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, prevProps.settings));\n }\n\n return null;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11___default.a, {\n open: this.props.open,\n onClose: this.props.onClose,\n \"aria-labelledby\": \"form-dialog-title\",\n fullWidth: true,\n maxWidth: 'md',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 139\n },\n __self: this\n }, _ref2, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13___default.a, {\n style: {\n maxWidth: 'none'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 147\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n style: {\n paddingTop: 16,\n paddingLeft: 8\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 152\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n container: true,\n direction: \"row\",\n justify: \"space-between\",\n alignItems: \"stretch\",\n spacing: 16 // style={{\n // width: 700,\n // }}\n ,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 158\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n md: 6,\n sm: 12,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 168\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n container: true,\n direction: \"column\",\n justify: \"flex-start\",\n spacing: 16,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 169\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 175\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 176\n },\n __self: this\n }, _ref3, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 178\n },\n __self: this\n }, [[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].START_PLAYING_WHEN_BUBBLES_CLICKED, 'checkbox', 'Start playing when bubble or marker is clicked.']].map(function (_ref4) {\n var _ref5 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_ref4, 3),\n key = _ref5[0],\n type = _ref5[1],\n label = _ref5[2];\n\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n key: key,\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: _this2.state[key],\n onChange: _this2.handleChange(key, type),\n value: key,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 200\n },\n __self: this\n }),\n label: label,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 197\n },\n __self: this\n });\n })))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 213\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 214\n },\n __self: this\n }, _ref6, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 218\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_TIMES],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_TIMES, 'checkbox'),\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_TIMES,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 221\n },\n __self: this\n }),\n label: \"Show Times\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 219\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_MARKERS],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_MARKERS, 'checkbox'),\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_MARKERS,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 235\n },\n __self: this\n }),\n label: \"Show Markers\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 233\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 247\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n style: {\n marginBottom: 14,\n paddingTop: 14\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 248\n },\n __self: this\n }, \"Background color\"), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n swatch: [],\n label: \"Background color\",\n currentColour: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BACKGROUND_COLOUR],\n onSelectColour: this.onSelectBackground,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 257\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 266\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n style: {\n paddingTop: 24\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 267\n },\n __self: this\n }, \"Bubble Shape\"), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22___default.a, {\n \"aria-label\": \"bubble shape\",\n name: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BUBBLE_STYLE,\n value: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BUBBLE_STYLE],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BUBBLE_STYLE),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 275\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].ROUNDED,\n control: _ref7,\n label: voca__WEBPACK_IMPORTED_MODULE_8___default.a.capitalize(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].ROUNDED),\n labelPlacement: \"end\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 281\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].SQUARE,\n control: _ref8,\n label: voca__WEBPACK_IMPORTED_MODULE_8___default.a.capitalize(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].SQUARE),\n labelPlacement: \"end\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 287\n },\n __self: this\n })))))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 298\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 299\n },\n __self: this\n }, _ref9, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 301\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24___default.a, {\n onChange: this.handleSliderChange,\n value: this.state.bubbleHeight,\n min: 48,\n max: 80,\n step: 1,\n style: {\n marginTop: 14\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 302\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].AUTO_SCALE_HEIGHT],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].AUTO_SCALE_HEIGHT, 'checkbox'),\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].AUTO_SCALE_HEIGHT,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 314\n },\n __self: this\n }),\n label: \"Auto Scale Height On Resize\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 312\n },\n __self: this\n })))))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n md: 6,\n sm: 12,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 339\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n container: true,\n direction: \"column\",\n justify: \"flex-start\",\n spacing: 16,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 340\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 346\n },\n __self: this\n }, _ref10, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(ColourPaletteSwitcher, {\n currentKey: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].COLOUR_PALETTE],\n onChange: function onChange(key) {\n return _this2.setState(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_6__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].COLOUR_PALETTE, key));\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 348\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default.a, {\n onClick: this.props.clearCustomColors,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 355\n },\n __self: this\n }, \"Clear all custom bubble colors\")))))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 363\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default.a, {\n onClick: this.props.onClose,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 364\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default.a, {\n onClick: this.onSaveClicked,\n variant: \"contained\",\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 367\n },\n __self: this\n }, \"Apply\")));\n }\n }]);\n\n return SettingsPopup;\n}(react__WEBPACK_IMPORTED_MODULE_9___default.a.Component);\n\nSettingsPopup.propTypes = {\n /** Callback for when settings saved */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.func.isRequired,\n\n /** Callback to dismiss the form */\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.func.isRequired,\n\n /** is the dialog open */\n open: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.bool,\n\n /** initial settings state */\n settings: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.object,\n clearCustomColors: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.func.isRequired\n};\nSettingsPopup.defaultProps = {\n open: false\n};\n\n\n//# sourceURL=webpack:///./src/components/SettingsPopoup/SettingsPopup.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return SettingsPopup; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var voca__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! voca */ \"./node_modules/voca/index.js\");\n/* harmony import */ var voca__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(voca__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @material-ui/core/FormLabel */ \"./node_modules/@material-ui/core/FormLabel/index.js\");\n/* harmony import */ var _material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var _material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @material-ui/core/FormGroup */ \"./node_modules/@material-ui/core/FormGroup/index.js\");\n/* harmony import */ var _material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @material-ui/core/FormControlLabel */ \"./node_modules/@material-ui/core/FormControlLabel/index.js\");\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20__);\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @material-ui/core/Checkbox */ \"./node_modules/@material-ui/core/Checkbox/index.js\");\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var _material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @material-ui/core/RadioGroup */ \"./node_modules/@material-ui/core/RadioGroup/index.js\");\n/* harmony import */ var _material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22__);\n/* harmony import */ var _material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @material-ui/core/Radio */ \"./node_modules/@material-ui/core/Radio/index.js\");\n/* harmony import */ var _material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @material-ui/lab/Slider */ \"./node_modules/@material-ui/lab/Slider/index.js\");\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../ColourSwatchPicker/ColourSwatchPicker */ \"./src/components/ColourSwatchPicker/ColourSwatchPicker.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n\n\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/SettingsPopoup/SettingsPopup.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar ColourPaletteSwitcher = function ColourPaletteSwitcher(_ref) {\n var currentKey = _ref.currentKey,\n onChange = _ref.onChange;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useState\"])(false),\n _useState2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_useState, 2),\n isOpen = _useState2[0],\n setOpen = _useState2[1];\n\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n onClick: function onClick() {\n return setOpen(!isOpen);\n },\n style: {\n position: 'relative',\n marginTop: 16\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 31\n },\n __self: this\n }, Object.keys(_config__WEBPACK_IMPORTED_MODULE_27__[\"colourPalettes\"]).map(function (key) {\n var pallet = _config__WEBPACK_IMPORTED_MODULE_27__[\"colourPalettes\"][key];\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n key: key,\n onClick: function onClick() {\n return onChange(key);\n },\n style: {\n border: key === currentKey ? '1px solid blue' : '1px solid #ddd',\n marginBottom: 8,\n padding: 5,\n borderRadius: 5\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 38\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n style: {\n fontSize: 14,\n marginBottom: 8\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 48\n },\n __self: this\n }, pallet.name), pallet.colours.map(function (colour) {\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n key: colour,\n style: {\n display: 'inline-block',\n margin: 4,\n background: colour,\n height: 10,\n width: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 51\n },\n __self: this\n });\n }));\n }));\n};\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 145\n },\n __self: undefined\n}, \"Settings\");\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 176\n },\n __self: undefined\n}, \"Media Settings\");\n\nvar _ref6 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 214\n },\n __self: undefined\n}, \"Timeline Appearance\");\n\nvar _ref7 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23___default.a, {\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 282\n },\n __self: undefined\n});\n\nvar _ref8 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Radio__WEBPACK_IMPORTED_MODULE_23___default.a, {\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 288\n },\n __self: undefined\n});\n\nvar _ref9 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 299\n },\n __self: undefined\n}, \"Bubble Height\");\n\nvar _ref10 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 346\n },\n __self: undefined\n}, \"Color palette\");\n\nvar SettingsPopup =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(SettingsPopup, _React$Component);\n\n function SettingsPopup() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, SettingsPopup);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(SettingsPopup)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"DEFAULT_SETTINGS\"]);\n\n _this.handleChange = function (name, type) {\n return function (event) {\n _this.setState(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, name, type === 'checkbox' ? event.target.checked : event.target.value));\n };\n };\n\n _this.onSelectBackground = function (value) {\n _this.setState(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BACKGROUND_COLOUR, value));\n };\n\n _this.handleSliderChange = function (event, value) {\n _this.setState({\n bubbleHeight: value\n });\n };\n\n _this.onSaveClicked = function () {\n _this.props.onSave(_this.state);\n\n _this.props.onClose();\n };\n\n _this.keyboardListener = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n\n _this.onSaveClicked();\n }\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(SettingsPopup, [{\n key: \"getSnapshotBeforeUpdate\",\n value: function getSnapshotBeforeUpdate(prevProps, prevState) {\n if (prevProps.open === false && this.props.open) {\n this.setState(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, prevProps.settings));\n }\n\n return null;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n document.addEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.keyboardListener);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_11___default.a, {\n open: this.props.open,\n onClose: this.props.onClose,\n \"aria-labelledby\": \"form-dialog-title\",\n fullWidth: true,\n maxWidth: 'md',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 138\n },\n __self: this\n }, _ref2, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_13___default.a, {\n style: {\n maxWidth: 'none'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 146\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n style: {\n paddingTop: 16,\n paddingLeft: 8\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 151\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n container: true,\n direction: \"row\",\n justify: \"space-between\",\n alignItems: \"stretch\",\n spacing: 16 // style={{\n // width: 700,\n // }}\n ,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n md: 6,\n sm: 12,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 167\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n container: true,\n direction: \"column\",\n justify: \"flex-start\",\n spacing: 16,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 168\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 174\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 175\n },\n __self: this\n }, _ref3, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 177\n },\n __self: this\n }, [[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].START_PLAYING_WHEN_BUBBLES_CLICKED, 'checkbox', 'Start playing when bubble or marker is clicked.']].map(function (_ref4) {\n var _ref5 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(_ref4, 3),\n key = _ref5[0],\n type = _ref5[1],\n label = _ref5[2];\n\n return react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n key: key,\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: _this2.state[key],\n onChange: _this2.handleChange(key, type),\n value: key,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 199\n },\n __self: this\n }),\n label: label,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 196\n },\n __self: this\n });\n })))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 212\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 213\n },\n __self: this\n }, _ref6, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 217\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_TIMES],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_TIMES, 'checkbox'),\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_TIMES,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 220\n },\n __self: this\n }),\n label: \"Show Times\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 218\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_MARKERS],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_MARKERS, 'checkbox'),\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].SHOW_MARKERS,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 234\n },\n __self: this\n }),\n label: \"Show Markers\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 232\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 246\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n style: {\n marginBottom: 14,\n paddingTop: 14\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 247\n },\n __self: this\n }, \"Background color\"), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_ColourSwatchPicker_ColourSwatchPicker__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n swatch: [],\n label: \"Background color\",\n currentColour: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BACKGROUND_COLOUR],\n onSelectColour: this.onSelectBackground,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 256\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 265\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormLabel__WEBPACK_IMPORTED_MODULE_18___default.a, {\n component: \"legend\",\n style: {\n paddingTop: 24\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 266\n },\n __self: this\n }, \"Bubble Shape\"), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_RadioGroup__WEBPACK_IMPORTED_MODULE_22___default.a, {\n \"aria-label\": \"bubble shape\",\n name: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BUBBLE_STYLE,\n value: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BUBBLE_STYLE],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].BUBBLE_STYLE),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 274\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].ROUNDED,\n control: _ref7,\n label: voca__WEBPACK_IMPORTED_MODULE_8___default.a.capitalize(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].ROUNDED),\n labelPlacement: \"end\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 280\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].SQUARE,\n control: _ref8,\n label: voca__WEBPACK_IMPORTED_MODULE_8___default.a.capitalize(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"BUBBLE_STYLES\"].SQUARE),\n labelPlacement: \"end\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 286\n },\n __self: this\n })))))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 297\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_17___default.a, {\n component: \"fieldset\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 298\n },\n __self: this\n }, _ref9, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_19___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 300\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_24___default.a, {\n onChange: this.handleSliderChange,\n value: this.state.bubbleHeight,\n min: 48,\n max: 80,\n step: 1,\n style: {\n marginTop: 14\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 301\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_20___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_21___default.a, {\n checked: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].AUTO_SCALE_HEIGHT],\n onChange: this.handleChange(_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].AUTO_SCALE_HEIGHT, 'checkbox'),\n value: _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].AUTO_SCALE_HEIGHT,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 313\n },\n __self: this\n }),\n label: \"Auto Scale Height On Resize\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 311\n },\n __self: this\n })))))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n md: 6,\n sm: 12,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 338\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n container: true,\n direction: \"column\",\n justify: \"flex-start\",\n spacing: 16,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 339\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_15___default.a, {\n item: true,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 345\n },\n __self: this\n }, _ref10, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(ColourPaletteSwitcher, {\n currentKey: this.state[_constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].COLOUR_PALETTE],\n onChange: function onChange(key) {\n return _this2.setState(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_25__[\"PROJECT\"].COLOUR_PALETTE, key));\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 347\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default.a, {\n onClick: this.props.clearCustomColors,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 354\n },\n __self: this\n }, \"Clear all custom bubble colors\")))))), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_14___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 362\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default.a, {\n onClick: this.props.onClose,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 363\n },\n __self: this\n }, \"Cancel\"), react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_16___default.a, {\n onClick: this.onSaveClicked,\n variant: \"contained\",\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 366\n },\n __self: this\n }, \"Apply\")));\n }\n }]);\n\n return SettingsPopup;\n}(react__WEBPACK_IMPORTED_MODULE_9___default.a.Component);\n\nSettingsPopup.propTypes = {\n /** Callback for when settings saved */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.func.isRequired,\n\n /** Callback to dismiss the form */\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.func.isRequired,\n\n /** is the dialog open */\n open: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.bool,\n\n /** initial settings state */\n settings: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.object,\n clearCustomColors: prop_types__WEBPACK_IMPORTED_MODULE_10___default.a.func.isRequired\n};\nSettingsPopup.defaultProps = {\n open: false\n};\n\n\n//# sourceURL=webpack:///./src/components/SettingsPopoup/SettingsPopup.js?");
/***/ }),
@@ -10624,7 +10636,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _SingleBubble_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SingleBubble.scss */ \"./src/components/SingleBubble/SingleBubble.scss\");\n/* harmony import */ var _SingleBubble_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_SingleBubble_scss__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/SingleBubble/SingleBubble.js\";\n\n\n\n\nvar textWidthCache = {};\n\nvar getLabelLengthInPixel = function getLabelLengthInPixel(label) {\n if (!textWidthCache.hasOwnProperty(label)) {\n var textWidthMeasureEl = document.createElement('span');\n document.body.appendChild(textWidthMeasureEl);\n textWidthMeasureEl.textContent = label;\n textWidthCache[label] = textWidthMeasureEl.offsetWidth;\n document.body.removeChild(textWidthMeasureEl);\n }\n\n return textWidthCache[label];\n};\n\nvar getAlteredLabel = function getAlteredLabel(label, width) {\n var text = label || '';\n\n if (width === 0) {\n return '';\n }\n\n var textWidthMeasureEl = document.createElement('span');\n document.body.appendChild(textWidthMeasureEl);\n\n do {\n textWidthMeasureEl.textContent = text + '...';\n text = text.slice(0, -1);\n } while (textWidthMeasureEl.offsetWidth > width && textWidthMeasureEl.textContent !== '...');\n\n document.body.removeChild(textWidthMeasureEl);\n return textWidthMeasureEl.textContent;\n};\n\nvar SingleBubble =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(SingleBubble, _Component);\n\n function SingleBubble() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, SingleBubble);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(SingleBubble)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.mouseDownTimeout = null;\n _this.originalX = 0;\n _this.isClicked = false;\n _this.stopClick = false;\n\n _this.onMouseDown = function (ev) {\n ev.preventDefault();\n ev.persist();\n _this.originalX = ev.pageX;\n _this.isClicked = true;\n _this.mouseDownTimeout = setTimeout(function () {\n // After 500ms its a pan\n _this.props.onPanStart(ev);\n\n _this.stopClick = true;\n }, 500);\n };\n\n _this.onMouseMove = function (ev) {\n if (_this.isClicked && _this.stopClick === false && Math.abs(_this.originalX - ev.pageX) >= 5) {\n clearTimeout(_this.mouseDownTimeout);\n\n _this.props.onPanStart(ev);\n\n _this.stopClick = true;\n }\n };\n\n _this.onMouseUp = function (ev) {\n _this.isClicked = false;\n clearInterval(_this.mouseDownTimeout);\n\n if (_this.stopClick) {\n _this.stopClick = false;\n return;\n }\n\n var onClick = _this.props.onClick;\n\n if (onClick) {\n onClick(_this.props.point, ev);\n }\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(SingleBubble, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n height = _this$props.height,\n dX = _this$props.dX,\n colour = _this$props.colour,\n label = _this$props.label,\n summary = _this$props.summary,\n labelColour = _this$props.labelColour,\n shape = _this$props.shape,\n isSelected = _this$props.isSelected;\n var width = isSelected ? this.props.width - 2 : this.props.width;\n var x = isSelected ? (this.props.x || 0) + 1 : this.props.x || 0;\n var cDX = dX || width / 2 - width / 8;\n var d = shape === _constants_project__WEBPACK_IMPORTED_MODULE_7__[\"BUBBLE_STYLES\"].ROUNDED ? \"M\".concat(x, \",0C\").concat(x, \",\").concat(height, \" \").concat(x + cDX, \",\").concat(height, \" \").concat(width / 2 + x, \",\").concat(height, \" C\").concat(x + width - cDX, \",\").concat(height, \" \").concat(width + x, \",\").concat(height, \" \").concat(width + x, \",\", 0) : \"M\".concat(x, \",0L \").concat(x + 2, \" \").concat(height, \" L\").concat(x + width - 2, \" \").concat(height, \" L\").concat(x + width, \" 0Z\");\n var textWidth = getLabelLengthInPixel(label);\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"g\", {\n className: \"single-bubble\",\n onMouseDown: this.onMouseDown,\n onMouseMove: this.onMouseMove,\n onMouseUp: this.onMouseUp,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 141\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"path\", {\n d: d,\n fill: colour,\n strokeWidth: isSelected ? 4 : 0,\n stroke: isSelected ? 'rgba(0,0,0,.8)' : 'transparent',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 147\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"title\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 153\n },\n __self: this\n }, label)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"text\", {\n textAnchor: \"middle\",\n fill: labelColour,\n paintOrder: \"stroke\",\n x: 0,\n y: 0,\n transform: \"scale(1,-1) translate(\".concat(width / 2 + x || 0, \",\").concat(70 / 2 - height, \")\"),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 155\n },\n __self: this\n }, textWidth < width ? label : getAlteredLabel(label, width)));\n }\n }]);\n\n return SingleBubble;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nSingleBubble.propTypes = {\n /** Width of the bubble */\n width: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Height of the bubble */\n height: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Position on X co-ordinate */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** curve adjustment */\n dX: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** Background colour of the bubble */\n colour: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Bubble label text colour */\n labelColour: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Click handler for the bubble */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Label for the bubble */\n label: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Summary for the bubble */\n summary: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Bubble style */\n shape: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** is bubble selected */\n isSelected: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool\n};\nSingleBubble.defaultProps = {\n colour: '#000',\n onClick: function onClick() {},\n x: 0,\n y: 0,\n labelColour: '#000',\n shape: _constants_project__WEBPACK_IMPORTED_MODULE_7__[\"BUBBLE_STYLES\"].ROUNDED,\n isSelected: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (SingleBubble);\n\n//# sourceURL=webpack:///./src/components/SingleBubble/SingleBubble.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _SingleBubble_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SingleBubble.scss */ \"./src/components/SingleBubble/SingleBubble.scss\");\n/* harmony import */ var _SingleBubble_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_SingleBubble_scss__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/SingleBubble/SingleBubble.js\";\n\n\n\n\nvar textWidthCache = {};\n\nvar getLabelLengthInPixel = function getLabelLengthInPixel(label) {\n if (!textWidthCache.hasOwnProperty(label)) {\n var textWidthMeasureEl = document.createElement('span');\n document.body.appendChild(textWidthMeasureEl);\n textWidthMeasureEl.textContent = label;\n textWidthCache[label] = textWidthMeasureEl.offsetWidth;\n document.body.removeChild(textWidthMeasureEl);\n }\n\n return textWidthCache[label];\n};\n\nvar getAlteredLabel = function getAlteredLabel(label, width) {\n var text = label || '';\n\n if (width === 0) {\n return '';\n }\n\n var textWidthMeasureEl = document.createElement('span');\n document.body.appendChild(textWidthMeasureEl);\n\n do {\n textWidthMeasureEl.textContent = text + '...';\n text = text.slice(0, -1);\n } while (textWidthMeasureEl.offsetWidth > width && textWidthMeasureEl.textContent !== '...');\n\n document.body.removeChild(textWidthMeasureEl);\n return textWidthMeasureEl.textContent;\n};\n\nvar SingleBubble =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(SingleBubble, _Component);\n\n function SingleBubble() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, SingleBubble);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(SingleBubble)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.mouseDownTimeout = null;\n _this.originalX = 0;\n _this.isClicked = false;\n _this.stopClick = false;\n\n _this.onMouseDown = function (ev) {\n ev.preventDefault();\n ev.persist();\n _this.originalX = ev.pageX;\n _this.isClicked = true;\n _this.mouseDownTimeout = setTimeout(function () {\n // After 500ms its a pan\n _this.props.onPanStart(ev);\n\n _this.stopClick = true;\n }, 500);\n };\n\n _this.onMouseMove = function (ev) {\n if (_this.isClicked && _this.stopClick === false && Math.abs(_this.originalX - ev.pageX) >= 5) {\n clearTimeout(_this.mouseDownTimeout);\n\n _this.props.onPanStart(ev);\n\n _this.stopClick = true;\n }\n };\n\n _this.onMouseUp = function (ev) {\n _this.isClicked = false;\n clearInterval(_this.mouseDownTimeout);\n\n if (_this.stopClick) {\n _this.stopClick = false;\n return;\n }\n\n var onClick = _this.props.onClick;\n\n if (onClick) {\n onClick(_this.props.point, ev);\n }\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(SingleBubble, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n height = _this$props.height,\n dX = _this$props.dX,\n colour = _this$props.colour,\n label = _this$props.label,\n summary = _this$props.summary,\n labelColour = _this$props.labelColour,\n shape = _this$props.shape,\n isSelected = _this$props.isSelected;\n var width = isSelected ? this.props.width - 2 : this.props.width;\n var x = isSelected ? (this.props.x || 0) + 1 : this.props.x || 0;\n var cDX = dX || width / 2 - width / 8;\n var d = shape === _constants_project__WEBPACK_IMPORTED_MODULE_7__[\"BUBBLE_STYLES\"].ROUNDED ? \"M\".concat(x, \",0C\").concat(x, \",\").concat(height, \" \").concat(x + cDX, \",\").concat(height, \" \").concat(width / 2 + x, \",\").concat(height, \" C\").concat(x + width - cDX, \",\").concat(height, \" \").concat(width + x, \",\").concat(height, \" \").concat(width + x, \",\", 0) : \"M\".concat(x, \",0L \").concat(x + 2, \" \").concat(height, \" L\").concat(x + width - 2, \" \").concat(height, \" L\").concat(x + width, \" 0Z\");\n var textWidth = getLabelLengthInPixel(label);\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"g\", {\n className: \"single-bubble\",\n onMouseDown: this.onMouseDown,\n onMouseMove: this.onMouseMove,\n onMouseUp: this.onMouseUp,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 141\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"path\", {\n d: d,\n fill: colour,\n strokeWidth: isSelected ? 4 : 0,\n stroke: isSelected ? 'rgba(0,0,0,.8)' : 'transparent',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 147\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"title\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 153\n },\n __self: this\n }, label)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"text\", {\n textAnchor: \"middle\",\n fill: labelColour,\n paintOrder: \"stroke\",\n x: 0,\n y: 0,\n transform: \"scale(1,-1) translate(\".concat(width / 2 + x || 0, \",\").concat(70 / 2 - height, \")\"),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 155\n },\n __self: this\n }, textWidth < width ? label : getAlteredLabel(label, width)));\n }\n }]);\n\n return SingleBubble;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nSingleBubble.propTypes = {\n /** Width of the bubble */\n width: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Height of the bubble */\n height: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Position on X co-ordinate */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** curve adjustment */\n dX: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n\n /** Background colour of the bubble */\n colour: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Bubble label text colour */\n labelColour: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Click handler for the bubble */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Label for the bubble */\n label: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Summary for the bubble */\n summary: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** Bubble style */\n shape: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n\n /** is bubble selected */\n isSelected: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool\n};\nSingleBubble.defaultProps = {\n colour: '#000',\n onClick: function onClick() {},\n x: 0,\n y: 0,\n labelColour: '#000',\n shape: _constants_project__WEBPACK_IMPORTED_MODULE_7__[\"BUBBLE_STYLES\"].ROUNDED,\n isSelected: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (SingleBubble);\n\n//# sourceURL=webpack:///./src/components/SingleBubble/SingleBubble.js?");
/***/ }),
@@ -10647,7 +10659,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FastForward */ \"./node_modules/@material-ui/icons/FastForward.js\");\n/* harmony import */ var _material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/SkipAheadButton/SkipAheadButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar SkipAheadButton = function SkipAheadButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Skip forwards\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nSkipAheadButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nSkipAheadButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (SkipAheadButton);\n\n//# sourceURL=webpack:///./src/components/SkipAheadButton/SkipAheadButton.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FastForward */ \"./node_modules/@material-ui/icons/FastForward.js\");\n/* harmony import */ var _material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/SkipAheadButton/SkipAheadButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FastForward__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar SkipAheadButton = function SkipAheadButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Skip forwards\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nSkipAheadButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nSkipAheadButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (SkipAheadButton);\n\n//# sourceURL=webpack:///./src/components/SkipAheadButton/SkipAheadButton.js?");
/***/ }),
@@ -10659,7 +10671,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FastRewind */ \"./node_modules/@material-ui/icons/FastRewind.js\");\n/* harmony import */ var _material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/SkipBackwardsButton/SkipBackwardsButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar SkipBackwardsButton = function SkipBackwardsButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Skip backwards\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nSkipBackwardsButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nSkipBackwardsButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (SkipBackwardsButton);\n\n//# sourceURL=webpack:///./src/components/SkipBackwardsButton/SkipBackwardsButton.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../TransportBarButton/TransportBarButton */ \"./src/components/TransportBarButton/TransportBarButton.js\");\n/* harmony import */ var _material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FastRewind */ \"./node_modules/@material-ui/icons/FastRewind.js\");\n/* harmony import */ var _material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/SkipBackwardsButton/SkipBackwardsButton.js\";\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FastRewind__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 8\n },\n __self: undefined\n});\n\nvar SkipBackwardsButton = function SkipBackwardsButton(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TransportBarButton_TransportBarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], Object.assign({\n title: \"Skip backwards\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 7\n },\n __self: this\n }), _ref);\n};\n\nSkipBackwardsButton.propTypes = {\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired\n};\nSkipBackwardsButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (SkipBackwardsButton);\n\n//# sourceURL=webpack:///./src/components/SkipBackwardsButton/SkipBackwardsButton.js?");
/***/ }),
@@ -10671,7 +10683,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _TimePicker_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TimePicker.scss */ \"./src/components/TimePicker/TimePicker.scss\");\n/* harmony import */ var _TimePicker_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_TimePicker_scss__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/TimePicker/TimePicker.js\";\n\n\n\n\nvar FIELD_MULTIPLIER = {\n second: 1000,\n minute: 60 * 1000,\n hour: 60 * 60 * 1000\n};\nvar FIELD_MIN_MAX = {\n second: {\n min: 0,\n max: 60\n },\n minute: {\n min: 0,\n max: 60\n },\n hour: {\n min: 0,\n max: 23\n }\n};\nvar TWENTY_FOUR_HOUR = 24 * 60 * 60 * 1000;\n\nvar TimePicker =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TimePicker, _React$Component);\n\n function TimePicker(props) {\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, TimePicker);\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TimePicker).call(this, props));\n\n _this.onChange = function (value) {\n return _this.props.onChange && _this.props.onChange(_this.applyMinMax(value));\n };\n\n _this.applyMinMax = function (value) {\n return Math.max(_this.props.min, Math.min(_this.props.max, value));\n };\n\n _this.increaseDecrease = function (ev) {\n if (ev.keyCode === 38) {\n ev.stopPropagation();\n ev.preventDefault();\n\n _this.onChange(_this.props.value + FIELD_MULTIPLIER[ev.currentTarget.name]);\n } else if (ev.keyCode === 40) {\n ev.stopPropagation();\n ev.preventDefault();\n\n _this.onChange(_this.props.value - FIELD_MULTIPLIER[ev.currentTarget.name]);\n }\n };\n\n _this.internalFieldChange = function (ev) {\n var field = ev.currentTarget.name;\n var displayValue = ev.currentTarget.value.replace(/[^0-9]/, '').substr(-2, 2);\n var parsedValue = parseInt(displayValue, 10) || 0;\n var parsedValueAdjusted = Math.max(Math.min(parsedValue, FIELD_MIN_MAX[field].max), FIELD_MIN_MAX[field].min);\n\n if (parsedValueAdjusted !== parsedValue) {\n // displayValue = ('' + parsedValueAdjusted).padStart(2, '0');\n parsedValue = parsedValueAdjusted;\n }\n\n if (_this.props.onChange) {\n var timeParts = _this.getParts();\n\n timeParts[field] = parsedValue;\n\n var newValue = _this.computeTime(timeParts);\n\n _this.onChange(newValue);\n }\n };\n\n _this.getParts = function () {\n var _this$props = _this.props,\n value = _this$props.value,\n min = _this$props.min,\n max = _this$props.max;\n var displayValue = Math.max(min, Math.min(value, max));\n var hour = Math.floor(displayValue / FIELD_MULTIPLIER.hour);\n var hourRemaining = displayValue % FIELD_MULTIPLIER.hour;\n var minute = Math.floor(hourRemaining / FIELD_MULTIPLIER.minute);\n var minuteRemaining = hourRemaining % FIELD_MULTIPLIER.minute;\n var second = Math.floor(minuteRemaining / FIELD_MULTIPLIER.second);\n var millisecond = minuteRemaining % FIELD_MULTIPLIER.second;\n return {\n hour: hour,\n minute: minute,\n second: second,\n millisecond: millisecond\n };\n };\n\n _this.computeTime = function (parts) {\n return parts.hour * FIELD_MULTIPLIER.hour + parts.minute * FIELD_MULTIPLIER.minute + parts.second * FIELD_MULTIPLIER.second + parts.millisecond;\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(TimePicker, [{\n key: \"render\",\n value: function render() {\n var timeParts = this.getParts();\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: \"time-picker\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 114\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n type: \"text\",\n name: \"second\",\n className: \"time-picker__unit\",\n size: 2,\n onChange: this.internalFieldChange,\n value: ('' + timeParts.second).padStart(2, '0'),\n onKeyDown: this.increaseDecrease,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 115\n },\n __self: this\n }), \":\", react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n type: \"text\",\n name: \"minute\",\n className: \"time-picker__unit\",\n size: 2,\n onChange: this.internalFieldChange,\n value: ('' + timeParts.minute).padStart(2, '0'),\n onKeyDown: this.increaseDecrease,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 125\n },\n __self: this\n }), \":\", react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n type: \"text\",\n name: \"hour\",\n className: \"time-picker__unit\",\n size: 2,\n onChange: this.internalFieldChange,\n value: ('' + timeParts.hour).padStart(2, '0'),\n onKeyDown: this.increaseDecrease,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 135\n },\n __self: this\n }));\n }\n }]);\n\n return TimePicker;\n}(react__WEBPACK_IMPORTED_MODULE_5___default.a.Component);\n\nTimePicker.propTypes = {\n min: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n max: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n value: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\nTimePicker.defaultProps = {\n min: 0,\n max: TWENTY_FOUR_HOUR - 1,\n value: 0\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"withTheme\"])()(TimePicker));\n\n//# sourceURL=webpack:///./src/components/TimePicker/TimePicker.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _TimePicker_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./TimePicker.scss */ \"./src/components/TimePicker/TimePicker.scss\");\n/* harmony import */ var _TimePicker_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_TimePicker_scss__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/TimePicker/TimePicker.js\";\n\n\n\n\nvar FIELD_MULTIPLIER = {\n second: 1000,\n minute: 60 * 1000,\n hour: 60 * 60 * 1000\n};\nvar FIELD_MIN_MAX = {\n second: {\n min: 0,\n max: 60\n },\n minute: {\n min: 0,\n max: 60\n },\n hour: {\n min: 0,\n max: 23\n }\n};\nvar TWENTY_FOUR_HOUR = 24 * 60 * 60 * 1000;\n\nvar TimePicker =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TimePicker, _React$Component);\n\n function TimePicker(props) {\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, TimePicker);\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TimePicker).call(this, props));\n\n _this.onChange = function (value) {\n return _this.props.onChange && _this.props.onChange(_this.applyMinMax(value));\n };\n\n _this.applyMinMax = function (value) {\n return Math.max(_this.props.min, Math.min(_this.props.max, value));\n };\n\n _this.increaseDecrease = function (ev) {\n if (ev.keyCode === 38) {\n ev.stopPropagation();\n ev.preventDefault();\n\n _this.onChange(_this.props.value + FIELD_MULTIPLIER[ev.currentTarget.name]);\n } else if (ev.keyCode === 40) {\n ev.stopPropagation();\n ev.preventDefault();\n\n _this.onChange(_this.props.value - FIELD_MULTIPLIER[ev.currentTarget.name]);\n }\n };\n\n _this.internalFieldChange = function (ev) {\n var field = ev.currentTarget.name;\n var displayValue = ev.currentTarget.value.replace(/[^0-9]/, '').substr(-2, 2);\n var parsedValue = parseInt(displayValue, 10) || 0;\n var parsedValueAdjusted = Math.max(Math.min(parsedValue, FIELD_MIN_MAX[field].max), FIELD_MIN_MAX[field].min);\n\n if (parsedValueAdjusted !== parsedValue) {\n // displayValue = ('' + parsedValueAdjusted).padStart(2, '0');\n parsedValue = parsedValueAdjusted;\n }\n\n if (_this.props.onChange) {\n var timeParts = _this.getParts();\n\n timeParts[field] = parsedValue;\n\n var newValue = _this.computeTime(timeParts);\n\n _this.onChange(newValue);\n }\n };\n\n _this.getParts = function () {\n var _this$props = _this.props,\n value = _this$props.value,\n min = _this$props.min,\n max = _this$props.max;\n var displayValue = Math.max(min, Math.min(value, max));\n var hour = Math.floor(displayValue / FIELD_MULTIPLIER.hour);\n var hourRemaining = displayValue % FIELD_MULTIPLIER.hour;\n var minute = Math.floor(hourRemaining / FIELD_MULTIPLIER.minute);\n var minuteRemaining = hourRemaining % FIELD_MULTIPLIER.minute;\n var second = Math.floor(minuteRemaining / FIELD_MULTIPLIER.second);\n var millisecond = minuteRemaining % FIELD_MULTIPLIER.second;\n return {\n hour: hour,\n minute: minute,\n second: second,\n millisecond: millisecond\n };\n };\n\n _this.computeTime = function (parts) {\n return parts.hour * FIELD_MULTIPLIER.hour + parts.minute * FIELD_MULTIPLIER.minute + parts.second * FIELD_MULTIPLIER.second + parts.millisecond;\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(TimePicker, [{\n key: \"render\",\n value: function render() {\n var timeParts = this.getParts();\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: \"time-picker\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 114\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n type: \"text\",\n name: \"second\",\n className: \"time-picker__unit\",\n size: 2,\n onChange: this.internalFieldChange,\n value: ('' + timeParts.second).padStart(2, '0'),\n onKeyDown: this.increaseDecrease,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 115\n },\n __self: this\n }), \":\", react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n type: \"text\",\n name: \"minute\",\n className: \"time-picker__unit\",\n size: 2,\n onChange: this.internalFieldChange,\n value: ('' + timeParts.minute).padStart(2, '0'),\n onKeyDown: this.increaseDecrease,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 125\n },\n __self: this\n }), \":\", react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"input\", {\n type: \"text\",\n name: \"hour\",\n className: \"time-picker__unit\",\n size: 2,\n onChange: this.internalFieldChange,\n value: ('' + timeParts.hour).padStart(2, '0'),\n onKeyDown: this.increaseDecrease,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 135\n },\n __self: this\n }));\n }\n }]);\n\n return TimePicker;\n}(react__WEBPACK_IMPORTED_MODULE_5___default.a.Component);\n\nTimePicker.propTypes = {\n min: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n max: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n value: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number,\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func\n};\nTimePicker.defaultProps = {\n min: 0,\n max: TWENTY_FOUR_HOUR - 1,\n value: 0\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"withTheme\"])()(TimePicker));\n\n//# sourceURL=webpack:///./src/components/TimePicker/TimePicker.js?");
/***/ }),
@@ -10694,7 +10706,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _TimelineMarker_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TimelineMarker.scss */ \"./src/components/TimelineMarker/TimelineMarker.scss\");\n/* harmony import */ var _TimelineMarker_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_TimelineMarker_scss__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/TimelineMarker/TimelineMarker.js\";\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default.a.block('timeline-marker');\n\nvar TimelineMarker =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TimelineMarker, _Component);\n\n function TimelineMarker() {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, TimelineMarker);\n\n return Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TimelineMarker).apply(this, arguments));\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(TimelineMarker, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n showTooltip = _this$props.showTooltip,\n onMouseDown = _this$props.onMouseDown,\n tooltipStyle = _this$props.tooltipStyle,\n tooltip = _this$props.tooltip,\n bookmark = _this$props.bookmark;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: $style.modifiers({\n bookmark: bookmark,\n marker: !bookmark\n }),\n style: {\n left: \"\".concat(x, \"%\")\n },\n onMouseDown: onMouseDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 42\n },\n __self: this\n }, showTooltip ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: $style.element('tooltip'),\n style: tooltipStyle,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 48\n },\n __self: this\n }, tooltip) : null);\n }\n }]);\n\n return TimelineMarker;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nTimelineMarker.propTypes = {\n /** percentage position for the marker */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Function that returns a mouse down event handler */\n onMouseDown: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Is bookmark variation */\n bookmark: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Tooltip is visible */\n showTooltip: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Tooltip css styles */\n tooltipStyle: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.any,\n\n /** Tooltip to show */\n tooltip: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string\n};\nTimelineMarker.defaultProps = {\n x: 0,\n bookmark: false,\n onMouseDown: null,\n tooltipStyle: {}\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimelineMarker);\n\n//# sourceURL=webpack:///./src/components/TimelineMarker/TimelineMarker.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _TimelineMarker_scss__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./TimelineMarker.scss */ \"./src/components/TimelineMarker/TimelineMarker.scss\");\n/* harmony import */ var _TimelineMarker_scss__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_TimelineMarker_scss__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/TimelineMarker/TimelineMarker.js\";\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_8___default.a.block('timeline-marker');\n\nvar TimelineMarker =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TimelineMarker, _Component);\n\n function TimelineMarker() {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, TimelineMarker);\n\n return Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TimelineMarker).apply(this, arguments));\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(TimelineMarker, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n x = _this$props.x,\n showTooltip = _this$props.showTooltip,\n onMouseDown = _this$props.onMouseDown,\n tooltipStyle = _this$props.tooltipStyle,\n tooltip = _this$props.tooltip,\n bookmark = _this$props.bookmark;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: $style.modifiers({\n bookmark: bookmark,\n marker: !bookmark\n }),\n style: {\n left: \"\".concat(x, \"%\")\n },\n onMouseDown: onMouseDown,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 42\n },\n __self: this\n }, showTooltip ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"span\", {\n className: $style.element('tooltip'),\n style: tooltipStyle,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 48\n },\n __self: this\n }, tooltip) : null);\n }\n }]);\n\n return TimelineMarker;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nTimelineMarker.propTypes = {\n /** percentage position for the marker */\n x: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n\n /** Function that returns a mouse down event handler */\n onMouseDown: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n\n /** Is bookmark variation */\n bookmark: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Tooltip is visible */\n showTooltip: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Tooltip css styles */\n tooltipStyle: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.any,\n\n /** Tooltip to show */\n tooltip: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string\n};\nTimelineMarker.defaultProps = {\n x: 0,\n bookmark: false,\n onMouseDown: null,\n tooltipStyle: {}\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TimelineMarker);\n\n//# sourceURL=webpack:///./src/components/TimelineMarker/TimelineMarker.js?");
/***/ }),
@@ -10717,7 +10729,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/format/index.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(date_fns_format__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _TimelineMarker_TimelineMarker__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../TimelineMarker/TimelineMarker */ \"./src/components/TimelineMarker/TimelineMarker.js\");\n/* harmony import */ var _Playhead_Playhead__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Playhead/Playhead */ \"./src/components/Playhead/Playhead.js\");\n/* harmony import */ var _TimelineScrubber_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TimelineScrubber.scss */ \"./src/components/TimelineScrubber/TimelineScrubber.scss\");\n/* harmony import */ var _TimelineScrubber_scss__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_TimelineScrubber_scss__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/TimelineScrubber/TimelineScrubber.js\";\n\n\n\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default.a.block('timeline-scrubber');\n\nfunction getPalletXPosition(palletW, clientX, windowW) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 15;\n var halfPalletW = palletW / 2;\n\n if (clientX - halfPalletW - offset <= 0) {\n return offset;\n }\n\n if (clientX + halfPalletW + offset >= windowW) {\n return windowW - palletW - offset;\n }\n\n return clientX - halfPalletW;\n}\n\nvar TimelineScrubber =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(TimelineScrubber, _Component);\n\n function TimelineScrubber() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, TimelineScrubber);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TimelineScrubber)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isHovering: false,\n hoverTime: 0\n };\n _this.container = react__WEBPACK_IMPORTED_MODULE_6___default.a.createRef();\n _this.tooltip = react__WEBPACK_IMPORTED_MODULE_6___default.a.createRef();\n\n _this.timeToPercent = function (time) {\n return time / _this.props.runTime * 100;\n };\n\n _this.resolveTime = function (movement, time, markerIndex) {\n if (movement && movement.selectedPoint === markerIndex) {\n return time + movement.deltaTime;\n }\n\n return time;\n };\n\n _this.timeToLabel = function (time) {\n if (time > _this.props.runTime) {\n return _this.timeToLabel(_this.props.runTime);\n }\n\n if (time < 0) {\n return _this.timeToLabel(0);\n }\n\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(time + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return 'Invalid time';\n }\n\n var format = time >= 3600000 ? 'hh:mm:ss.SS' : 'mm:ss.SS';\n return date_fns_format__WEBPACK_IMPORTED_MODULE_9___default()(date, format);\n };\n\n _this.getClickedTime = function (ev) {\n var bounds = ev.currentTarget.getBoundingClientRect();\n var positionRatio = (ev.pageX - bounds.left) / bounds.width;\n return positionRatio * _this.props.runTime;\n };\n\n _this.getTooltipStyle = function (timePointIndex, timePoints) {\n return {\n transform: timePointIndex === 0 ? 'translate(0)' : timePointIndex === timePoints.length - 1 ? 'translate(-100%)' : 'translate(-50%)'\n };\n };\n\n _this.handleAddPoint = function (ev) {\n var time = _this.getClickedTime(ev);\n\n _this.props.onClickPoint(time);\n };\n\n _this.dragStart = function (element) {\n return function (e) {\n return _this.props.dragStart(element, e);\n };\n };\n\n _this.onMouseEnter = function () {\n return _this.setState({\n isHovering: true\n });\n };\n\n _this.onMouseLeave = function () {\n return _this.setState({\n isHovering: false\n });\n };\n\n _this.onMouseMove = function (e) {\n var bounds = e.currentTarget.getBoundingClientRect();\n var positionRatio = (e.pageX - bounds.left) / bounds.width;\n\n _this.setState({\n hoverTime: _this.timeToLabel(positionRatio * _this.props.runTime)\n });\n\n var pos = getPalletXPosition(80, e.clientX + _this.props.x, bounds.width, 5);\n _this.tooltip.style.left = \"\".concat(pos, \"px\");\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TimelineScrubber, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n currentTime = _this$props.currentTime,\n timePoints = _this$props.timePoints,\n x = _this$props.x,\n width = _this$props.width,\n zoom = _this$props.zoom,\n isPlayheadUpdating = _this$props.isPlayheadUpdating,\n playheadX = _this$props.playheadX,\n showTimes = _this$props.showTimes,\n markers = _this$props.markers;\n var _this$state = this.state,\n isHovering = _this$state.isHovering,\n hoverTime = _this$state.hoverTime;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n ref: function ref(_ref2) {\n return _this2.container = _ref2;\n },\n className: $style,\n onDoubleClick: this.handleAddPoint,\n tabIndex: 0,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onMouseMove: this.onMouseMove,\n onMouseDown: this.dragStart({\n type: 'scrubber'\n }),\n style: {\n marginLeft: -x,\n width: width * zoom\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 164\n },\n __self: this\n }, Object.values(markers).map(function (marker, markerIndex) {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimelineMarker_TimelineMarker__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n key: \"marker-\".concat(markerIndex),\n bookmark: true,\n x: _this2.timeToPercent(_this2.resolveTime(_this2.props.markerMovement, marker.time, markerIndex)),\n onMouseDown: _this2.dragStart(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, marker, {\n index: markerIndex,\n type: 'marker'\n })),\n showTooltip: showTimes,\n tooltipStyles: _this2.getTooltipStyle(markerIndex, timePoints),\n tooltip: _this2.timeToLabel(_this2.resolveTime(_this2.props.markerMovement, marker.time, markerIndex)),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 179\n },\n __self: this\n });\n }), timePoints.map(function (timePoint, timePointIndex) {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimelineMarker_TimelineMarker__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n key: \"tp-\".concat(timePointIndex),\n x: _this2.timeToPercent(_this2.resolveTime(_this2.props.bubbleMarkerMovement, timePoint, timePointIndex)),\n onMouseDown: _this2.dragStart(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, timePoint, {\n index: timePointIndex,\n type: 'time-point'\n })),\n showTooltip: showTimes && timePointIndex !== 0 && timePointIndex < timePoints.length - 1,\n tooltipStyles: _this2.getTooltipStyle(timePointIndex, timePoints),\n tooltip: _this2.timeToLabel(_this2.resolveTime(_this2.props.bubbleMarkerMovement, timePoint, timePointIndex)),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 206\n },\n __self: this\n });\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_Playhead_Playhead__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n x: this.timeToPercent(isPlayheadUpdating ? playheadX : currentTime),\n isUpdating: isPlayheadUpdating,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 235\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n className: $style.element('tooltip'),\n ref: function ref(_ref) {\n return _this2.tooltip = _ref;\n },\n style: {\n opacity: isHovering ? 1 : 0\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 239\n },\n __self: this\n }, hoverTime));\n }\n }]);\n\n return TimelineScrubber;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nTimelineScrubber.propTypes = {\n /** Current time of the audio in milliseconds */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number.isRequired,\n\n /** Total time of the audio in milliseconds */\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number.isRequired,\n\n /** the current zoom level */\n zoom: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number.isRequired,\n\n /** Time points */\n timePoints: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number),\n\n /** Handler for when the currentTime is updated */\n onUpdateTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Handler for when point position is updated */\n onUpdatePoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Handler for when time point position is updated */\n onUpdateTimePoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** on drag start */\n dragStart: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** show times */\n showTimes: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool,\n\n /** current viewport position */\n x: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n\n /** playhead is dragging */\n isPlayheadUpdating: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool,\n\n /** playhead Drag X */\n playheadX: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n\n /** Current bubble marker and its movement */\n bubbleMarkerMovement: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.shape({\n selectedPoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n deltaTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number\n }),\n\n /** Current marker and its movement */\n markerMovement: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.shape({\n selectedPoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n deltaTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number\n }),\n\n /** When a point is clicked */\n onClickPoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func\n};\nTimelineScrubber.defaultProps = {\n onUpdateTime: function onUpdateTime() {},\n onUpdatePoint: null,\n // This changes behaviour depending if null.\n onUpdateTimePoint: null,\n // This changes behaviour depending if null.\n timePoints: [],\n zoom: 1.0,\n showTimes: false,\n isPlayheadUpdating: false,\n playheadX: 0\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__[\"withTheme\"])()(TimelineScrubber));\n\n//# sourceURL=webpack:///./src/components/TimelineScrubber/TimelineScrubber.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! date-fns/format */ \"./node_modules/date-fns/format/index.js\");\n/* harmony import */ var date_fns_format__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(date_fns_format__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _TimelineMarker_TimelineMarker__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../TimelineMarker/TimelineMarker */ \"./src/components/TimelineMarker/TimelineMarker.js\");\n/* harmony import */ var _Playhead_Playhead__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../Playhead/Playhead */ \"./src/components/Playhead/Playhead.js\");\n/* harmony import */ var _TimelineScrubber_scss__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./TimelineScrubber.scss */ \"./src/components/TimelineScrubber/TimelineScrubber.scss\");\n/* harmony import */ var _TimelineScrubber_scss__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_TimelineScrubber_scss__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/TimelineScrubber/TimelineScrubber.js\";\n\n\n\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default.a.block('timeline-scrubber');\n\nfunction getPalletXPosition(palletW, clientX, windowW) {\n var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 15;\n var halfPalletW = palletW / 2;\n\n if (clientX - halfPalletW - offset <= 0) {\n return offset;\n }\n\n if (clientX + halfPalletW + offset >= windowW) {\n return windowW - palletW - offset;\n }\n\n return clientX - halfPalletW;\n}\n\nvar TimelineScrubber =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(TimelineScrubber, _Component);\n\n function TimelineScrubber() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, TimelineScrubber);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TimelineScrubber)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isHovering: false,\n hoverTime: 0\n };\n _this.container = react__WEBPACK_IMPORTED_MODULE_6___default.a.createRef();\n _this.tooltip = react__WEBPACK_IMPORTED_MODULE_6___default.a.createRef();\n\n _this.timeToPercent = function (time) {\n return time / _this.props.runTime * 100;\n };\n\n _this.resolveTime = function (movement, time, markerIndex) {\n if (movement && movement.selectedPoint === markerIndex) {\n return time + movement.deltaTime;\n }\n\n return time;\n };\n\n _this.timeToLabel = function (time) {\n if (time > _this.props.runTime) {\n return _this.timeToLabel(_this.props.runTime);\n }\n\n if (time < 0) {\n return _this.timeToLabel(0);\n }\n\n var timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n var date = new Date(time + timezoneOffset);\n\n if (date.toString() === 'Invalid Date') {\n return 'Invalid time';\n }\n\n var format = time >= 3600000 ? 'hh:mm:ss.SS' : 'mm:ss.SS';\n return date_fns_format__WEBPACK_IMPORTED_MODULE_9___default()(date, format);\n };\n\n _this.getClickedTime = function (ev) {\n var bounds = ev.currentTarget.getBoundingClientRect();\n var positionRatio = (ev.pageX - bounds.left) / bounds.width;\n return positionRatio * _this.props.runTime;\n };\n\n _this.getTooltipStyle = function (timePointIndex, timePoints) {\n return {\n transform: timePointIndex === 0 ? 'translate(0)' : timePointIndex === timePoints.length - 1 ? 'translate(-100%)' : 'translate(-50%)'\n };\n };\n\n _this.handleAddPoint = function (ev) {\n var time = _this.getClickedTime(ev);\n\n _this.props.onClickPoint(time);\n };\n\n _this.dragStart = function (element) {\n return function (e) {\n return _this.props.dragStart(element, e);\n };\n };\n\n _this.onMouseEnter = function () {\n return _this.setState({\n isHovering: true\n });\n };\n\n _this.onMouseLeave = function () {\n return _this.setState({\n isHovering: false\n });\n };\n\n _this.onMouseMove = function (e) {\n var bounds = e.currentTarget.getBoundingClientRect();\n var positionRatio = (e.pageX - bounds.left) / bounds.width;\n\n _this.setState({\n hoverTime: _this.timeToLabel(positionRatio * _this.props.runTime)\n });\n\n var pos = getPalletXPosition(80, e.clientX + _this.props.x, bounds.width, 5);\n _this.tooltip.style.left = \"\".concat(pos, \"px\");\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(TimelineScrubber, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n currentTime = _this$props.currentTime,\n timePoints = _this$props.timePoints,\n x = _this$props.x,\n width = _this$props.width,\n zoom = _this$props.zoom,\n isPlayheadUpdating = _this$props.isPlayheadUpdating,\n playheadX = _this$props.playheadX,\n showTimes = _this$props.showTimes,\n markers = _this$props.markers;\n var _this$state = this.state,\n isHovering = _this$state.isHovering,\n hoverTime = _this$state.hoverTime;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n ref: function ref(_ref2) {\n return _this2.container = _ref2;\n },\n className: $style,\n onDoubleClick: this.handleAddPoint,\n tabIndex: 0,\n onMouseEnter: this.onMouseEnter,\n onMouseLeave: this.onMouseLeave,\n onMouseMove: this.onMouseMove,\n onMouseDown: this.dragStart({\n type: 'scrubber'\n }),\n style: {\n marginLeft: -x,\n width: width * zoom\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 164\n },\n __self: this\n }, Object.values(markers).map(function (marker, markerIndex) {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimelineMarker_TimelineMarker__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n key: \"marker-\".concat(markerIndex),\n bookmark: true,\n x: _this2.timeToPercent(_this2.resolveTime(_this2.props.markerMovement, marker.time, markerIndex)),\n onMouseDown: _this2.dragStart(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, marker, {\n index: markerIndex,\n type: 'marker'\n })),\n showTooltip: showTimes,\n tooltipStyles: _this2.getTooltipStyle(markerIndex, timePoints),\n tooltip: _this2.timeToLabel(_this2.resolveTime(_this2.props.markerMovement, marker.time, markerIndex)),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 179\n },\n __self: this\n });\n }), timePoints.map(function (timePoint, timePointIndex) {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_TimelineMarker_TimelineMarker__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n key: \"tp-\".concat(timePointIndex),\n x: _this2.timeToPercent(_this2.resolveTime(_this2.props.bubbleMarkerMovement, timePoint, timePointIndex)),\n onMouseDown: _this2.dragStart(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, timePoint, {\n index: timePointIndex,\n type: 'time-point'\n })),\n showTooltip: showTimes && timePointIndex !== 0 && timePointIndex < timePoints.length - 1,\n tooltipStyles: _this2.getTooltipStyle(timePointIndex, timePoints),\n tooltip: _this2.timeToLabel(_this2.resolveTime(_this2.props.bubbleMarkerMovement, timePoint, timePointIndex)),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 206\n },\n __self: this\n });\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_Playhead_Playhead__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n x: this.timeToPercent(isPlayheadUpdating ? playheadX : currentTime),\n isUpdating: isPlayheadUpdating,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 235\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n className: $style.element('tooltip'),\n ref: function ref(_ref) {\n return _this2.tooltip = _ref;\n },\n style: {\n opacity: isHovering ? 1 : 0\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 239\n },\n __self: this\n }, hoverTime));\n }\n }]);\n\n return TimelineScrubber;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nTimelineScrubber.propTypes = {\n /** Current time of the audio in milliseconds */\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number.isRequired,\n\n /** Total time of the audio in milliseconds */\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number.isRequired,\n\n /** the current zoom level */\n zoom: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number.isRequired,\n\n /** Time points */\n timePoints: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.arrayOf(prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number),\n\n /** Handler for when the currentTime is updated */\n onUpdateTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Handler for when point position is updated */\n onUpdatePoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** Handler for when time point position is updated */\n onUpdateTimePoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** on drag start */\n dragStart: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func,\n\n /** show times */\n showTimes: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool,\n\n /** current viewport position */\n x: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n\n /** playhead is dragging */\n isPlayheadUpdating: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.bool,\n\n /** playhead Drag X */\n playheadX: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n\n /** Current bubble marker and its movement */\n bubbleMarkerMovement: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.shape({\n selectedPoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n deltaTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number\n }),\n\n /** Current marker and its movement */\n markerMovement: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.shape({\n selectedPoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number,\n deltaTime: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.number\n }),\n\n /** When a point is clicked */\n onClickPoint: prop_types__WEBPACK_IMPORTED_MODULE_7___default.a.func\n};\nTimelineScrubber.defaultProps = {\n onUpdateTime: function onUpdateTime() {},\n onUpdatePoint: null,\n // This changes behaviour depending if null.\n onUpdateTimePoint: null,\n // This changes behaviour depending if null.\n timePoints: [],\n zoom: 1.0,\n showTimes: false,\n isPlayheadUpdating: false,\n playheadX: 0\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__[\"withTheme\"])()(TimelineScrubber));\n\n//# sourceURL=webpack:///./src/components/TimelineScrubber/TimelineScrubber.js?");
/***/ }),
@@ -10740,7 +10752,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/TransportBarButton/TransportBarButton.js\";\n\n\n\n\nvar TransportBarButton =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TransportBarButton, _Component);\n\n function TransportBarButton() {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, TransportBarButton);\n\n return Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TransportBarButton).apply(this, arguments));\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(TransportBarButton, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7___default.a, {\n color: \"primary\",\n disabled: this.props.disabled,\n title: this.props.title,\n onClick: this.props.disabled ? function () {} : this.props.onClick,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, this.props.children);\n }\n }]);\n\n return TransportBarButton;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nTransportBarButton.propTypes = {\n /** Title of button, for accessibility */\n title: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string.isRequired,\n\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired\n};\nTransportBarButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransportBarButton);\n\n//# sourceURL=webpack:///./src/components/TransportBarButton/TransportBarButton.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/TransportBarButton/TransportBarButton.js\";\n\n\n\n\nvar TransportBarButton =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(TransportBarButton, _Component);\n\n function TransportBarButton() {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, TransportBarButton);\n\n return Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(TransportBarButton).apply(this, arguments));\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(TransportBarButton, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_7___default.a, {\n color: \"primary\",\n disabled: this.props.disabled,\n title: this.props.title,\n onClick: this.props.disabled ? function () {} : this.props.onClick,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, this.props.children);\n }\n }]);\n\n return TransportBarButton;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\nTransportBarButton.propTypes = {\n /** Title of button, for accessibility */\n title: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string.isRequired,\n\n /** Disabled state of button */\n disabled: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool,\n\n /** Handler for when button is clicked */\n onClick: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired\n};\nTransportBarButton.defaultProps = {\n disabled: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (TransportBarButton);\n\n//# sourceURL=webpack:///./src/components/TransportBarButton/TransportBarButton.js?");
/***/ }),
@@ -10752,7 +10764,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Toolbar */ \"./node_modules/@material-ui/core/Toolbar/index.js\");\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/AddCircle */ \"./node_modules/@material-ui/icons/AddCircle.js\");\n/* harmony import */ var _material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/Save */ \"./node_modules/@material-ui/icons/Save.js\");\n/* harmony import */ var _material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/icons/Undo */ \"./node_modules/@material-ui/icons/Undo.js\");\n/* harmony import */ var _material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/icons/Redo */ \"./node_modules/@material-ui/icons/Redo.js\");\n/* harmony import */ var _material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/icons/Settings */ \"./node_modules/@material-ui/icons/Settings.js\");\n/* harmony import */ var _material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _VariationsAppBar_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./VariationsAppBar.scss */ \"./src/components/VariationsAppBar/VariationsAppBar.scss\");\n/* harmony import */ var _VariationsAppBar_scss__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_VariationsAppBar_scss__WEBPACK_IMPORTED_MODULE_11__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/VariationsAppBar/VariationsAppBar.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar $block = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default.a.block('variations-app-bar');\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 51\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 60\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 69\n },\n __self: undefined\n});\n\nvar _ref4 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 77\n },\n __self: undefined\n});\n\nvar _ref5 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 84\n },\n __self: undefined\n});\n\nvar VariationsAppBar = function VariationsAppBar(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: props.noHeader ? $block + '-no-header' : $block,\n style: {\n position: 'static'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 17\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n style: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n marginLeft: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 22\n },\n __self: this\n }, props.noHeader ? null : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"h6\",\n color: \"inherit\",\n style: {\n fontWeight: 'normal'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33\n },\n __self: this\n }, \"Timeliner\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 44\n },\n __self: this\n }, props.onSave || props.hasResource ? null : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onImportButtonClicked,\n title: \"Open audio file\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 46\n },\n __self: this\n }, _ref), props.onSave ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onSave,\n title: props.onSave ? 'Save timeline' : 'No backend set up to save',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 55\n },\n __self: this\n }, _ref2) : null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onUndo,\n disabled: (props.canUndo || false) === false,\n title: \"Undo\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }, _ref3), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onRedo,\n disabled: (props.canRedo || false) === false,\n title: \"Redo\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 71\n },\n __self: this\n }, _ref4), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onSettingsButtonClicked,\n title: \"Settings\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 79\n },\n __self: this\n }, _ref5))));\n};\n\nVariationsAppBar.propTypes = {\n /** action opens the import popup */\n onImportButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n onUndo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n onRedo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n canUndo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n canRedo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Invokes the save action */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Opens the project settings modal */\n onSettingsButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n noHeader: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (VariationsAppBar);\n\n//# sourceURL=webpack:///./src/components/VariationsAppBar/VariationsAppBar.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Toolbar */ \"./node_modules/@material-ui/core/Toolbar/index.js\");\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Typography */ \"./node_modules/@material-ui/core/Typography/index.js\");\n/* harmony import */ var _material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/AddCircle */ \"./node_modules/@material-ui/icons/AddCircle.js\");\n/* harmony import */ var _material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/Save */ \"./node_modules/@material-ui/icons/Save.js\");\n/* harmony import */ var _material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/icons/Undo */ \"./node_modules/@material-ui/icons/Undo.js\");\n/* harmony import */ var _material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/icons/Redo */ \"./node_modules/@material-ui/icons/Redo.js\");\n/* harmony import */ var _material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/icons/Settings */ \"./node_modules/@material-ui/icons/Settings.js\");\n/* harmony import */ var _material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _VariationsAppBar_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./VariationsAppBar.scss */ \"./src/components/VariationsAppBar/VariationsAppBar.scss\");\n/* harmony import */ var _VariationsAppBar_scss__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_VariationsAppBar_scss__WEBPACK_IMPORTED_MODULE_11__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/VariationsAppBar/VariationsAppBar.js\";\n\n\n\n\n\n\n\n\n\n\n\n\nvar $block = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_10___default.a.block('variations-app-bar');\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_AddCircle__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 51\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Save__WEBPACK_IMPORTED_MODULE_6___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 60\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Undo__WEBPACK_IMPORTED_MODULE_7___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 69\n },\n __self: undefined\n});\n\nvar _ref4 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Redo__WEBPACK_IMPORTED_MODULE_8___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 77\n },\n __self: undefined\n});\n\nvar _ref5 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Settings__WEBPACK_IMPORTED_MODULE_9___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 84\n },\n __self: undefined\n});\n\nvar VariationsAppBar = function VariationsAppBar(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: props.noHeader ? $block + '-no-header' : $block,\n style: {\n position: 'static'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 17\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_2___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n style: {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n marginLeft: 10\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 22\n },\n __self: this\n }, props.noHeader ? null : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Typography__WEBPACK_IMPORTED_MODULE_3___default.a, {\n variant: \"h6\",\n color: \"inherit\",\n style: {\n fontWeight: 'normal'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33\n },\n __self: this\n }, \"Timeliner\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 44\n },\n __self: this\n }, props.onSave || props.hasResource ? null : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onImportButtonClicked,\n title: \"Open media file\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 46\n },\n __self: this\n }, _ref), props.onSave ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onSave,\n title: props.onSave ? 'Save timeline' : 'No backend set up to save',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 55\n },\n __self: this\n }, _ref2) : null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onUndo,\n disabled: (props.canUndo || false) === false,\n title: \"Undo\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 63\n },\n __self: this\n }, _ref3), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onRedo,\n disabled: (props.canRedo || false) === false,\n title: \"Redo\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 71\n },\n __self: this\n }, _ref4), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_4___default.a, {\n color: \"inherit\",\n onClick: props.onSettingsButtonClicked,\n title: \"Settings\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 79\n },\n __self: this\n }, _ref5))));\n};\n\nVariationsAppBar.propTypes = {\n /** action opens the import popup */\n onImportButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n onUndo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n onRedo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n canUndo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n canRedo: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool,\n\n /** Invokes the save action */\n onSave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Opens the project settings modal */\n onSettingsButtonClicked: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired,\n noHeader: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (VariationsAppBar);\n\n//# sourceURL=webpack:///./src/components/VariationsAppBar/VariationsAppBar.js?");
/***/ }),
@@ -10775,7 +10787,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/Slide */ \"./node_modules/@material-ui/core/Slide/index.js\");\n/* harmony import */ var _material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/VerifyDialog/VerifyDialog.js\";\n\n\n\n\n\n\n\n\n\n\nfunction Transition(props) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13___default.a, Object.assign({\n direction: \"up\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 12\n },\n __self: this\n }));\n}\n\nvar VerifyDialog =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(VerifyDialog, _React$Component);\n\n function VerifyDialog() {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, VerifyDialog);\n\n return Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(VerifyDialog).apply(this, arguments));\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(VerifyDialog, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n open = _this$props.open,\n onClose = _this$props.onClose,\n title = _this$props.title,\n description = _this$props.description,\n cancelText = _this$props.cancelText,\n agreeText = _this$props.agreeText,\n onProceed = _this$props.onProceed,\n doCancel = _this$props.doCancel;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8___default.a, {\n open: open,\n TransitionComponent: Transition,\n onClose: onClose,\n \"aria-labelledby\": \"alert-dialog-slide-title\",\n \"aria-describedby\": \"alert-dialog-slide-description\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 45\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default.a, {\n id: \"alert-dialog-slide-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 52\n },\n __self: this\n }, title), description && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 54\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11___default.a, {\n id: \"alert-dialog-slide-description\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 55\n },\n __self: this\n }, description)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 60\n },\n __self: this\n }, doCancel && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n onClick: onClose,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }, cancelText), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n onClick: onProceed,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }, agreeText)));\n }\n }]);\n\n return VerifyDialog;\n}(react__WEBPACK_IMPORTED_MODULE_5___default.a.Component);\n\nVerifyDialog.propTypes = {\n open: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n title: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n description: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n cancelText: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n agreeText: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n onProceed: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n doCancel: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool\n};\nVerifyDialog.defaultProps = {\n cancelText: 'Cancel',\n agreeText: 'Ok',\n open: false,\n doCancel: true\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (VerifyDialog);\n\n//# sourceURL=webpack:///./src/components/VerifyDialog/VerifyDialog.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/DialogContentText */ \"./node_modules/@material-ui/core/DialogContentText/index.js\");\n/* harmony import */ var _material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/core/Slide */ \"./node_modules/@material-ui/core/Slide/index.js\");\n/* harmony import */ var _material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/VerifyDialog/VerifyDialog.js\";\n\n\n\n\n\n\n\n\n\n\nfunction Transition(props) {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Slide__WEBPACK_IMPORTED_MODULE_13___default.a, Object.assign({\n direction: \"up\"\n }, props, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 12\n },\n __self: this\n }));\n}\n\nvar VerifyDialog =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(VerifyDialog, _React$Component);\n\n function VerifyDialog() {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, VerifyDialog);\n\n return Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(VerifyDialog).apply(this, arguments));\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(VerifyDialog, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n open = _this$props.open,\n onClose = _this$props.onClose,\n title = _this$props.title,\n description = _this$props.description,\n cancelText = _this$props.cancelText,\n agreeText = _this$props.agreeText,\n onProceed = _this$props.onProceed,\n doCancel = _this$props.doCancel;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_8___default.a, {\n open: open,\n TransitionComponent: Transition,\n onClose: onClose,\n \"aria-labelledby\": \"alert-dialog-slide-title\",\n \"aria-describedby\": \"alert-dialog-slide-description\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 45\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_12___default.a, {\n id: \"alert-dialog-slide-title\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 52\n },\n __self: this\n }, title), description && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_10___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 54\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogContentText__WEBPACK_IMPORTED_MODULE_11___default.a, {\n id: \"alert-dialog-slide-description\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 55\n },\n __self: this\n }, description)), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_9___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 60\n },\n __self: this\n }, doCancel && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n onClick: onClose,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }, cancelText), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n onClick: onProceed,\n color: \"primary\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 66\n },\n __self: this\n }, agreeText)));\n }\n }]);\n\n return VerifyDialog;\n}(react__WEBPACK_IMPORTED_MODULE_5___default.a.Component);\n\nVerifyDialog.propTypes = {\n open: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n onClose: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n title: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n description: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n cancelText: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n agreeText: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n onProceed: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n doCancel: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool\n};\nVerifyDialog.defaultProps = {\n cancelText: 'Cancel',\n agreeText: 'Ok',\n open: false,\n doCancel: true\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (VerifyDialog);\n\n//# sourceURL=webpack:///./src/components/VerifyDialog/VerifyDialog.js?");
/***/ }),
@@ -10787,7 +10799,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _VolumeSliderCompact_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./VolumeSliderCompact.scss */ \"./src/components/VolumeSliderCompact/VolumeSliderCompact.scss\");\n/* harmony import */ var _VolumeSliderCompact_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_VolumeSliderCompact_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/icons/VolumeUp */ \"./node_modules/@material-ui/icons/VolumeUp.js\");\n/* harmony import */ var _material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/icons/VolumeDown */ \"./node_modules/@material-ui/icons/VolumeDown.js\");\n/* harmony import */ var _material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/icons/VolumeOff */ \"./node_modules/@material-ui/icons/VolumeOff.js\");\n/* harmony import */ var _material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/lab/Slider */ \"./node_modules/@material-ui/lab/Slider/index.js\");\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/VolumeSliderCompact/VolumeSliderCompact.js\";\n\n\n\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default.a.block('volume-slider-compact');\nvar SPEAKER_ICON_SIZE = {\n width: 20,\n height: 20\n};\n\nvar VolumeSliderCompact =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(VolumeSliderCompact, _Component);\n\n function VolumeSliderCompact() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, VolumeSliderCompact);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(VolumeSliderCompact)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n previousVolume: null\n };\n\n _this.onVolumeInputChange = function (ev, value) {\n var onVolumeChanged = _this.props.onVolumeChanged;\n\n if (onVolumeChanged) {\n onVolumeChanged(parseInt(value, 10));\n }\n };\n\n _this.onToggle = function () {\n var _this$props = _this.props,\n volume = _this$props.volume,\n onVolumeChanged = _this$props.onVolumeChanged;\n var previousVolume = _this.state.previousVolume;\n\n if (onVolumeChanged) {\n if (volume === 0) {\n onVolumeChanged(previousVolume || 100);\n } else {\n _this.setState({\n previousVolume: volume\n });\n\n onVolumeChanged(0);\n }\n }\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(VolumeSliderCompact, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n volume = _this$props2.volume,\n flipped = _this$props2.flipped;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n className: $style.modifiers({\n flipped: flipped\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 58\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13___default.a, {\n min: 0,\n max: 100,\n value: volume,\n onChange: this.onVolumeInputChange,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 59\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n className: $style.element('muter'),\n onClick: this.onToggle,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, volume === 0 ? react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12___default.a, {\n style: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, SPEAKER_ICON_SIZE, {\n transform: 'translateX(1px)'\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 67\n },\n __self: this\n }) : volume <= 40 ? react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11___default.a, {\n style: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, SPEAKER_ICON_SIZE, {\n transform: 'translateX(-0.5px)'\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 71\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10___default.a, {\n style: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, SPEAKER_ICON_SIZE, {\n transform: 'translateX(1px)'\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 75\n },\n __self: this\n })));\n }\n }]);\n\n return VolumeSliderCompact;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nVolumeSliderCompact.propTypes = {\n /** Current volume value */\n volume: prop_types__WEBPACK_IMPORTED_MODULE_9___default.a.number.isRequired,\n\n /** Handler for when volume is changed */\n onVolumeChanged: prop_types__WEBPACK_IMPORTED_MODULE_9___default.a.func.isRequired,\n\n /** Flip the order of the slider and icon */\n flipped: prop_types__WEBPACK_IMPORTED_MODULE_9___default.a.bool\n};\nVolumeSliderCompact.defaultProps = {\n volume: 100,\n flipped: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (VolumeSliderCompact);\n\n//# sourceURL=webpack:///./src/components/VolumeSliderCompact/VolumeSliderCompact.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @fesk/bem-js */ \"./node_modules/@fesk/bem-js/lib/index.js\");\n/* harmony import */ var _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_fesk_bem_js__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _VolumeSliderCompact_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./VolumeSliderCompact.scss */ \"./src/components/VolumeSliderCompact/VolumeSliderCompact.scss\");\n/* harmony import */ var _VolumeSliderCompact_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_VolumeSliderCompact_scss__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/icons/VolumeUp */ \"./node_modules/@material-ui/icons/VolumeUp.js\");\n/* harmony import */ var _material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/icons/VolumeDown */ \"./node_modules/@material-ui/icons/VolumeDown.js\");\n/* harmony import */ var _material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/icons/VolumeOff */ \"./node_modules/@material-ui/icons/VolumeOff.js\");\n/* harmony import */ var _material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/lab/Slider */ \"./node_modules/@material-ui/lab/Slider/index.js\");\n/* harmony import */ var _material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/VolumeSliderCompact/VolumeSliderCompact.js\";\n\n\n\n\n\n\n\n\nvar $style = _fesk_bem_js__WEBPACK_IMPORTED_MODULE_7___default.a.block('volume-slider-compact');\nvar SPEAKER_ICON_SIZE = {\n width: 20,\n height: 20\n};\n\nvar VolumeSliderCompact =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(VolumeSliderCompact, _Component);\n\n function VolumeSliderCompact() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, VolumeSliderCompact);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(VolumeSliderCompact)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n previousVolume: null\n };\n\n _this.onVolumeInputChange = function (ev, value) {\n var onVolumeChanged = _this.props.onVolumeChanged;\n\n if (onVolumeChanged) {\n onVolumeChanged(parseInt(value, 10));\n }\n };\n\n _this.onToggle = function () {\n var _this$props = _this.props,\n volume = _this$props.volume,\n onVolumeChanged = _this$props.onVolumeChanged;\n var previousVolume = _this.state.previousVolume;\n\n if (onVolumeChanged) {\n if (volume === 0) {\n onVolumeChanged(previousVolume || 100);\n } else {\n _this.setState({\n previousVolume: volume\n });\n\n onVolumeChanged(0);\n }\n }\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(VolumeSliderCompact, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n volume = _this$props2.volume,\n flipped = _this$props2.flipped;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n className: $style.modifiers({\n flipped: flipped\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 58\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_lab_Slider__WEBPACK_IMPORTED_MODULE_13___default.a, {\n min: 0,\n max: 100,\n value: volume,\n onChange: this.onVolumeInputChange,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 59\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n className: $style.element('muter'),\n onClick: this.onToggle,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 65\n },\n __self: this\n }, volume === 0 ? react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_VolumeOff__WEBPACK_IMPORTED_MODULE_12___default.a, {\n style: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, SPEAKER_ICON_SIZE, {\n transform: 'translateX(1px)'\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 67\n },\n __self: this\n }) : volume <= 40 ? react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_VolumeDown__WEBPACK_IMPORTED_MODULE_11___default.a, {\n style: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, SPEAKER_ICON_SIZE, {\n transform: 'translateX(-0.5px)'\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 71\n },\n __self: this\n }) : react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_VolumeUp__WEBPACK_IMPORTED_MODULE_10___default.a, {\n style: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, SPEAKER_ICON_SIZE, {\n transform: 'translateX(1px)'\n }),\n __source: {\n fileName: _jsxFileName,\n lineNumber: 75\n },\n __self: this\n })));\n }\n }]);\n\n return VolumeSliderCompact;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nVolumeSliderCompact.propTypes = {\n /** Current volume value */\n volume: prop_types__WEBPACK_IMPORTED_MODULE_9___default.a.number.isRequired,\n\n /** Handler for when volume is changed */\n onVolumeChanged: prop_types__WEBPACK_IMPORTED_MODULE_9___default.a.func.isRequired,\n\n /** Flip the order of the slider and icon */\n flipped: prop_types__WEBPACK_IMPORTED_MODULE_9___default.a.bool\n};\nVolumeSliderCompact.defaultProps = {\n volume: 100,\n flipped: false\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (VolumeSliderCompact);\n\n//# sourceURL=webpack:///./src/components/VolumeSliderCompact/VolumeSliderCompact.js?");
/***/ }),
@@ -10810,7 +10822,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/ZoomIn */ \"./node_modules/@material-ui/icons/ZoomIn.js\");\n/* harmony import */ var _material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/ZoomOut */ \"./node_modules/@material-ui/icons/ZoomOut.js\");\n/* harmony import */ var _material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/YoutubeSearchedFor */ \"./node_modules/@material-ui/icons/YoutubeSearchedFor.js\");\n/* harmony import */ var _material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _ZoomControls_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ZoomControls.scss */ \"./src/components/ZoomControls/ZoomControls.scss\");\n/* harmony import */ var _ZoomControls_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_ZoomControls_scss__WEBPACK_IMPORTED_MODULE_6__);\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/components/ZoomControls/ZoomControls.js\";\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 16\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 23\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 30\n },\n __self: undefined\n});\n\nvar ZoomControls = function ZoomControls(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"zoom-controls\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 10\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default.a, {\n onClick: props.onZoomIn,\n disabled: !props.onZoomIn,\n title: \"Zoom In\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, _ref), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default.a, {\n onClick: props.onResetView,\n disabled: !props.onResetView,\n title: \"Reset View\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 18\n },\n __self: this\n }, _ref2), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default.a, {\n onClick: props.onZoomOut,\n disabled: !props.onZoomOut,\n title: \"Zoom Out\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 25\n },\n __self: this\n }, _ref3));\n};\n\nZoomControls.propTypes = {\n /** Handler for zooming in, will show disabled if null */\n onZoomIn: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Handler for zooming out, will show disabled if null */\n onZoomOut: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Handler for resetting view */\n onResetView: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func\n};\nZoomControls.defaultProps = {\n onZoomIn: null,\n onZoomOut: null,\n onResetView: null\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ZoomControls);\n\n//# sourceURL=webpack:///./src/components/ZoomControls/ZoomControls.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/IconButton */ \"./node_modules/@material-ui/core/IconButton/index.js\");\n/* harmony import */ var _material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/ZoomIn */ \"./node_modules/@material-ui/icons/ZoomIn.js\");\n/* harmony import */ var _material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/ZoomOut */ \"./node_modules/@material-ui/icons/ZoomOut.js\");\n/* harmony import */ var _material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/YoutubeSearchedFor */ \"./node_modules/@material-ui/icons/YoutubeSearchedFor.js\");\n/* harmony import */ var _material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _ZoomControls_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ZoomControls.scss */ \"./src/components/ZoomControls/ZoomControls.scss\");\n/* harmony import */ var _ZoomControls_scss__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_ZoomControls_scss__WEBPACK_IMPORTED_MODULE_6__);\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/components/ZoomControls/ZoomControls.js\";\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_ZoomIn__WEBPACK_IMPORTED_MODULE_3___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 16\n },\n __self: undefined\n});\n\nvar _ref2 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_YoutubeSearchedFor__WEBPACK_IMPORTED_MODULE_5___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 23\n },\n __self: undefined\n});\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_ZoomOut__WEBPACK_IMPORTED_MODULE_4___default.a, {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 30\n },\n __self: undefined\n});\n\nvar ZoomControls = function ZoomControls(props) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"zoom-controls\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 10\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default.a, {\n onClick: props.onZoomIn,\n disabled: !props.onZoomIn,\n title: \"Zoom In\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 11\n },\n __self: this\n }, _ref), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default.a, {\n onClick: props.onResetView,\n disabled: !props.onResetView,\n title: \"Reset View\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 18\n },\n __self: this\n }, _ref2), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_IconButton__WEBPACK_IMPORTED_MODULE_2___default.a, {\n onClick: props.onZoomOut,\n disabled: !props.onZoomOut,\n title: \"Zoom Out\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 25\n },\n __self: this\n }, _ref3));\n};\n\nZoomControls.propTypes = {\n /** Handler for zooming in, will show disabled if null */\n onZoomIn: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Handler for zooming out, will show disabled if null */\n onZoomOut: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func,\n\n /** Handler for resetting view */\n onResetView: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func\n};\nZoomControls.defaultProps = {\n onZoomIn: null,\n onZoomOut: null,\n onResetView: null\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ZoomControls);\n\n//# sourceURL=webpack:///./src/components/ZoomControls/ZoomControls.js?");
/***/ }),
@@ -10841,11 +10853,11 @@ import "../iiif-timeliner-styles.css"
/*!*********************************!*\
!*** ./src/constants/canvas.js ***!
\*********************************/
- /*! exports provided: CANVAS, DEFAULT_CANVAS_STATE, AUDIO_LOADED, AUDIO_LOADING, AUDIO_ERROR, SET_CURRENT_TIME, LOAD_CANVAS, UNLOAD_AUDIO, ERROR_CODES */
+ /*! exports provided: CANVAS, DEFAULT_CANVAS_STATE, MEDIA_LOADED, MEDIA_LOADING, MEDIA_ERROR, SET_CURRENT_TIME, LOAD_CANVAS, LOAD_POSTER, UNLOAD_MEDIA, ERROR_CODES */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CANVAS\", function() { return CANVAS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_CANVAS_STATE\", function() { return DEFAULT_CANVAS_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AUDIO_LOADED\", function() { return AUDIO_LOADED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AUDIO_LOADING\", function() { return AUDIO_LOADING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AUDIO_ERROR\", function() { return AUDIO_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_CURRENT_TIME\", function() { return SET_CURRENT_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_CANVAS\", function() { return LOAD_CANVAS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNLOAD_AUDIO\", function() { return UNLOAD_AUDIO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_CODES\", function() { return ERROR_CODES; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\nvar _DEFAULT_CANVAS_STATE;\n\nvar DEFAULT_AUDIO = ''; //'https://webaudioapi.com/samples/audio-tag/chrono.mp3';\n\nvar CANVAS = {\n URL: 'url',\n IS_LOADED: 'isLoaded',\n PERCENT_LOADED: 'loadingPercent',\n ERROR: 'error'\n};\nvar DEFAULT_CANVAS_STATE = (_DEFAULT_CANVAS_STATE = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.URL, DEFAULT_AUDIO), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.IS_LOADED, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.PERCENT_LOADED, 0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.ERROR, {\n code: null,\n description: ''\n}), _DEFAULT_CANVAS_STATE);\nvar AUDIO_LOADED = 'AUDIO_LOADED';\nvar AUDIO_LOADING = 'AUDIO_LOADING';\nvar AUDIO_ERROR = 'AUDIO_ERROR';\nvar SET_CURRENT_TIME = 'SET_CURRENT_TIME';\nvar LOAD_CANVAS = 'LOAD_CANVAS';\nvar UNLOAD_AUDIO = 'UNLOAD_AUDIO';\nvar ERROR_CODES = {\n MEDIA_ERR_ABORTED: 'Download aborted',\n MEDIA_ERR_NETWORK: 'A network error occurred',\n MEDIA_ERR_DECODE: 'An error occurred while decoding the media resource',\n MEDIA_ERR_SRC_NOT_SUPPORTED: 'Media file format not supported'\n};\n\n//# sourceURL=webpack:///./src/constants/canvas.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CANVAS\", function() { return CANVAS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_CANVAS_STATE\", function() { return DEFAULT_CANVAS_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MEDIA_LOADED\", function() { return MEDIA_LOADED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MEDIA_LOADING\", function() { return MEDIA_LOADING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MEDIA_ERROR\", function() { return MEDIA_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_CURRENT_TIME\", function() { return SET_CURRENT_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_CANVAS\", function() { return LOAD_CANVAS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_POSTER\", function() { return LOAD_POSTER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNLOAD_MEDIA\", function() { return UNLOAD_MEDIA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_CODES\", function() { return ERROR_CODES; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\nvar _DEFAULT_CANVAS_STATE;\n\nvar DEFAULT_URI = ''; //'https://webaudioapi.com/samples/audio-tag/chrono.mp3';\n\nvar CANVAS = {\n URL: 'url',\n IS_LOADED: 'isLoaded',\n PERCENT_LOADED: 'loadingPercent',\n ERROR: 'error',\n IS_VIDEO: 'isVideo',\n POSTER: 'poster'\n};\nvar DEFAULT_CANVAS_STATE = (_DEFAULT_CANVAS_STATE = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.URL, DEFAULT_URI), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.IS_LOADED, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.PERCENT_LOADED, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.ERROR, {\n code: null,\n description: ''\n}), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.IS_VIDEO, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_CANVAS_STATE, CANVAS.POSTER, ''), _DEFAULT_CANVAS_STATE);\nvar MEDIA_LOADED = 'MEDIA_LOADED';\nvar MEDIA_LOADING = 'MEDIA_LOADING';\nvar MEDIA_ERROR = 'MEDIA_ERROR';\nvar SET_CURRENT_TIME = 'SET_CURRENT_TIME';\nvar LOAD_CANVAS = 'LOAD_CANVAS';\nvar LOAD_POSTER = 'LOAD_POSTER';\nvar UNLOAD_MEDIA = 'UNLOAD_MEDIA';\nvar ERROR_CODES = {\n MEDIA_ERR_ABORTED: 'Download aborted',\n MEDIA_ERR_NETWORK: 'A network error occurred',\n MEDIA_ERR_DECODE: 'An error occurred while decoding the media resource',\n MEDIA_ERR_SRC_NOT_SUPPORTED: 'Media file format not supported'\n};\n\n//# sourceURL=webpack:///./src/constants/canvas.js?");
/***/ }),
@@ -10865,11 +10877,11 @@ import "../iiif-timeliner-styles.css"
/*!**********************************!*\
!*** ./src/constants/project.js ***!
\**********************************/
- /*! exports provided: BUBBLE_STYLES, PROJECT, RDF_NAMESPACE, PROJECT_SETTINGS_KEYS, SETTINGS_ATTRIBUTE, DEFAULT_SETTINGS, DEFAULT_PROJECT_STATE, UPDATE_SETTINGS, SET_LANGUAGE, SET_TITLE, SET_DESCRIPTION, RESET_DOCUMENT, EXPORT_DOCUMENT, IMPORT_DOCUMENT, LOAD_PROJECT, IMPORT_ERROR, SAVE_PROJECT, SET_COLOUR_PALETTE, CLEAR_CUSTOM_COLORS */
+ /*! exports provided: BUBBLE_STYLES, PROJECT, RDF_NAMESPACE, PROJECT_SETTINGS_KEYS, SETTINGS_ATTRIBUTE, DEFAULT_SETTINGS, DEFAULT_PROJECT_STATE, UPDATE_SETTINGS, SET_LANGUAGE, SET_TITLE, SET_DESCRIPTION, RESET_DOCUMENT, EXPORT_DOCUMENT, IMPORT_DOCUMENT, LOAD_PROJECT, IMPORT_ERROR, SAVE_PROJECT, SET_COLOUR_PALETTE, CLEAR_CUSTOM_COLORS, PROJECT_CHANGED */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BUBBLE_STYLES\", function() { return BUBBLE_STYLES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PROJECT\", function() { return PROJECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RDF_NAMESPACE\", function() { return RDF_NAMESPACE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PROJECT_SETTINGS_KEYS\", function() { return PROJECT_SETTINGS_KEYS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SETTINGS_ATTRIBUTE\", function() { return SETTINGS_ATTRIBUTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_SETTINGS\", function() { return DEFAULT_SETTINGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_PROJECT_STATE\", function() { return DEFAULT_PROJECT_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_SETTINGS\", function() { return UPDATE_SETTINGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_LANGUAGE\", function() { return SET_LANGUAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_TITLE\", function() { return SET_TITLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_DESCRIPTION\", function() { return SET_DESCRIPTION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESET_DOCUMENT\", function() { return RESET_DOCUMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EXPORT_DOCUMENT\", function() { return EXPORT_DOCUMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMPORT_DOCUMENT\", function() { return IMPORT_DOCUMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_PROJECT\", function() { return LOAD_PROJECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMPORT_ERROR\", function() { return IMPORT_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PROJECT\", function() { return SAVE_PROJECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_COLOUR_PALETTE\", function() { return SET_COLOUR_PALETTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLEAR_CUSTOM_COLORS\", function() { return CLEAR_CUSTOM_COLORS; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\n\nvar _DEFAULT_SETTINGS, _objectSpread2;\n\nvar BUBBLE_STYLES = {\n SQUARE: 'square',\n ROUNDED: 'rounded'\n};\nvar DEFAULT_BUBBLE_HEIGHT = 80;\nvar DEFAULT_LANGUAGE_CODE = 'en';\nvar DEFAULT_TITLE = 'Untitled Timeline';\nvar DEFAULT_BACKGROUND_COLOUR = '#fff';\nvar DESCRIPTION = 'description';\nvar TITLE = 'title';\nvar HOMEPAGE = 'homepage';\nvar HOMEPAGE_LABEL = 'homepageLabel';\nvar LOADED_JSON = 'loadedJson';\nvar BUBBLE_STYLE = 'bubblesStyle';\nvar BLACK_N_WHITE = 'blackAndWhite';\nvar SHOW_TIMES = 'showTimes';\nvar AUTO_SCALE_HEIGHT = 'autoScaleHeightOnResize';\nvar START_PLAYING_WHEN_BUBBLES_CLICKED = 'startPlayingWhenBubbleIsClicked';\nvar STOP_PLAYING_END_OF_SECTION = 'stopPlayingAtTheEndOfSection';\nvar START_PLAYING_END_OF_SECTION = 'startPlayingAtEndOfSection';\nvar ZOOM_TO_SECTION_INCREMENTALLY = 'zoomToSectionIncrementally';\nvar BUBBLE_HEIGHT = 'bubbleHeight';\nvar LANGUAGE = 'language';\nvar BACKGROUND_COLOUR = 'backgroundColour';\nvar SHOW_MARKERS = 'showMarkers';\nvar COLOUR_PALETTE = 'colourPalette';\nvar PROJECT = {\n DESCRIPTION: DESCRIPTION,\n TITLE: TITLE,\n HOMEPAGE: HOMEPAGE,\n HOMEPAGE_LABEL: HOMEPAGE_LABEL,\n LOADED_JSON: LOADED_JSON,\n BUBBLE_STYLE: BUBBLE_STYLE,\n BLACK_N_WHITE: BLACK_N_WHITE,\n SHOW_TIMES: SHOW_TIMES,\n AUTO_SCALE_HEIGHT: AUTO_SCALE_HEIGHT,\n START_PLAYING_WHEN_BUBBLES_CLICKED: START_PLAYING_WHEN_BUBBLES_CLICKED,\n STOP_PLAYING_END_OF_SECTION: STOP_PLAYING_END_OF_SECTION,\n START_PLAYING_END_OF_SECTION: START_PLAYING_END_OF_SECTION,\n ZOOM_TO_SECTION_INCREMENTALLY: ZOOM_TO_SECTION_INCREMENTALLY,\n SHOW_MARKERS: SHOW_MARKERS,\n BUBBLE_HEIGHT: BUBBLE_HEIGHT,\n LANGUAGE: LANGUAGE,\n BACKGROUND_COLOUR: BACKGROUND_COLOUR,\n COLOUR_PALETTE: COLOUR_PALETTE\n};\nvar RDF_NAMESPACE = 'tl';\nvar PROJECT_SETTINGS_KEYS = [BUBBLE_STYLE, BLACK_N_WHITE, SHOW_TIMES, AUTO_SCALE_HEIGHT, START_PLAYING_WHEN_BUBBLES_CLICKED, STOP_PLAYING_END_OF_SECTION, START_PLAYING_END_OF_SECTION, ZOOM_TO_SECTION_INCREMENTALLY, SHOW_MARKERS, BUBBLE_HEIGHT, BACKGROUND_COLOUR, COLOUR_PALETTE];\nvar SETTINGS_ATTRIBUTE = \"\".concat(RDF_NAMESPACE, \":settings\");\nvar DEFAULT_SETTINGS = (_DEFAULT_SETTINGS = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BUBBLE_HEIGHT, DEFAULT_BUBBLE_HEIGHT), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, SHOW_TIMES, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BLACK_N_WHITE, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BUBBLE_STYLE, BUBBLE_STYLES.ROUNDED), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, AUTO_SCALE_HEIGHT, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, START_PLAYING_WHEN_BUBBLES_CLICKED, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, STOP_PLAYING_END_OF_SECTION, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, START_PLAYING_END_OF_SECTION, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, ZOOM_TO_SECTION_INCREMENTALLY, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BACKGROUND_COLOUR, DEFAULT_BACKGROUND_COLOUR), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, SHOW_MARKERS, true), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, COLOUR_PALETTE, 'default'), _DEFAULT_SETTINGS);\nvar DEFAULT_PROJECT_STATE = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, DEFAULT_SETTINGS, (_objectSpread2 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, LANGUAGE, DEFAULT_LANGUAGE_CODE), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, TITLE, DEFAULT_TITLE), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, DESCRIPTION, ''), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, LOADED_JSON, {}), _objectSpread2));\nvar UPDATE_SETTINGS = 'UPDATE_SETTINGS';\nvar SET_LANGUAGE = 'SET_LANGUAGE';\nvar SET_TITLE = 'SET_TITLE';\nvar SET_DESCRIPTION = 'SET_DESCRIPTION';\nvar RESET_DOCUMENT = 'RESET_DOCUMENT';\nvar EXPORT_DOCUMENT = 'EXPORT_DOCUMENT';\nvar IMPORT_DOCUMENT = 'IMPORT_DOCUMENT';\nvar LOAD_PROJECT = 'LOAD_PROJECT';\nvar IMPORT_ERROR = 'IMPORT_ERROR';\nvar SAVE_PROJECT = 'SAVE_PROJECT';\nvar SET_COLOUR_PALETTE = 'SET_COLOUR_PALETTE';\nvar CLEAR_CUSTOM_COLORS = 'CLEAR_CUSTOM_COLORS';\n\n//# sourceURL=webpack:///./src/constants/project.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BUBBLE_STYLES\", function() { return BUBBLE_STYLES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PROJECT\", function() { return PROJECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RDF_NAMESPACE\", function() { return RDF_NAMESPACE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PROJECT_SETTINGS_KEYS\", function() { return PROJECT_SETTINGS_KEYS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SETTINGS_ATTRIBUTE\", function() { return SETTINGS_ATTRIBUTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_SETTINGS\", function() { return DEFAULT_SETTINGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_PROJECT_STATE\", function() { return DEFAULT_PROJECT_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_SETTINGS\", function() { return UPDATE_SETTINGS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_LANGUAGE\", function() { return SET_LANGUAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_TITLE\", function() { return SET_TITLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_DESCRIPTION\", function() { return SET_DESCRIPTION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESET_DOCUMENT\", function() { return RESET_DOCUMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EXPORT_DOCUMENT\", function() { return EXPORT_DOCUMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMPORT_DOCUMENT\", function() { return IMPORT_DOCUMENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_PROJECT\", function() { return LOAD_PROJECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMPORT_ERROR\", function() { return IMPORT_ERROR; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PROJECT\", function() { return SAVE_PROJECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_COLOUR_PALETTE\", function() { return SET_COLOUR_PALETTE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLEAR_CUSTOM_COLORS\", function() { return CLEAR_CUSTOM_COLORS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PROJECT_CHANGED\", function() { return PROJECT_CHANGED; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\n\nvar _DEFAULT_SETTINGS, _objectSpread2;\n\nvar BUBBLE_STYLES = {\n SQUARE: 'square',\n ROUNDED: 'rounded'\n};\nvar DEFAULT_BUBBLE_HEIGHT = 80;\nvar DEFAULT_LANGUAGE_CODE = 'en';\nvar DEFAULT_TITLE = 'Untitled Timeline';\nvar DEFAULT_BACKGROUND_COLOUR = '#fff';\nvar DESCRIPTION = 'description';\nvar TITLE = 'title';\nvar HOMEPAGE = 'homepage';\nvar HOMEPAGE_LABEL = 'homepageLabel';\nvar LOADED_JSON = 'loadedJson';\nvar BUBBLE_STYLE = 'bubblesStyle';\nvar BLACK_N_WHITE = 'blackAndWhite';\nvar SHOW_TIMES = 'showTimes';\nvar AUTO_SCALE_HEIGHT = 'autoScaleHeightOnResize';\nvar START_PLAYING_WHEN_BUBBLES_CLICKED = 'startPlayingWhenBubbleIsClicked';\nvar STOP_PLAYING_END_OF_SECTION = 'stopPlayingAtTheEndOfSection';\nvar START_PLAYING_END_OF_SECTION = 'startPlayingAtEndOfSection';\nvar ZOOM_TO_SECTION_INCREMENTALLY = 'zoomToSectionIncrementally';\nvar BUBBLE_HEIGHT = 'bubbleHeight';\nvar LANGUAGE = 'language';\nvar BACKGROUND_COLOUR = 'backgroundColour';\nvar SHOW_MARKERS = 'showMarkers';\nvar COLOUR_PALETTE = 'colourPalette';\nvar IS_CHANGED = 'isChanged';\nvar PROJECT = {\n DESCRIPTION: DESCRIPTION,\n TITLE: TITLE,\n HOMEPAGE: HOMEPAGE,\n HOMEPAGE_LABEL: HOMEPAGE_LABEL,\n LOADED_JSON: LOADED_JSON,\n BUBBLE_STYLE: BUBBLE_STYLE,\n BLACK_N_WHITE: BLACK_N_WHITE,\n SHOW_TIMES: SHOW_TIMES,\n AUTO_SCALE_HEIGHT: AUTO_SCALE_HEIGHT,\n START_PLAYING_WHEN_BUBBLES_CLICKED: START_PLAYING_WHEN_BUBBLES_CLICKED,\n STOP_PLAYING_END_OF_SECTION: STOP_PLAYING_END_OF_SECTION,\n START_PLAYING_END_OF_SECTION: START_PLAYING_END_OF_SECTION,\n ZOOM_TO_SECTION_INCREMENTALLY: ZOOM_TO_SECTION_INCREMENTALLY,\n SHOW_MARKERS: SHOW_MARKERS,\n BUBBLE_HEIGHT: BUBBLE_HEIGHT,\n LANGUAGE: LANGUAGE,\n BACKGROUND_COLOUR: BACKGROUND_COLOUR,\n COLOUR_PALETTE: COLOUR_PALETTE,\n IS_CHANGED: IS_CHANGED\n};\nvar RDF_NAMESPACE = 'tl';\nvar PROJECT_SETTINGS_KEYS = [BUBBLE_STYLE, BLACK_N_WHITE, SHOW_TIMES, AUTO_SCALE_HEIGHT, START_PLAYING_WHEN_BUBBLES_CLICKED, STOP_PLAYING_END_OF_SECTION, START_PLAYING_END_OF_SECTION, ZOOM_TO_SECTION_INCREMENTALLY, SHOW_MARKERS, BUBBLE_HEIGHT, BACKGROUND_COLOUR, COLOUR_PALETTE];\nvar SETTINGS_ATTRIBUTE = \"\".concat(RDF_NAMESPACE, \":settings\");\nvar DEFAULT_SETTINGS = (_DEFAULT_SETTINGS = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BUBBLE_HEIGHT, DEFAULT_BUBBLE_HEIGHT), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, SHOW_TIMES, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BLACK_N_WHITE, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BUBBLE_STYLE, BUBBLE_STYLES.ROUNDED), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, AUTO_SCALE_HEIGHT, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, START_PLAYING_WHEN_BUBBLES_CLICKED, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, STOP_PLAYING_END_OF_SECTION, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, START_PLAYING_END_OF_SECTION, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, ZOOM_TO_SECTION_INCREMENTALLY, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, BACKGROUND_COLOUR, DEFAULT_BACKGROUND_COLOUR), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, SHOW_MARKERS, true), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_SETTINGS, COLOUR_PALETTE, 'default'), _DEFAULT_SETTINGS);\nvar DEFAULT_PROJECT_STATE = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, DEFAULT_SETTINGS, (_objectSpread2 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, LANGUAGE, DEFAULT_LANGUAGE_CODE), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, TITLE, DEFAULT_TITLE), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, DESCRIPTION, ''), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, LOADED_JSON, {}), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_objectSpread2, IS_CHANGED, true), _objectSpread2));\nvar UPDATE_SETTINGS = 'UPDATE_SETTINGS';\nvar SET_LANGUAGE = 'SET_LANGUAGE';\nvar SET_TITLE = 'SET_TITLE';\nvar SET_DESCRIPTION = 'SET_DESCRIPTION';\nvar RESET_DOCUMENT = 'RESET_DOCUMENT';\nvar EXPORT_DOCUMENT = 'EXPORT_DOCUMENT';\nvar IMPORT_DOCUMENT = 'IMPORT_DOCUMENT';\nvar LOAD_PROJECT = 'LOAD_PROJECT';\nvar IMPORT_ERROR = 'IMPORT_ERROR';\nvar SAVE_PROJECT = 'SAVE_PROJECT';\nvar SET_COLOUR_PALETTE = 'SET_COLOUR_PALETTE';\nvar CLEAR_CUSTOM_COLORS = 'CLEAR_CUSTOM_COLORS';\nvar PROJECT_CHANGED = 'PROJECT_CHANGED';\n\n//# sourceURL=webpack:///./src/constants/project.js?");
/***/ }),
@@ -10881,7 +10893,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANGE\", function() { return RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_RANGE\", function() { return DEFAULT_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_RANGES_STATE\", function() { return DEFAULT_RANGES_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SPLIT_RANGE_AT\", function() { return SPLIT_RANGE_AT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GROUP_RANGES\", function() { return GROUP_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SELECT_RANGE\", function() { return SELECT_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_RANGE\", function() { return UPDATE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCHEDULE_UPDATE_RANGE\", function() { return SCHEDULE_UPDATE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_RANGE_TIME\", function() { return UPDATE_RANGE_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MOVE_POINT\", function() { return MOVE_POINT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DESELECT_RANGE\", function() { return DESELECT_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DELETE_RANGE\", function() { return DELETE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCHEDULE_DELETE_RANGE\", function() { return SCHEDULE_DELETE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMPORT_RANGES\", function() { return IMPORT_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"INCREASE_RANGE_DEPTH\", function() { return INCREASE_RANGE_DEPTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DECREASE_RANGE_DEPTH\", function() { return DECREASE_RANGE_DEPTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCHEDULE_DELETE_RANGES\", function() { return SCHEDULE_DELETE_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_RANGES\", function() { return LOAD_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_RANGE\", function() { return CREATE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANGE_MUTATION\", function() { return RANGE_MUTATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNSET_RANGE_COLOR\", function() { return UNSET_RANGE_COLOR; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\n\nvar _DEFAULT_RANGE;\n\nvar RANGE = {\n START_TIME: 'startTime',\n END_TIME: 'endTime',\n LABEL: 'label',\n SUMMARY: 'summary',\n COLOUR: 'colour',\n DEPTH: 'depth',\n IS_SELECTED: 'isSelected',\n WHITE_TEXT: 'whiteText'\n};\nvar DEFAULT_RANGE = (_DEFAULT_RANGE = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.START_TIME, 0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.END_TIME, 0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.LABEL, ''), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.SUMMARY, ''), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.COLOUR, null), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.DEPTH, 1), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.IS_SELECTED, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.WHITE_TEXT, false), _DEFAULT_RANGE);\nvar DEFAULT_RANGES_STATE = {\n 'id-0': Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n id: 'id-0'\n }, DEFAULT_RANGE)\n};\nvar SPLIT_RANGE_AT = 'SPLIT_RANGE_AT';\nvar GROUP_RANGES = 'GROUP_RANGES';\nvar SELECT_RANGE = 'SELECT_RANGE';\nvar UPDATE_RANGE = 'UPDATE_RANGE';\nvar SCHEDULE_UPDATE_RANGE = 'SCHEDULE_UPDATE_RANGE';\nvar UPDATE_RANGE_TIME = 'UPDATE_RANGE_TIME';\nvar MOVE_POINT = 'MOVE_POINT';\nvar DESELECT_RANGE = 'DESELECT_RANGE';\nvar DELETE_RANGE = 'DELETE_RANGE';\nvar SCHEDULE_DELETE_RANGE = 'SCHEDULE_DELETE_RANGE';\nvar IMPORT_RANGES = 'IMPORT_RANGES';\nvar INCREASE_RANGE_DEPTH = 'INCREASE_RANGE_DEPTH';\nvar DECREASE_RANGE_DEPTH = 'DECREASE_RANGE_DEPTH';\nvar SCHEDULE_DELETE_RANGES = 'SCHEDULE_DELETE_RANGES';\nvar LOAD_RANGES = 'LOAD_RANGES';\nvar CREATE_RANGE = 'CREATE_RANGE';\nvar RANGE_MUTATION = 'RANGE_MUTATION';\nvar UNSET_RANGE_COLOR = 'UNSET_RANGE_COLOR';\n\n//# sourceURL=webpack:///./src/constants/range.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANGE\", function() { return RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_RANGE\", function() { return DEFAULT_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_RANGES_STATE\", function() { return DEFAULT_RANGES_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SPLIT_RANGE_AT\", function() { return SPLIT_RANGE_AT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GROUP_RANGES\", function() { return GROUP_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SELECT_RANGE\", function() { return SELECT_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_RANGE\", function() { return UPDATE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCHEDULE_UPDATE_RANGE\", function() { return SCHEDULE_UPDATE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_RANGE_TIME\", function() { return UPDATE_RANGE_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"MOVE_POINT\", function() { return MOVE_POINT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DESELECT_RANGE\", function() { return DESELECT_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DELETE_RANGE\", function() { return DELETE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCHEDULE_DELETE_RANGE\", function() { return SCHEDULE_DELETE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IMPORT_RANGES\", function() { return IMPORT_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"INCREASE_RANGE_DEPTH\", function() { return INCREASE_RANGE_DEPTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DECREASE_RANGE_DEPTH\", function() { return DECREASE_RANGE_DEPTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SCHEDULE_DELETE_RANGES\", function() { return SCHEDULE_DELETE_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_RANGES\", function() { return LOAD_RANGES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CREATE_RANGE\", function() { return CREATE_RANGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RANGE_MUTATION\", function() { return RANGE_MUTATION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNSET_RANGE_COLOR\", function() { return UNSET_RANGE_COLOR; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\n\nvar _DEFAULT_RANGE;\n\nvar RANGE = {\n START_TIME: 'startTime',\n END_TIME: 'endTime',\n LABEL: 'label',\n SUMMARY: 'summary',\n COLOUR: 'colour',\n DEPTH: 'depth',\n IS_SELECTED: 'isSelected',\n WHITE_TEXT: 'whiteText'\n};\nvar DEFAULT_RANGE = (_DEFAULT_RANGE = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.START_TIME, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.END_TIME, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.LABEL, ''), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.SUMMARY, ''), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.COLOUR, null), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.DEPTH, 1), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.IS_SELECTED, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_DEFAULT_RANGE, RANGE.WHITE_TEXT, false), _DEFAULT_RANGE);\nvar DEFAULT_RANGES_STATE = {\n 'id-0': Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n id: 'id-0'\n }, DEFAULT_RANGE)\n};\nvar SPLIT_RANGE_AT = 'SPLIT_RANGE_AT';\nvar GROUP_RANGES = 'GROUP_RANGES';\nvar SELECT_RANGE = 'SELECT_RANGE';\nvar UPDATE_RANGE = 'UPDATE_RANGE';\nvar SCHEDULE_UPDATE_RANGE = 'SCHEDULE_UPDATE_RANGE';\nvar UPDATE_RANGE_TIME = 'UPDATE_RANGE_TIME';\nvar MOVE_POINT = 'MOVE_POINT';\nvar DESELECT_RANGE = 'DESELECT_RANGE';\nvar DELETE_RANGE = 'DELETE_RANGE';\nvar SCHEDULE_DELETE_RANGE = 'SCHEDULE_DELETE_RANGE';\nvar IMPORT_RANGES = 'IMPORT_RANGES';\nvar INCREASE_RANGE_DEPTH = 'INCREASE_RANGE_DEPTH';\nvar DECREASE_RANGE_DEPTH = 'DECREASE_RANGE_DEPTH';\nvar SCHEDULE_DELETE_RANGES = 'SCHEDULE_DELETE_RANGES';\nvar LOAD_RANGES = 'LOAD_RANGES';\nvar CREATE_RANGE = 'CREATE_RANGE';\nvar RANGE_MUTATION = 'RANGE_MUTATION';\nvar UNSET_RANGE_COLOR = 'UNSET_RANGE_COLOR';\n\n//# sourceURL=webpack:///./src/constants/range.js?");
/***/ }),
@@ -10889,11 +10901,11 @@ import "../iiif-timeliner-styles.css"
/*!************************************!*\
!*** ./src/constants/viewState.js ***!
\************************************/
- /*! exports provided: VIEWSTATE, DEFAULT_VIEWSTATE_STATE, PLAY_AUDIO, STOP_AUDIO, ZOOM_IN, ZOOM_OUT, ZOOM_TO, RESET_ZOOM, PAN_TO_POSITION, SHOW_IMPORT_MODAL, DISMISS_IMPORT_MODAL, SHOW_SETTINGS_MODAL, DISMISS_SETTINGS_MODAL, NEXT_BUBBLE, PREVIOUS_BUBBLE, FAST_FORWARD, FAST_REWARD, SET_VOLUME, SET_CURRENT_TIME, LOAD_VIEW_STATE, LOAD_SOURCE, EDIT_METADATA, SET_VERIFY_DIALOG, OPEN_CONFIRM_DIALOG, CLOSE_CONFIRM_DIALOG, CONFIRM_YES, CONFIRM_NO, EDIT_PROJECT_METADATA, CANCEL_PROJECT_METADATA_EDITS, SAVE_PROJECT_METADATA, FINISHED_PLAYING, UPDATE_VIEWER_WIDTH, SET_CALLBACK, SET_RESOURCE, UNDO_ALL, SET_START_TIME */
+ /*! exports provided: VIEWSTATE, DEFAULT_VIEWSTATE_STATE, PLAY_MEDIA, STOP_MEDIA, SEEK_MEDIA, ZOOM_IN, ZOOM_OUT, ZOOM_TO, RESET_ZOOM, PAN_TO_POSITION, SHOW_IMPORT_MODAL, DISMISS_IMPORT_MODAL, SHOW_SETTINGS_MODAL, DISMISS_SETTINGS_MODAL, NEXT_BUBBLE, PREVIOUS_BUBBLE, FAST_FORWARD, FAST_REWARD, SET_VOLUME, SET_CURRENT_TIME, LOAD_VIEW_STATE, LOAD_SOURCE, EDIT_METADATA, SET_VERIFY_DIALOG, OPEN_CONFIRM_DIALOG, CLOSE_CONFIRM_DIALOG, CONFIRM_YES, CONFIRM_NO, EDIT_PROJECT_METADATA, CANCEL_PROJECT_METADATA_EDITS, SAVE_PROJECT_METADATA, FINISHED_PLAYING, UPDATE_VIEWER_WIDTH, SET_CALLBACK, SET_RESOURCE, UNDO_ALL, SET_START_TIME */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VIEWSTATE\", function() { return VIEWSTATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_VIEWSTATE_STATE\", function() { return DEFAULT_VIEWSTATE_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PLAY_AUDIO\", function() { return PLAY_AUDIO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STOP_AUDIO\", function() { return STOP_AUDIO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZOOM_IN\", function() { return ZOOM_IN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZOOM_OUT\", function() { return ZOOM_OUT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZOOM_TO\", function() { return ZOOM_TO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESET_ZOOM\", function() { return RESET_ZOOM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PAN_TO_POSITION\", function() { return PAN_TO_POSITION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHOW_IMPORT_MODAL\", function() { return SHOW_IMPORT_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISMISS_IMPORT_MODAL\", function() { return DISMISS_IMPORT_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHOW_SETTINGS_MODAL\", function() { return SHOW_SETTINGS_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISMISS_SETTINGS_MODAL\", function() { return DISMISS_SETTINGS_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NEXT_BUBBLE\", function() { return NEXT_BUBBLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PREVIOUS_BUBBLE\", function() { return PREVIOUS_BUBBLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FAST_FORWARD\", function() { return FAST_FORWARD; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FAST_REWARD\", function() { return FAST_REWARD; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_VOLUME\", function() { return SET_VOLUME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_CURRENT_TIME\", function() { return SET_CURRENT_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_VIEW_STATE\", function() { return LOAD_VIEW_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_SOURCE\", function() { return LOAD_SOURCE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EDIT_METADATA\", function() { return EDIT_METADATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_VERIFY_DIALOG\", function() { return SET_VERIFY_DIALOG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OPEN_CONFIRM_DIALOG\", function() { return OPEN_CONFIRM_DIALOG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLOSE_CONFIRM_DIALOG\", function() { return CLOSE_CONFIRM_DIALOG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONFIRM_YES\", function() { return CONFIRM_YES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONFIRM_NO\", function() { return CONFIRM_NO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EDIT_PROJECT_METADATA\", function() { return EDIT_PROJECT_METADATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CANCEL_PROJECT_METADATA_EDITS\", function() { return CANCEL_PROJECT_METADATA_EDITS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PROJECT_METADATA\", function() { return SAVE_PROJECT_METADATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FINISHED_PLAYING\", function() { return FINISHED_PLAYING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_VIEWER_WIDTH\", function() { return UPDATE_VIEWER_WIDTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_CALLBACK\", function() { return SET_CALLBACK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_RESOURCE\", function() { return SET_RESOURCE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNDO_ALL\", function() { return UNDO_ALL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_START_TIME\", function() { return SET_START_TIME; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\nvar _DEFAULT_VIEWSTATE_ST;\n\nvar VIEWSTATE = {\n RUNTIME: 'runTime',\n IS_PLAYING: 'isPlaying',\n CURRENT_TIME: 'currentTime',\n ZOOM: 'zoom',\n X: 'x',\n IS_IMPORT_OPEN: 'isImportOpen',\n IS_SETTINGS_OPEN: 'isSettingsOpen',\n VOLUME: 'volume',\n METADATA_TO_EDIT: 'metadataToEdit',\n PROJECT_METADATA_EDITOR_OPEN: 'projectMetadataEditorOpen',\n VERIFY_DIALOG: 'verifyDialog',\n SOURCE: 'source',\n VIEWER_WIDTH: 'viewerWidth',\n CALLBACK: 'callback',\n START_TIME: 'startTime',\n RESOURCE: 'resource'\n};\nvar DEFAULT_VIEWSTATE_STATE = (_DEFAULT_VIEWSTATE_ST = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.RUNTIME, 0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.IS_PLAYING, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.CURRENT_TIME, 0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.ZOOM, 1.0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.X, 0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.IS_IMPORT_OPEN, true), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.IS_SETTINGS_OPEN, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.VOLUME, 100), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.METADATA_TO_EDIT, null), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.PROJECT_METADATA_EDITOR_OPEN, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.SOURCE, null), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.VERIFY_DIALOG, {\n open: false,\n title: '',\n doCancel: true\n}), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.VIEWER_WIDTH, 0), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.CALLBACK, null), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.RESOURCE, null), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.START_TIME, 0), _DEFAULT_VIEWSTATE_ST);\nvar PLAY_AUDIO = 'PLAY_AUDIO';\nvar STOP_AUDIO = 'STOP_AUDIO';\nvar ZOOM_IN = 'ZOOM_IN';\nvar ZOOM_OUT = 'ZOOM_OUT';\nvar ZOOM_TO = 'ZOOM_TO';\nvar RESET_ZOOM = 'RESET_ZOOM';\nvar PAN_TO_POSITION = 'PAN_TO_POSITION';\nvar SHOW_IMPORT_MODAL = 'SHOW_IMPORT_MODAL';\nvar DISMISS_IMPORT_MODAL = 'DISMISS_IMPORT_MODAL';\nvar SHOW_SETTINGS_MODAL = 'SHOW_SETTINGS_MODAL';\nvar DISMISS_SETTINGS_MODAL = 'DISMISS_SETTINGS_MODAL';\nvar NEXT_BUBBLE = 'NEXT_BUBBLE';\nvar PREVIOUS_BUBBLE = 'PREVIOUS_BUBBLE';\nvar FAST_FORWARD = 'FAST_FORWARD';\nvar FAST_REWARD = 'FAST_REWARD';\nvar SET_VOLUME = 'SET_VOLUME';\nvar SET_CURRENT_TIME = 'SET_CURRENT_TIME';\nvar LOAD_VIEW_STATE = 'LOAD_VIEW_STATE';\nvar LOAD_SOURCE = 'LOAD_SOURCE';\nvar EDIT_METADATA = 'EDIT_METADATA';\nvar SET_VERIFY_DIALOG = 'SET_VERIFY_DIALOG';\nvar OPEN_CONFIRM_DIALOG = 'OPEN_CONFIRM_DIALOG';\nvar CLOSE_CONFIRM_DIALOG = 'CLOSE_CONFIRM_DIALOG';\nvar CONFIRM_YES = 'CONFIRM_YES';\nvar CONFIRM_NO = 'CONFIRM_NO';\nvar EDIT_PROJECT_METADATA = 'EDIT_PROJECT_METADATA';\nvar CANCEL_PROJECT_METADATA_EDITS = 'CANCEL_PROJECT_METADATA_EDITS';\nvar SAVE_PROJECT_METADATA = 'SAVE_PROJECT_METADATA';\nvar FINISHED_PLAYING = 'FINISHED_PLAYING';\nvar UPDATE_VIEWER_WIDTH = 'UPDATE_VIEWER_WIDTH';\nvar SET_CALLBACK = 'SET_CALLBACK';\nvar SET_RESOURCE = 'SET_RESOURCE';\nvar UNDO_ALL = 'UNDO_ALL';\nvar SET_START_TIME = 'SET_START_TIME';\n\n//# sourceURL=webpack:///./src/constants/viewState.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VIEWSTATE\", function() { return VIEWSTATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_VIEWSTATE_STATE\", function() { return DEFAULT_VIEWSTATE_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PLAY_MEDIA\", function() { return PLAY_MEDIA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STOP_MEDIA\", function() { return STOP_MEDIA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SEEK_MEDIA\", function() { return SEEK_MEDIA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZOOM_IN\", function() { return ZOOM_IN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZOOM_OUT\", function() { return ZOOM_OUT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ZOOM_TO\", function() { return ZOOM_TO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RESET_ZOOM\", function() { return RESET_ZOOM; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PAN_TO_POSITION\", function() { return PAN_TO_POSITION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHOW_IMPORT_MODAL\", function() { return SHOW_IMPORT_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISMISS_IMPORT_MODAL\", function() { return DISMISS_IMPORT_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHOW_SETTINGS_MODAL\", function() { return SHOW_SETTINGS_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DISMISS_SETTINGS_MODAL\", function() { return DISMISS_SETTINGS_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"NEXT_BUBBLE\", function() { return NEXT_BUBBLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PREVIOUS_BUBBLE\", function() { return PREVIOUS_BUBBLE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FAST_FORWARD\", function() { return FAST_FORWARD; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FAST_REWARD\", function() { return FAST_REWARD; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_VOLUME\", function() { return SET_VOLUME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_CURRENT_TIME\", function() { return SET_CURRENT_TIME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_VIEW_STATE\", function() { return LOAD_VIEW_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOAD_SOURCE\", function() { return LOAD_SOURCE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EDIT_METADATA\", function() { return EDIT_METADATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_VERIFY_DIALOG\", function() { return SET_VERIFY_DIALOG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OPEN_CONFIRM_DIALOG\", function() { return OPEN_CONFIRM_DIALOG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CLOSE_CONFIRM_DIALOG\", function() { return CLOSE_CONFIRM_DIALOG; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONFIRM_YES\", function() { return CONFIRM_YES; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONFIRM_NO\", function() { return CONFIRM_NO; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EDIT_PROJECT_METADATA\", function() { return EDIT_PROJECT_METADATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CANCEL_PROJECT_METADATA_EDITS\", function() { return CANCEL_PROJECT_METADATA_EDITS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PROJECT_METADATA\", function() { return SAVE_PROJECT_METADATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FINISHED_PLAYING\", function() { return FINISHED_PLAYING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UPDATE_VIEWER_WIDTH\", function() { return UPDATE_VIEWER_WIDTH; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_CALLBACK\", function() { return SET_CALLBACK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_RESOURCE\", function() { return SET_RESOURCE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UNDO_ALL\", function() { return UNDO_ALL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SET_START_TIME\", function() { return SET_START_TIME; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n\n\nvar _DEFAULT_VIEWSTATE_ST;\n\nvar VIEWSTATE = {\n RUNTIME: 'runTime',\n IS_PLAYING: 'isPlaying',\n CURRENT_TIME: 'currentTime',\n ZOOM: 'zoom',\n X: 'x',\n IS_IMPORT_OPEN: 'isImportOpen',\n IS_SETTINGS_OPEN: 'isSettingsOpen',\n VOLUME: 'volume',\n METADATA_TO_EDIT: 'metadataToEdit',\n PROJECT_METADATA_EDITOR_OPEN: 'projectMetadataEditorOpen',\n VERIFY_DIALOG: 'verifyDialog',\n SOURCE: 'source',\n VIEWER_WIDTH: 'viewerWidth',\n CALLBACK: 'callback',\n START_TIME: 'startTime',\n RESOURCE: 'resource',\n IS_SEEKED: 'isSeeked'\n};\nvar DEFAULT_VIEWSTATE_STATE = (_DEFAULT_VIEWSTATE_ST = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.RUNTIME, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.IS_PLAYING, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.CURRENT_TIME, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.ZOOM, 1.0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.X, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.IS_IMPORT_OPEN, true), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.IS_SETTINGS_OPEN, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.VOLUME, 100), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.METADATA_TO_EDIT, null), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.PROJECT_METADATA_EDITOR_OPEN, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.SOURCE, null), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.VERIFY_DIALOG, {\n open: false,\n title: '',\n doCancel: true\n}), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.VIEWER_WIDTH, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.CALLBACK, null), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.RESOURCE, null), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.START_TIME, 0), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_DEFAULT_VIEWSTATE_ST, VIEWSTATE.IS_SEEKED, false), _DEFAULT_VIEWSTATE_ST);\nvar PLAY_MEDIA = 'PLAY_MEDIA';\nvar STOP_MEDIA = 'STOP_MEDIA';\nvar SEEK_MEDIA = 'SEEK_MEDIA';\nvar ZOOM_IN = 'ZOOM_IN';\nvar ZOOM_OUT = 'ZOOM_OUT';\nvar ZOOM_TO = 'ZOOM_TO';\nvar RESET_ZOOM = 'RESET_ZOOM';\nvar PAN_TO_POSITION = 'PAN_TO_POSITION';\nvar SHOW_IMPORT_MODAL = 'SHOW_IMPORT_MODAL';\nvar DISMISS_IMPORT_MODAL = 'DISMISS_IMPORT_MODAL';\nvar SHOW_SETTINGS_MODAL = 'SHOW_SETTINGS_MODAL';\nvar DISMISS_SETTINGS_MODAL = 'DISMISS_SETTINGS_MODAL';\nvar NEXT_BUBBLE = 'NEXT_BUBBLE';\nvar PREVIOUS_BUBBLE = 'PREVIOUS_BUBBLE';\nvar FAST_FORWARD = 'FAST_FORWARD';\nvar FAST_REWARD = 'FAST_REWARD';\nvar SET_VOLUME = 'SET_VOLUME';\nvar SET_CURRENT_TIME = 'SET_CURRENT_TIME';\nvar LOAD_VIEW_STATE = 'LOAD_VIEW_STATE';\nvar LOAD_SOURCE = 'LOAD_SOURCE';\nvar EDIT_METADATA = 'EDIT_METADATA';\nvar SET_VERIFY_DIALOG = 'SET_VERIFY_DIALOG';\nvar OPEN_CONFIRM_DIALOG = 'OPEN_CONFIRM_DIALOG';\nvar CLOSE_CONFIRM_DIALOG = 'CLOSE_CONFIRM_DIALOG';\nvar CONFIRM_YES = 'CONFIRM_YES';\nvar CONFIRM_NO = 'CONFIRM_NO';\nvar EDIT_PROJECT_METADATA = 'EDIT_PROJECT_METADATA';\nvar CANCEL_PROJECT_METADATA_EDITS = 'CANCEL_PROJECT_METADATA_EDITS';\nvar SAVE_PROJECT_METADATA = 'SAVE_PROJECT_METADATA';\nvar FINISHED_PLAYING = 'FINISHED_PLAYING';\nvar UPDATE_VIEWER_WIDTH = 'UPDATE_VIEWER_WIDTH';\nvar SET_CALLBACK = 'SET_CALLBACK';\nvar SET_RESOURCE = 'SET_RESOURCE';\nvar UNDO_ALL = 'UNDO_ALL';\nvar SET_START_TIME = 'SET_START_TIME';\n\n//# sourceURL=webpack:///./src/constants/viewState.js?");
/***/ }),
@@ -10905,7 +10917,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _actions_canvas__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../actions/canvas */ \"./src/actions/canvas.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var mediaelement_standalone__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! mediaelement/standalone */ \"./node_modules/mediaelement/standalone.js\");\n/* harmony import */ var mediaelement_standalone__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(mediaelement_standalone__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _hooks_useEventListener__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/useEventListener */ \"./src/hooks/useEventListener.js\");\n/* harmony import */ var _hooks_useInterval__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/useInterval */ \"./src/hooks/useInterval.js\");\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants/canvas */ \"./src/constants/canvas.js\");\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/containers/Audio/Audio.js\";\n\n\n\n // Media Element\n\n\n\n\n\nvar _window = window,\n MediaElement = _window.MediaElement;\n\nfunction Audio(_ref) {\n var url = _ref.url,\n volume = _ref.volume,\n currentTime = _ref.currentTime,\n startTime = _ref.startTime,\n isPlaying = _ref.isPlaying,\n props = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, [\"url\", \"volume\", \"currentTime\", \"startTime\", \"isPlaying\"]);\n\n var audio = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])();\n var player = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])();\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])(),\n _useState2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n duration = _useState2[0],\n setDuration = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])(),\n _useState4 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n loaded = _useState4[0],\n setLoaded = _useState4[1];\n\n var sources = [{\n src: url\n }];\n var lastTime = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])(function () {\n return startTime - 1;\n }); // Bootstrap the element.\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n var element = new MediaElement(audio.current, {\n startVolume: volume / 100,\n currentTime: currentTime / 1000\n }, sources);\n player.current = element;\n setLoaded(false);\n return function () {\n element.remove();\n };\n }, []);\n Object(_hooks_useEventListener__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(player, 'error', function (event) {\n if (event && event.type === 'error') {\n // This will need to be refined.\n props.audioError('error', _constants_canvas__WEBPACK_IMPORTED_MODULE_9__[\"ERROR_CODES\"].MEDIA_ERR_NETWORK);\n }\n }); // Loop timer for calculating current time.\n\n Object(_hooks_useInterval__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(function () {\n var position = player.current.getCurrentTime();\n var relPosition = position * 1000 - startTime;\n\n if (position * 1000 !== lastTime.current) {\n lastTime.current = position * 1000;\n props.setCurrentTime(relPosition);\n }\n\n if (player.current.readyState && loaded === false) {\n setDuration(props.runTime || player.current.duration * 1000);\n props.audioLoading(1, 1, props.runTime || player.current.duration * 1000);\n props.audioLoaded(true);\n setLoaded(true);\n }\n\n if (relPosition >= duration && isPlaying) {\n props.finishedPlaying();\n }\n }, 1000 / 5, [loaded]); // Handle play/pause\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current) {\n if (isPlaying) {\n player.current.play();\n } else {\n if (player.current.readyState) {\n player.current.pause();\n }\n }\n }\n }, [isPlaying, url]); // Handle volume change.\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current) {\n player.current.setVolume(volume / 100);\n }\n }, [volume, url]); // Handle user-changed current time.\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current && currentTime !== lastTime.current) {\n lastTime.current = currentTime;\n player.current.setCurrentTime(currentTime / 1000);\n }\n }, [currentTime, url]);\n\n if (!url) {\n return null;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 110\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"audio\", {\n ref: audio,\n preload: \"auto\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 111\n },\n __self: this\n }, sources.map(function (source, key) {\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"source\", {\n key: key,\n src: source.src,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 113\n },\n __self: this\n });\n })));\n}\n\nvar mapStateProps = function mapStateProps(state) {\n return {\n url: state.canvas.url,\n isPlaying: state.viewState.isPlaying,\n currentTime: state.viewState.currentTime + state.viewState.startTime,\n volume: state.viewState.volume,\n runTime: state.viewState.runTime,\n startTime: state.viewState.startTime\n };\n};\n\nvar mapDispatchToProps = {\n audioLoading: _actions_canvas__WEBPACK_IMPORTED_MODULE_4__[\"audioLoading\"],\n audioLoaded: _actions_canvas__WEBPACK_IMPORTED_MODULE_4__[\"audioLoaded\"],\n audioError: _actions_canvas__WEBPACK_IMPORTED_MODULE_4__[\"audioError\"],\n setCurrentTime: _actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"],\n finishedPlaying: _actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"finishedPlaying\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_3__[\"connect\"])(mapStateProps, mapDispatchToProps)(Audio));\n\n//# sourceURL=webpack:///./src/containers/Audio/Audio.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _actions_canvas__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../actions/canvas */ \"./src/actions/canvas.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var mediaelement_standalone__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! mediaelement/standalone */ \"./node_modules/mediaelement/standalone.js\");\n/* harmony import */ var mediaelement_standalone__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(mediaelement_standalone__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _hooks_useEventListener__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/useEventListener */ \"./src/hooks/useEventListener.js\");\n/* harmony import */ var _hooks_useInterval__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/useInterval */ \"./src/hooks/useInterval.js\");\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../constants/canvas */ \"./src/constants/canvas.js\");\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/containers/Audio/Audio.js\";\n\n\n\n // Media Element\n\n\n\n\n\nvar _window = window,\n MediaElement = _window.MediaElement;\n\nfunction Audio(_ref) {\n var url = _ref.url,\n volume = _ref.volume,\n currentTime = _ref.currentTime,\n startTime = _ref.startTime,\n isPlaying = _ref.isPlaying,\n props = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, [\"url\", \"volume\", \"currentTime\", \"startTime\", \"isPlaying\"]);\n\n var audio = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])();\n var player = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])();\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])(),\n _useState2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n duration = _useState2[0],\n setDuration = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])(),\n _useState4 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n loaded = _useState4[0],\n setLoaded = _useState4[1];\n\n var sources = [{\n src: url\n }];\n var lastTime = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])(function () {\n return startTime - 1;\n }); // Bootstrap the element.\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n var element = new MediaElement(audio.current, {\n startVolume: volume / 100,\n currentTime: currentTime / 1000\n }, sources);\n player.current = element;\n setLoaded(false);\n return function () {\n element.remove();\n };\n }, []);\n Object(_hooks_useEventListener__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(player, 'error', function (event) {\n if (event && event.type === 'error') {\n // This will need to be refined.\n props.mediaError('error', _constants_canvas__WEBPACK_IMPORTED_MODULE_9__[\"ERROR_CODES\"].MEDIA_ERR_NETWORK);\n }\n }); // Loop timer for calculating current time.\n\n Object(_hooks_useInterval__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(function () {\n var position = player.current.getCurrentTime();\n var relPosition = position * 1000 - startTime;\n\n if (position * 1000 !== lastTime.current) {\n lastTime.current = position * 1000;\n props.setCurrentTime(relPosition);\n }\n\n if (player.current.readyState && loaded === false) {\n setDuration(props.runTime || player.current.duration * 1000);\n props.mediaLoading(1, 1, props.runTime || player.current.duration * 1000);\n props.mediaLoaded(true);\n setLoaded(true);\n }\n\n if (relPosition >= duration && isPlaying) {\n props.finishedPlaying();\n }\n }, 1000 / 5, [loaded]); // Handle play/pause\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current) {\n if (isPlaying) {\n player.current.play();\n } else {\n if (player.current.readyState) {\n player.current.pause();\n }\n }\n }\n }, [isPlaying, url]); // Handle volume change.\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current) {\n player.current.setVolume(volume / 100);\n }\n }, [volume, url]); // Handle user-changed current time.\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current && currentTime !== lastTime.current) {\n // Toggle isSeeked flag in the state\n props.seek(!props.isSeeked);\n lastTime.current = currentTime;\n player.current.setCurrentTime(currentTime / 1000);\n props.setCurrentTime(currentTime);\n }\n }, [currentTime, url]);\n\n if (!url) {\n return null;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 113\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"audio\", {\n ref: audio,\n preload: \"auto\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 114\n },\n __self: this\n }, sources.map(function (source, key) {\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"source\", {\n key: key,\n src: source.src,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 116\n },\n __self: this\n });\n })));\n}\n\nvar mapStateProps = function mapStateProps(state) {\n return {\n url: state.canvas.url,\n isSeeked: state.viewState.isSeeked,\n isPlaying: state.viewState.isPlaying,\n currentTime: state.viewState.currentTime + state.viewState.startTime,\n volume: state.viewState.volume,\n runTime: state.viewState.runTime,\n startTime: state.viewState.startTime\n };\n};\n\nvar mapDispatchToProps = {\n mediaLoading: _actions_canvas__WEBPACK_IMPORTED_MODULE_4__[\"mediaLoading\"],\n mediaLoaded: _actions_canvas__WEBPACK_IMPORTED_MODULE_4__[\"mediaLoaded\"],\n mediaError: _actions_canvas__WEBPACK_IMPORTED_MODULE_4__[\"mediaError\"],\n setCurrentTime: _actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"],\n finishedPlaying: _actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"finishedPlaying\"],\n seek: _actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"seek\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_3__[\"connect\"])(mapStateProps, mapDispatchToProps)(Audio));\n\n//# sourceURL=webpack:///./src/containers/Audio/Audio.js?");
/***/ }),
@@ -10917,7 +10929,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveAvResource\", function() { return resolveAvResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AuthCookieService1\", function() { return AuthCookieService1; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_AuthModal_AuthModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/AuthModal/AuthModal */ \"./src/components/AuthModal/AuthModal.js\");\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/containers/AuthResource/AuthResource.js\";\n\n\n\nfunction log() {\n if (true) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\nfunction probeResource(url) {\n return new Promise(function (resolve, reject) {\n var http = new XMLHttpRequest();\n http.open('HEAD', url);\n\n http.onreadystatechange = function () {\n if (http.readyState === http.DONE) {\n if (http.status >= 300 && http.status <= 499) {\n reject();\n } else {\n resolve();\n }\n }\n };\n\n http.send();\n });\n}\n\nfunction logStage(stage) {\n var stages = [// Initial load, nothings happened.\n 'INITIAL_LOAD', // Modal is being shown to user.\n 'MODAL_SHOWN', // User has actioned the modal.\n 'WAITING_FOR_LOGIN', // User has closed popup window.\n 'LOGIN_CONFIRMED', // Waiting for token\n 'WAITING_FOR_TOKEN', // Token success.\n 'AUTHENTICATED', // Failures.\n 'TOKEN_FAILED', 'LOGIN_FAILED', 'USER_OPT_OUT'];\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return log.apply(void 0, [stages[stage]].concat(args));\n}\n\nfunction windowOpen(url) {\n return new Promise(function (resolve) {\n var windowRef = window.open(url);\n\n var check = function check() {\n if (windowRef.closed) {\n clearInterval(timeout);\n resolve();\n }\n };\n\n var timeout = setInterval(check, 250);\n });\n}\n\nfunction getOrigin(url) {\n var urlHolder = window.location;\n\n if (url) {\n urlHolder = document.createElement('a');\n urlHolder.href = url;\n }\n\n return urlHolder.protocol + '//' + urlHolder.hostname + (urlHolder.port ? ':' + urlHolder.port : '');\n}\n\nfunction resolveAvResource(annotation) {\n if (!annotation.body) {\n return null;\n }\n\n var body = Array.isArray(annotation.body) ? annotation.body : [annotation.body];\n var allBodies = body.filter(function (singleBody) {\n return singleBody.type === 'Choice' || singleBody.type === 'Sound' || singleBody.type === 'Audio' || singleBody.type === 'Video';\n }).map(function (singleBody) {\n if (singleBody.type === 'Choice') {\n // Return first choice for now.\n return singleBody.items.find(function (choiceItem) {\n return choiceItem.type === 'Sound' || choiceItem.type === 'Video' || singleBody.type === 'Audio';\n });\n }\n\n return singleBody;\n }).filter(Boolean); // We only support single bodies.\n\n return allBodies.length ? allBodies[0] : null;\n}\n\nfunction openTokenService(tokenService) {\n // use a Promise across a postMessage call. Discuss...\n return new Promise(function (resolve, reject) {\n // if necessary, the client can decide not to trust this origin\n // const serviceOrigin = getOrigin(tokenService['@id']);\n var iFrame = document.createElement('iframe');\n var timeout = setTimeout(function () {\n reject({\n error: 'request timed out.'\n });\n }, 5000);\n\n var checkMessage = function checkMessage(event) {\n if (event && event.data && event.data.messageId && event.data.messageId === btoa(tokenService)) {\n // This is in a try catch, because of react.\n try {\n if (iFrame.parentNode) {\n iFrame.parentNode.removeChild(iFrame);\n }\n } catch (e) {}\n\n window.removeEventListener('message', checkMessage);\n clearTimeout(timeout);\n resolve(event.data);\n }\n };\n\n window.addEventListener('message', checkMessage, false);\n var separator = tokenService.indexOf('?') === -1 ? '?' : '&';\n document.body.appendChild(iFrame);\n iFrame.src = tokenService + separator + 'messageId=' + btoa(tokenService) + '&origin=' + getOrigin();\n });\n}\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 301\n },\n __self: undefined\n}, \"'loading...'\");\n\nfunction AuthCookieService1(_ref) {\n var service = _ref.service,\n resource = _ref.resource,\n children = _ref.children;\n\n var _ref2 = service || {},\n confirmLabel = _ref2.confirmLabel,\n description = _ref2.description,\n failureDescription = _ref2.failureDescription,\n failureHeader = _ref2.failureHeader,\n header = _ref2.header,\n label = _ref2.label; // Modal bits.\n // const confirmLabel = service.confirmLabel;\n // const description = service.description;\n // const failureDescription = service.failureDescription;\n // const failureHeader = service.failureHeader;\n // const header = service.header;\n // const label = service.label;\n // Open this dialog on click\n\n\n var authService = service ? service['@id'] : null; // Once we see that the window is closed, open this link\n\n var tokenServiceObject = service ? (service.service || []).find(function (embeddedService) {\n return embeddedService.profile === 'http://iiif.io/api/auth/1/token';\n }) : null;\n var tokenService = tokenServiceObject ? tokenServiceObject.id || tokenServiceObject['@id'] : null; // Derived props.\n\n var separator = tokenService ? tokenService.indexOf('?') === -1 ? '?' : '&' : '?'; // Initial load, nothings happened.\n\n var INITIAL_LOAD = 0; // Modal is being shown to user.\n\n var MODAL_SHOWN = 1; // User has actioned the modal.\n\n var WAITING_FOR_LOGIN = 2; // User has closed popup window.\n\n var LOGIN_CONFIRMED = 3; // Waiting for token\n\n var WAITING_FOR_TOKEN = 4; // Token success.\n\n var AUTHENTICATED = 5; // Failures.\n\n var TOKEN_FAILED = 6;\n var LOGIN_FAILED = 7;\n var USER_OPT_OUT = 8; // Hooks.\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(INITIAL_LOAD),\n _useState2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n currentStage = _useState2[0],\n setStageInner = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null),\n _useState4 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n authToken = _useState4[0],\n setAuthToken = _useState4[1];\n\n var setStage = function setStage(stage) {\n logStage(stage, 'setting stage');\n setStageInner(stage);\n }; // Change effect.\n\n\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n if (currentStage === INITIAL_LOAD && resource) {\n log('Probing current resource', resource);\n probeResource(resource).then(function () {\n if (!tokenService) {\n // Nothing more we can do at this point.\n return;\n }\n\n log('Opening token service', tokenService);\n openTokenService(tokenService).then(function (data) {\n if (data.accessToken) {\n setAuthToken(data.accessToken);\n setStage(AUTHENTICATED);\n } else {\n log('No access token on token service', data);\n setStage(MODAL_SHOWN);\n }\n }).catch(function () {\n log('Token service errored');\n setStage(MODAL_SHOWN);\n });\n }).catch(function () {\n log('Probing resource errored');\n setStage(MODAL_SHOWN);\n });\n }\n\n if (currentStage === LOGIN_CONFIRMED) {\n setStage(WAITING_FOR_TOKEN);\n openTokenService(tokenService).then(function (data) {\n if (data.accessToken) {\n setAuthToken(data.accessToken);\n setStage(AUTHENTICATED);\n } else {\n setStage(TOKEN_FAILED);\n }\n }).catch(function () {\n setStage(TOKEN_FAILED);\n });\n }\n }, [currentStage]);\n\n if (!service) {\n return children;\n }\n\n var confirmModal = function confirmModal() {\n setStage(WAITING_FOR_LOGIN);\n windowOpen(\"\".concat(authService).concat(separator, \"origin=\").concat(getOrigin())).then(function () {\n log('Window closed, user should be active.');\n setStage(LOGIN_CONFIRMED);\n }).catch(function () {\n setStage(LOGIN_FAILED);\n });\n };\n\n var dismissModal = function dismissModal() {\n setStage(USER_OPT_OUT);\n };\n\n var dismissErrorModal = function dismissErrorModal() {\n setStage(USER_OPT_OUT);\n };\n\n if (currentStage === INITIAL_LOAD || currentStage === WAITING_FOR_LOGIN || currentStage === WAITING_FOR_TOKEN) {\n return _ref3;\n }\n\n if (currentStage === MODAL_SHOWN) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_components_AuthModal_AuthModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n header: header,\n description: description,\n confirmLabel: confirmLabel,\n onConfirm: confirmModal,\n onDismiss: dismissModal,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 306\n },\n __self: this\n });\n }\n\n if (currentStage === TOKEN_FAILED || currentStage === LOGIN_FAILED) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_components_AuthModal_AuthModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n header: failureHeader || 'Something went wrong',\n description: failureDescription || '',\n confirmLabel: 'Refresh page',\n onConfirm: function onConfirm() {\n return window.location.reload(true);\n },\n dismissLabel: \"Continue without authentication\",\n onDismiss: dismissErrorModal,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 318\n },\n __self: this\n });\n }\n\n if (currentStage === AUTHENTICATED) {\n return children;\n } // User opt-out.\n\n\n return children;\n}\n\n//# sourceURL=webpack:///./src/containers/AuthResource/AuthResource.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resolveAvResource\", function() { return resolveAvResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AuthCookieService1\", function() { return AuthCookieService1; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _components_AuthModal_AuthModal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/AuthModal/AuthModal */ \"./src/components/AuthModal/AuthModal.js\");\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/containers/AuthResource/AuthResource.js\";\n\n\n\nfunction log() {\n if (true) {\n var _console;\n\n (_console = console).log.apply(_console, arguments);\n }\n}\n\nfunction probeResource(url) {\n return new Promise(function (resolve, reject) {\n var http = new XMLHttpRequest();\n http.open('HEAD', url);\n\n http.onreadystatechange = function () {\n if (http.readyState === http.DONE) {\n if (http.status >= 300 && http.status <= 499) {\n reject();\n } else {\n resolve();\n }\n }\n };\n\n http.send();\n });\n}\n\nfunction logStage(stage) {\n var stages = [// Initial load, nothings happened.\n 'INITIAL_LOAD', // Modal is being shown to user.\n 'MODAL_SHOWN', // User has actioned the modal.\n 'WAITING_FOR_LOGIN', // User has closed popup window.\n 'LOGIN_CONFIRMED', // Waiting for token\n 'WAITING_FOR_TOKEN', // Token success.\n 'AUTHENTICATED', // Failures.\n 'TOKEN_FAILED', 'LOGIN_FAILED', 'USER_OPT_OUT'];\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return log.apply(void 0, [stages[stage]].concat(args));\n}\n\nfunction windowOpen(url) {\n return new Promise(function (resolve) {\n var windowRef = window.open(url);\n\n var check = function check() {\n if (windowRef.closed) {\n clearInterval(timeout);\n resolve();\n }\n };\n\n var timeout = setInterval(check, 250);\n });\n}\n\nfunction getOrigin(url) {\n var urlHolder = window.location;\n\n if (url) {\n urlHolder = document.createElement('a');\n urlHolder.href = url;\n }\n\n return urlHolder.protocol + '//' + urlHolder.hostname + (urlHolder.port ? ':' + urlHolder.port : '');\n}\n\nfunction resolveAvResource(annotation) {\n if (!annotation.body) {\n return null;\n }\n\n var body = Array.isArray(annotation.body) ? annotation.body : [annotation.body];\n var allBodies = body.filter(function (singleBody) {\n return singleBody.type === 'Choice' || singleBody.type === 'Sound' || singleBody.type === 'Audio' || singleBody.type === 'Video';\n }).map(function (singleBody) {\n if (singleBody.type === 'Choice') {\n // Return first choice for now.\n return singleBody.items.find(function (choiceItem) {\n return choiceItem.type === 'Sound' || choiceItem.type === 'Video' || singleBody.type === 'Audio';\n });\n }\n\n return singleBody;\n }).filter(Boolean); // We only support single bodies.\n\n return allBodies.length ? allBodies[0] : null;\n}\n\nfunction openTokenService(tokenService) {\n // use a Promise across a postMessage call. Discuss...\n return new Promise(function (resolve, reject) {\n // if necessary, the client can decide not to trust this origin\n // const serviceOrigin = getOrigin(tokenService['@id']);\n var iFrame = document.createElement('iframe');\n var timeout = setTimeout(function () {\n reject({\n error: 'request timed out.'\n });\n }, 5000);\n\n var checkMessage = function checkMessage(event) {\n if (event && event.data && event.data.messageId && event.data.messageId === btoa(tokenService)) {\n // This is in a try catch, because of react.\n try {\n if (iFrame.parentNode) {\n iFrame.parentNode.removeChild(iFrame);\n }\n } catch (e) {}\n\n window.removeEventListener('message', checkMessage);\n clearTimeout(timeout);\n resolve(event.data);\n }\n };\n\n window.addEventListener('message', checkMessage, false);\n var separator = tokenService.indexOf('?') === -1 ? '?' : '&';\n document.body.appendChild(iFrame);\n iFrame.src = tokenService + separator + 'messageId=' + btoa(tokenService) + '&origin=' + getOrigin();\n });\n}\n\nvar _ref3 =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 301\n },\n __self: undefined\n}, \"'loading...'\");\n\nfunction AuthCookieService1(_ref) {\n var service = _ref.service,\n resource = _ref.resource,\n children = _ref.children;\n\n var _ref2 = service || {},\n confirmLabel = _ref2.confirmLabel,\n description = _ref2.description,\n failureDescription = _ref2.failureDescription,\n failureHeader = _ref2.failureHeader,\n header = _ref2.header,\n label = _ref2.label; // Modal bits.\n // const confirmLabel = service.confirmLabel;\n // const description = service.description;\n // const failureDescription = service.failureDescription;\n // const failureHeader = service.failureHeader;\n // const header = service.header;\n // const label = service.label;\n // Open this dialog on click\n\n\n var authService = service ? service['@id'] : null; // Once we see that the window is closed, open this link\n\n var tokenServiceObject = service ? (service.service || []).find(function (embeddedService) {\n return embeddedService.profile === 'http://iiif.io/api/auth/1/token';\n }) : null;\n var tokenService = tokenServiceObject ? tokenServiceObject.id || tokenServiceObject['@id'] : null; // Derived props.\n\n var separator = tokenService ? tokenService.indexOf('?') === -1 ? '?' : '&' : '?'; // Initial load, nothings happened.\n\n var INITIAL_LOAD = 0; // Modal is being shown to user.\n\n var MODAL_SHOWN = 1; // User has actioned the modal.\n\n var WAITING_FOR_LOGIN = 2; // User has closed popup window.\n\n var LOGIN_CONFIRMED = 3; // Waiting for token\n\n var WAITING_FOR_TOKEN = 4; // Token success.\n\n var AUTHENTICATED = 5; // Failures.\n\n var TOKEN_FAILED = 6;\n var LOGIN_FAILED = 7;\n var USER_OPT_OUT = 8; // Hooks.\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(INITIAL_LOAD),\n _useState2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n currentStage = _useState2[0],\n setStageInner = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(null),\n _useState4 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n authToken = _useState4[0],\n setAuthToken = _useState4[1];\n\n var setStage = function setStage(stage) {\n logStage(stage, 'setting stage');\n setStageInner(stage);\n }; // Change effect.\n\n\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n if (currentStage === INITIAL_LOAD && resource) {\n log('Probing current resource', resource);\n probeResource(resource).then(function () {\n if (!tokenService) {\n // Nothing more we can do at this point.\n return;\n }\n\n log('Opening token service', tokenService);\n openTokenService(tokenService).then(function (data) {\n if (data.accessToken) {\n setAuthToken(data.accessToken);\n setStage(AUTHENTICATED);\n } else {\n log('No access token on token service', data);\n setStage(MODAL_SHOWN);\n }\n }).catch(function () {\n log('Token service errored');\n setStage(MODAL_SHOWN);\n });\n }).catch(function () {\n log('Probing resource errored');\n setStage(MODAL_SHOWN);\n });\n }\n\n if (currentStage === LOGIN_CONFIRMED) {\n setStage(WAITING_FOR_TOKEN);\n openTokenService(tokenService).then(function (data) {\n if (data.accessToken) {\n setAuthToken(data.accessToken);\n setStage(AUTHENTICATED);\n } else {\n setStage(TOKEN_FAILED);\n }\n }).catch(function () {\n setStage(TOKEN_FAILED);\n });\n }\n }, [currentStage]);\n\n if (!service) {\n return children;\n }\n\n var confirmModal = function confirmModal() {\n setStage(WAITING_FOR_LOGIN);\n windowOpen(\"\".concat(authService).concat(separator, \"origin=\").concat(getOrigin())).then(function () {\n log('Window closed, user should be active.');\n setStage(LOGIN_CONFIRMED);\n }).catch(function () {\n setStage(LOGIN_FAILED);\n });\n };\n\n var dismissModal = function dismissModal() {\n setStage(USER_OPT_OUT);\n };\n\n var dismissErrorModal = function dismissErrorModal() {\n setStage(USER_OPT_OUT);\n };\n\n if (currentStage === INITIAL_LOAD || currentStage === WAITING_FOR_LOGIN || currentStage === WAITING_FOR_TOKEN) {\n return _ref3;\n }\n\n if (currentStage === MODAL_SHOWN) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_components_AuthModal_AuthModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n header: header,\n description: description,\n confirmLabel: confirmLabel,\n onConfirm: confirmModal,\n onDismiss: dismissModal,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 306\n },\n __self: this\n });\n }\n\n if (currentStage === TOKEN_FAILED || currentStage === LOGIN_FAILED) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_components_AuthModal_AuthModal__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n header: failureHeader || 'Something went wrong',\n description: failureDescription || '',\n confirmLabel: 'Refresh page',\n onConfirm: function onConfirm() {\n return window.location.reload(true);\n },\n dismissLabel: \"Continue without authentication\",\n onDismiss: dismissErrorModal,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 318\n },\n __self: this\n });\n }\n\n if (currentStage === AUTHENTICATED) {\n return children;\n } // User opt-out.\n\n\n return children;\n}\n\n//# sourceURL=webpack:///./src/containers/AuthResource/AuthResource.js?");
/***/ }),
@@ -10929,7 +10941,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_measure__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-measure */ \"./node_modules/react-measure/dist/index.esm.js\");\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var lodash_flow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash.flow */ \"./node_modules/lodash.flow/index.js\");\n/* harmony import */ var lodash_flow__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_flow__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _components_BubbleDisplay_BubbleDisplay__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../components/BubbleDisplay/BubbleDisplay */ \"./src/components/BubbleDisplay/BubbleDisplay.js\");\n/* harmony import */ var _components_SingleBubble_SingleBubble__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/SingleBubble/SingleBubble */ \"./src/components/SingleBubble/SingleBubble.js\");\n/* harmony import */ var _components_TimelineScrubber_TimelineScrubber__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../components/TimelineScrubber/TimelineScrubber */ \"./src/components/TimelineScrubber/TimelineScrubber.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _hocs_pan__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../hocs/pan */ \"./src/hocs/pan.js\");\n/* harmony import */ var _hocs_dragPlayhead__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../hocs/dragPlayhead */ \"./src/hocs/dragPlayhead.js\");\n/* harmony import */ var _hocs_dragBubbleMarker__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../hocs/dragBubbleMarker */ \"./src/hocs/dragBubbleMarker.js\");\n/* harmony import */ var _hocs_dragMarker__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../hocs/dragMarker */ \"./src/hocs/dragMarker.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../actions/markers */ \"./src/actions/markers.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/containers/BubbleEditor/BubbleEditor.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar isOSX = navigator.userAgent.indexOf('Mac OS X') !== -1;\n\nvar BubbleEditor =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(BubbleEditor, _React$Component);\n\n function BubbleEditor(props) {\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, BubbleEditor);\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(BubbleEditor).call(this, props));\n\n _this.toggleSelects = function (point, ev) {\n var selectedPoints = _this.props.selectedPoints;\n var deselectOthers = !(isOSX ? ev.metaKey : ev.ctrlKey);\n\n if (ev.shiftKey) {\n ev.preventDefault();\n\n var selectedBubbles = _this.props.selectedPoints.map(function (id) {\n return _this.props.points[id];\n });\n\n var fromMin = Math.min.apply(Math, [point.startTime].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedBubbles.map(function (p) {\n return p.startTime;\n }))));\n var toMax = Math.max.apply(Math, [point.endTime].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedBubbles.map(function (p) {\n return p.endTime;\n }))));\n var newSelectedBubbles = Object.values(_this.props.points).filter(function (singlePoint) {\n return singlePoint.startTime >= fromMin && singlePoint.endTime <= toMax;\n }).filter(function (singlePoint) {\n return _this.props.selectedPoints.indexOf(singlePoint.id) === -1;\n });\n newSelectedBubbles.forEach(function (singlePoint) {\n _this.props.selectRange(singlePoint.id, false);\n });\n return;\n }\n\n if (selectedPoints.indexOf(point.id) === -1 || deselectOthers) {\n _this.props.selectRange(point.id, deselectOthers);\n } else {\n _this.props.deselectRange(point.id);\n }\n };\n\n _this.getTimePoints = function () {\n return Array.from(Object.values(_this.props.points).reduce(function (timePointsSet, bubble) {\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_14__[\"RANGE\"].START_TIME]);\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_14__[\"RANGE\"].END_TIME]);\n return timePointsSet;\n }, new Set())).sort(function (p1, p2) {\n return p1 - p2;\n });\n };\n\n _this.dragStart = function (resource, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n var _this$props = _this.props,\n dragStartBubbleMarker = _this$props.dragStartBubbleMarker,\n dragStartPlayhead = _this$props.dragStartPlayhead,\n dragStartMarker = _this$props.dragStartMarker;\n\n if (resource.type === 'marker') {\n return dragStartMarker(resource, ev);\n }\n\n if (resource.type === 'time-point') {\n // Return if first or last point.\n if (resource.index === 0 || resource.index === _this.getTimePoints().length - 1) {\n return;\n }\n\n return dragStartBubbleMarker(resource, ev);\n }\n\n if (resource.type === 'scrubber') {\n return dragStartPlayhead(resource, ev);\n }\n };\n\n _this.setDimensions = function (dimensions) {\n _this.props.updateViewerWidth(dimensions.width);\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(BubbleEditor, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n runTime = _this$props2.runTime,\n currentTime = _this$props2.currentTime,\n zoom = _this$props2.zoom,\n x = _this$props2.x,\n onUpdateTime = _this$props2.onUpdateTime,\n splitRange = _this$props2.splitRange,\n bubbleHeight = _this$props2.bubbleHeight,\n bubbleStyle = _this$props2.bubbleStyle,\n blackAndWhiteMode = _this$props2.blackAndWhiteMode,\n onPanStart = _this$props2.onPanStart,\n viewport = _this$props2.viewport,\n bubbleMarkerMovement = _this$props2.bubbleMarkerMovement,\n playhead = _this$props2.playhead,\n markerMovement = _this$props2.markerMovement,\n viewerWidth = _this$props2.viewerWidth,\n selectedPoints = _this$props2.selectedPoints,\n colourPalette = _this$props2.colourPalette,\n startTime = _this$props2.startTime;\n var timePoints = this.getTimePoints();\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n style: {\n background: this.props.backgroundColour\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 156\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n style: {\n position: 'relative',\n margin: '16px 5px 0 5px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(react_measure__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n bounds: true,\n onResize: function onResize(contentRect) {\n return _this2.setDimensions(contentRect.bounds);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 163\n },\n __self: this\n }, function (_ref) {\n var measureRef = _ref.measureRef;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n ref: measureRef,\n style: blackAndWhiteMode ? {\n filter: 'grayscale(1.0)'\n } : {},\n __source: {\n fileName: _jsxFileName,\n lineNumber: 168\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_components_BubbleDisplay_BubbleDisplay__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n points: _this2.props.points,\n width: viewerWidth,\n height: window.innerHeight * 0.3,\n x: viewport.startX !== -1 ? viewport.x : x,\n zoom: zoom,\n bubbleHeight: bubbleHeight * (window.innerHeight * 0.3 / 300),\n shape: bubbleStyle,\n onPanStart: onPanStart,\n colourPalette: colourPalette,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 172\n },\n __self: this\n }, function (points) {\n return points.sort(function (b1, b2) {\n return b2.point.depth - b1.point.depth === 0 ? b1.x - b2.x : b2.point.depth - b1.point.depth;\n }).map(function (bubble, n) {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_components_SingleBubble_SingleBubble__WEBPACK_IMPORTED_MODULE_11__[\"default\"], Object.assign({\n key: \"bk-\".concat(bubble.point.id)\n }, bubble, {\n isSelected: selectedPoints.indexOf(bubble.point.id) !== -1,\n onPanStart: onPanStart,\n onClick: _this2.toggleSelects,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 193\n },\n __self: this\n }));\n });\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_components_TimelineScrubber_TimelineScrubber__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n runTime: runTime,\n currentTime: currentTime,\n zoom: zoom,\n x: viewport.startX !== -1 ? viewport.x : x,\n width: viewerWidth,\n timePoints: timePoints,\n markerMovement: markerMovement,\n bubbleMarkerMovement: bubbleMarkerMovement,\n onUpdateTime: onUpdateTime,\n onClickPoint: splitRange,\n dragStart: _this2.dragStart,\n showTimes: _this2.props.showTimes,\n isPlayheadUpdating: playhead.isUpdating,\n playheadX: playhead.x,\n markers: _this2.props.markers,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 205\n },\n __self: this\n }));\n })));\n }\n }]);\n\n return BubbleEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6___default.a.Component);\n\nvar mapStateProps = function mapStateProps(state) {\n return {\n currentTime: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].CURRENT_TIME],\n runTime: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].RUNTIME],\n markers: state.markers.visible ? state.markers.list : {},\n points: Object(_reducers_range__WEBPACK_IMPORTED_MODULE_18__[\"getRangeList\"])(state),\n selectedPoints: Object(_reducers_range__WEBPACK_IMPORTED_MODULE_18__[\"getSelectedRanges\"])(state),\n zoom: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].ZOOM],\n x: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].X],\n viewerWidth: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].VIEWER_WIDTH],\n bubbleHeight: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BUBBLE_HEIGHT],\n bubbleStyle: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BUBBLE_STYLE],\n showTimes: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].SHOW_TIMES],\n blackAndWhiteMode: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BLACK_N_WHITE],\n backgroundColour: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BACKGROUND_COLOUR],\n showMarkers: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].SHOW_MARKERS],\n colourPalette: _config__WEBPACK_IMPORTED_MODULE_24__[\"colourPalettes\"][state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].COLOUR_PALETTE]] || _config__WEBPACK_IMPORTED_MODULE_24__[\"colourPalettes\"].default\n };\n};\n\nvar mapDispatchToProps = {\n panToPosition: _actions_viewState__WEBPACK_IMPORTED_MODULE_13__[\"panToPosition\"],\n onUpdateTime: _actions_viewState__WEBPACK_IMPORTED_MODULE_13__[\"setCurrentTime\"],\n splitRange: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"splitRangeAt\"],\n selectRange: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"selectRange\"],\n deselectRange: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"deselectRange\"],\n movePoint: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"movePoint\"],\n updateMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_23__[\"updateMarker\"],\n selectMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_23__[\"selectMarker\"],\n updateViewerWidth: _actions_viewState__WEBPACK_IMPORTED_MODULE_13__[\"updateViewerWidth\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (lodash_flow__WEBPACK_IMPORTED_MODULE_9___default()(_hocs_pan__WEBPACK_IMPORTED_MODULE_19__[\"default\"], _hocs_dragBubbleMarker__WEBPACK_IMPORTED_MODULE_21__[\"default\"], _hocs_dragPlayhead__WEBPACK_IMPORTED_MODULE_20__[\"default\"], _hocs_dragMarker__WEBPACK_IMPORTED_MODULE_22__[\"default\"], Object(react_redux__WEBPACK_IMPORTED_MODULE_8__[\"connect\"])(mapStateProps, mapDispatchToProps))(BubbleEditor));\n\n//# sourceURL=webpack:///./src/containers/BubbleEditor/BubbleEditor.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_measure__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-measure */ \"./node_modules/react-measure/dist/index.esm.js\");\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var lodash_flow__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash.flow */ \"./node_modules/lodash.flow/index.js\");\n/* harmony import */ var lodash_flow__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_flow__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _components_BubbleDisplay_BubbleDisplay__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../components/BubbleDisplay/BubbleDisplay */ \"./src/components/BubbleDisplay/BubbleDisplay.js\");\n/* harmony import */ var _components_SingleBubble_SingleBubble__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/SingleBubble/SingleBubble */ \"./src/components/SingleBubble/SingleBubble.js\");\n/* harmony import */ var _components_TimelineScrubber_TimelineScrubber__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../components/TimelineScrubber/TimelineScrubber */ \"./src/components/TimelineScrubber/TimelineScrubber.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _hocs_pan__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../hocs/pan */ \"./src/hocs/pan.js\");\n/* harmony import */ var _hocs_dragPlayhead__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../hocs/dragPlayhead */ \"./src/hocs/dragPlayhead.js\");\n/* harmony import */ var _hocs_dragBubbleMarker__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../hocs/dragBubbleMarker */ \"./src/hocs/dragBubbleMarker.js\");\n/* harmony import */ var _hocs_dragMarker__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../hocs/dragMarker */ \"./src/hocs/dragMarker.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../actions/markers */ \"./src/actions/markers.js\");\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/containers/BubbleEditor/BubbleEditor.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar isOSX = navigator.userAgent.indexOf('Mac OS X') !== -1;\n\nvar BubbleEditor =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(BubbleEditor, _React$Component);\n\n function BubbleEditor(props) {\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, BubbleEditor);\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(BubbleEditor).call(this, props));\n\n _this.toggleSelects = function (point, ev) {\n var selectedPoints = _this.props.selectedPoints;\n var deselectOthers = !(isOSX ? ev.metaKey : ev.ctrlKey);\n\n if (ev.shiftKey) {\n ev.preventDefault();\n\n var selectedBubbles = _this.props.selectedPoints.map(function (id) {\n return _this.props.points[id];\n });\n\n var fromMin = Math.min.apply(Math, [point.startTime].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedBubbles.map(function (p) {\n return p.startTime;\n }))));\n var toMax = Math.max.apply(Math, [point.endTime].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedBubbles.map(function (p) {\n return p.endTime;\n }))));\n var newSelectedBubbles = Object.values(_this.props.points).filter(function (singlePoint) {\n return singlePoint.startTime >= fromMin && singlePoint.endTime <= toMax;\n }).filter(function (singlePoint) {\n return _this.props.selectedPoints.indexOf(singlePoint.id) === -1;\n });\n newSelectedBubbles.forEach(function (singlePoint) {\n _this.props.selectRange(singlePoint.id, false);\n });\n return;\n }\n\n if (selectedPoints.indexOf(point.id) === -1 || deselectOthers) {\n _this.props.selectRange(point.id, deselectOthers);\n } else {\n _this.props.deselectRange(point.id);\n }\n };\n\n _this.getTimePoints = function () {\n return Array.from(Object.values(_this.props.points).reduce(function (timePointsSet, bubble) {\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_14__[\"RANGE\"].START_TIME]);\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_14__[\"RANGE\"].END_TIME]);\n return timePointsSet;\n }, new Set())).sort(function (p1, p2) {\n return p1 - p2;\n });\n };\n\n _this.dragStart = function (resource, ev) {\n ev.preventDefault();\n ev.stopPropagation();\n var _this$props = _this.props,\n dragStartBubbleMarker = _this$props.dragStartBubbleMarker,\n dragStartPlayhead = _this$props.dragStartPlayhead,\n dragStartMarker = _this$props.dragStartMarker;\n\n if (resource.type === 'marker') {\n return dragStartMarker(resource, ev);\n }\n\n if (resource.type === 'time-point') {\n // Return if first or last point.\n if (resource.index === 0 || resource.index === _this.getTimePoints().length - 1) {\n return;\n }\n\n return dragStartBubbleMarker(resource, ev);\n }\n\n if (resource.type === 'scrubber') {\n return dragStartPlayhead(resource, ev);\n }\n };\n\n _this.setDimensions = function (dimensions) {\n _this.props.updateViewerWidth(dimensions.width);\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(BubbleEditor, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n runTime = _this$props2.runTime,\n currentTime = _this$props2.currentTime,\n zoom = _this$props2.zoom,\n x = _this$props2.x,\n onUpdateTime = _this$props2.onUpdateTime,\n splitRange = _this$props2.splitRange,\n bubbleHeight = _this$props2.bubbleHeight,\n bubbleStyle = _this$props2.bubbleStyle,\n blackAndWhiteMode = _this$props2.blackAndWhiteMode,\n onPanStart = _this$props2.onPanStart,\n viewport = _this$props2.viewport,\n bubbleMarkerMovement = _this$props2.bubbleMarkerMovement,\n playhead = _this$props2.playhead,\n markerMovement = _this$props2.markerMovement,\n viewerWidth = _this$props2.viewerWidth,\n selectedPoints = _this$props2.selectedPoints,\n colourPalette = _this$props2.colourPalette,\n startTime = _this$props2.startTime;\n var timePoints = this.getTimePoints();\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n style: {\n background: this.props.backgroundColour\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 156\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n style: {\n position: 'relative',\n margin: '16px 5px 0 5px'\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 157\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(react_measure__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n bounds: true,\n onResize: function onResize(contentRect) {\n return _this2.setDimensions(contentRect.bounds);\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 163\n },\n __self: this\n }, function (_ref) {\n var measureRef = _ref.measureRef;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", {\n ref: measureRef,\n style: blackAndWhiteMode ? {\n filter: 'grayscale(1.0)'\n } : {},\n __source: {\n fileName: _jsxFileName,\n lineNumber: 168\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_components_BubbleDisplay_BubbleDisplay__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n points: _this2.props.points,\n width: viewerWidth,\n height: window.innerHeight * 0.3,\n x: viewport.startX !== -1 ? viewport.x : x,\n zoom: zoom,\n bubbleHeight: bubbleHeight * (window.innerHeight * 0.3 / 300),\n shape: bubbleStyle,\n onPanStart: onPanStart,\n colourPalette: colourPalette,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 172\n },\n __self: this\n }, function (points) {\n return points.sort(function (b1, b2) {\n return b2.point.depth - b1.point.depth === 0 ? b1.x - b2.x : b2.point.depth - b1.point.depth;\n }).map(function (bubble, n) {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_components_SingleBubble_SingleBubble__WEBPACK_IMPORTED_MODULE_11__[\"default\"], Object.assign({\n key: \"bk-\".concat(bubble.point.id)\n }, bubble, {\n isSelected: selectedPoints.indexOf(bubble.point.id) !== -1,\n onPanStart: onPanStart,\n onClick: _this2.toggleSelects,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 193\n },\n __self: this\n }));\n });\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_components_TimelineScrubber_TimelineScrubber__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n runTime: runTime,\n currentTime: currentTime,\n zoom: zoom,\n x: viewport.startX !== -1 ? viewport.x : x,\n width: viewerWidth,\n timePoints: timePoints,\n markerMovement: markerMovement,\n bubbleMarkerMovement: bubbleMarkerMovement,\n onUpdateTime: onUpdateTime,\n onClickPoint: splitRange,\n dragStart: _this2.dragStart,\n showTimes: _this2.props.showTimes,\n isPlayheadUpdating: playhead.isUpdating,\n playheadX: playhead.x,\n markers: _this2.props.markers,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 205\n },\n __self: this\n }));\n })));\n }\n }]);\n\n return BubbleEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6___default.a.Component);\n\nvar mapStateProps = function mapStateProps(state) {\n return {\n currentTime: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].CURRENT_TIME],\n runTime: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].RUNTIME],\n markers: state.markers.visible ? state.markers.list : {},\n points: Object(_reducers_range__WEBPACK_IMPORTED_MODULE_18__[\"getRangeList\"])(state),\n selectedPoints: Object(_reducers_range__WEBPACK_IMPORTED_MODULE_18__[\"getSelectedRanges\"])(state),\n zoom: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].ZOOM],\n x: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].X],\n viewerWidth: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_16__[\"VIEWSTATE\"].VIEWER_WIDTH],\n bubbleHeight: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BUBBLE_HEIGHT],\n bubbleStyle: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BUBBLE_STYLE],\n showTimes: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].SHOW_TIMES],\n blackAndWhiteMode: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BLACK_N_WHITE],\n backgroundColour: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].BACKGROUND_COLOUR],\n showMarkers: state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].SHOW_MARKERS],\n colourPalette: _config__WEBPACK_IMPORTED_MODULE_24__[\"colourPalettes\"][state.project[_constants_project__WEBPACK_IMPORTED_MODULE_15__[\"PROJECT\"].COLOUR_PALETTE]] || _config__WEBPACK_IMPORTED_MODULE_24__[\"colourPalettes\"].default\n };\n};\n\nvar mapDispatchToProps = {\n panToPosition: _actions_viewState__WEBPACK_IMPORTED_MODULE_13__[\"panToPosition\"],\n onUpdateTime: _actions_viewState__WEBPACK_IMPORTED_MODULE_13__[\"setCurrentTime\"],\n splitRange: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"splitRangeAt\"],\n selectRange: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"selectRange\"],\n deselectRange: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"deselectRange\"],\n movePoint: _actions_range__WEBPACK_IMPORTED_MODULE_17__[\"movePoint\"],\n updateMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_23__[\"updateMarker\"],\n selectMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_23__[\"selectMarker\"],\n updateViewerWidth: _actions_viewState__WEBPACK_IMPORTED_MODULE_13__[\"updateViewerWidth\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (lodash_flow__WEBPACK_IMPORTED_MODULE_9___default()(_hocs_pan__WEBPACK_IMPORTED_MODULE_19__[\"default\"], _hocs_dragBubbleMarker__WEBPACK_IMPORTED_MODULE_21__[\"default\"], _hocs_dragPlayhead__WEBPACK_IMPORTED_MODULE_20__[\"default\"], _hocs_dragMarker__WEBPACK_IMPORTED_MODULE_22__[\"default\"], Object(react_redux__WEBPACK_IMPORTED_MODULE_8__[\"connect\"])(mapStateProps, mapDispatchToProps))(BubbleEditor));\n\n//# sourceURL=webpack:///./src/containers/BubbleEditor/BubbleEditor.js?");
/***/ }),
@@ -10941,7 +10953,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _VariationsMainView_VariationsMainView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VariationsMainView/VariationsMainView */ \"./src/containers/VariationsMainView/VariationsMainView.js\");\n/* harmony import */ var redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! redux-persist/integration/react */ \"./node_modules/redux-persist/es/integration/react.js\");\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/containers/Root/Root.js\";\n\n\n\n\n\n\nvar Root = function Root(_ref) {\n var store = _ref.store,\n persistor = _ref.persistor,\n callback = _ref.callback,\n hasResource = _ref.hasResource,\n noFooter = _ref.noFooter,\n noHeader = _ref.noHeader,\n noSourceLink = _ref.noSourceLink;\n\n try {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_redux__WEBPACK_IMPORTED_MODULE_2__[\"Provider\"], {\n store: store,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 18\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_4__[\"PersistGate\"], {\n loading: \"loading...\",\n persistor: persistor,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_VariationsMainView_VariationsMainView__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n callback: callback,\n hasResource: hasResource,\n noFooter: noFooter,\n noHeader: noHeader,\n noSourceLink: noSourceLink,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 20\n },\n __self: this\n })));\n } catch (err) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 31\n },\n __self: this\n }, err);\n }\n};\n\nRoot.propTypes = {\n store: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Root);\n\n//# sourceURL=webpack:///./src/containers/Root/Root.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _VariationsMainView_VariationsMainView__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../VariationsMainView/VariationsMainView */ \"./src/containers/VariationsMainView/VariationsMainView.js\");\n/* harmony import */ var redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! redux-persist/integration/react */ \"./node_modules/redux-persist/es/integration/react.js\");\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/containers/Root/Root.js\";\n\n\n\n\n\n\nvar Root = function Root(_ref) {\n var store = _ref.store,\n persistor = _ref.persistor,\n callback = _ref.callback,\n hasResource = _ref.hasResource,\n noFooter = _ref.noFooter,\n noHeader = _ref.noHeader,\n noVideo = _ref.noVideo,\n noSourceLink = _ref.noSourceLink;\n\n try {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_redux__WEBPACK_IMPORTED_MODULE_2__[\"Provider\"], {\n store: store,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 19\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(redux_persist_integration_react__WEBPACK_IMPORTED_MODULE_4__[\"PersistGate\"], {\n loading: \"loading...\",\n persistor: persistor,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 20\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_VariationsMainView_VariationsMainView__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n callback: callback,\n hasResource: hasResource,\n noFooter: noFooter,\n noHeader: noHeader,\n noVideo: noVideo,\n noSourceLink: noSourceLink,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 21\n },\n __self: this\n })));\n } catch (err) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 33\n },\n __self: this\n }, err);\n }\n};\n\nRoot.propTypes = {\n store: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Root);\n\n//# sourceURL=webpack:///./src/containers/Root/Root.js?");
/***/ }),
@@ -10953,7 +10965,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _components_VariationsAppBar_VariationsAppBar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../components/VariationsAppBar/VariationsAppBar */ \"./src/components/VariationsAppBar/VariationsAppBar.js\");\n/* harmony import */ var _components_AudioTransportBar_AudioTransportBar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../components/AudioTransportBar/AudioTransportBar */ \"./src/components/AudioTransportBar/AudioTransportBar.js\");\n/* harmony import */ var _components_Metadata_Metadata__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/Metadata/Metadata */ \"./src/components/Metadata/Metadata.js\");\n/* harmony import */ var _components_AudioImporter_AudioImporter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../components/AudioImporter/AudioImporter */ \"./src/components/AudioImporter/AudioImporter.js\");\n/* harmony import */ var _components_SettingsPopoup_SettingsPopup__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../components/SettingsPopoup/SettingsPopup */ \"./src/components/SettingsPopoup/SettingsPopup.js\");\n/* harmony import */ var _components_Footer_Footer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../components/Footer/Footer */ \"./src/components/Footer/Footer.js\");\n/* harmony import */ var _components_ContentOverlay_ContentOverlay__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../components/ContentOverlay/ContentOverlay */ \"./src/components/ContentOverlay/ContentOverlay.js\");\n/* harmony import */ var _components_VerifyDialog_VerifyDialog__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../components/VerifyDialog/VerifyDialog */ \"./src/components/VerifyDialog/VerifyDialog.js\");\n/* harmony import */ var _BubbleEditor_BubbleEditor__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../BubbleEditor/BubbleEditor */ \"./src/containers/BubbleEditor/BubbleEditor.js\");\n/* harmony import */ var _Audio_Audio__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../Audio/Audio */ \"./src/containers/Audio/Audio.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../actions/markers */ \"./src/actions/markers.js\");\n/* harmony import */ var _VariationsMainView_scss__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./VariationsMainView.scss */ \"./src/containers/VariationsMainView/VariationsMainView.scss\");\n/* harmony import */ var _VariationsMainView_scss__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_VariationsMainView_scss__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../AuthResource/AuthResource */ \"./src/containers/AuthResource/AuthResource.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! redux-undo-redo */ \"./node_modules/redux-undo-redo/lib/index.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/containers/VariationsMainView/VariationsMainView.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_Footer_Footer__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 316\n },\n __self: undefined\n});\n\nvar VariationsMainView =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(VariationsMainView, _React$Component);\n\n function VariationsMainView(props) {\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, VariationsMainView);\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(VariationsMainView).call(this, props));\n\n _this.addRange = function (selected) {\n return function () {\n _this.props.splitRangeAt((selected[_constants_range__WEBPACK_IMPORTED_MODULE_21__[\"RANGE\"].END_TIME] - selected[_constants_range__WEBPACK_IMPORTED_MODULE_21__[\"RANGE\"].START_TIME]) / 2 + selected[_constants_range__WEBPACK_IMPORTED_MODULE_21__[\"RANGE\"].START_TIME]);\n };\n };\n\n _this.groupSelectedRanges = function () {\n _this.props.groupSelectedRanges();\n };\n\n _this.deleteRanges = function (ranges) {\n return function () {\n _this.props.deleteRanges(ranges);\n };\n };\n\n _this.isGroupingPossible = function (selectedRanges) {\n var newRangeMinMax = selectedRanges.reduce(function (newRange, bubble) {\n newRange.startTime = Math.min(newRange.startTime, bubble.startTime);\n newRange.endTime = Math.max(newRange.endTime, bubble.endTime);\n return newRange;\n }, {\n startTime: Number.MAX_SAFE_INTEGER,\n endTime: Number.MIN_SAFE_INTEGER\n });\n var tallBubbles = Object.values(_this.props.points).filter(function (bubble) {\n return bubble.depth > 1;\n });\n return tallBubbles.filter(function (bubble) {\n return bubble.startTime < newRangeMinMax.startTime && newRangeMinMax.startTime < bubble.endTime && bubble.endTime < newRangeMinMax.endTime || newRangeMinMax.startTime < bubble.startTime && bubble.startTime < newRangeMinMax.endTime && newRangeMinMax.endTime < bubble.endTime || bubble.startTime === newRangeMinMax.startTime && bubble.endTime === newRangeMinMax.endTime;\n }).length === 0;\n };\n\n _this.isSplittingPossible = function () {\n return !Object.values(_this.props.points).reduce(function (allPoints, range) {\n allPoints.add(range.startTime);\n allPoints.add(range.endTime);\n return allPoints;\n }, new Set([])).has(_this.props.currentTime);\n };\n\n _this.splitRange = function () {\n return _this.props.splitRangeAt(_this.props.currentTime);\n };\n\n _this.addMarker = function () {\n return _this.props.addMarkerAtTime(_this.props.currentTime);\n };\n\n _this.getAuthService = function () {\n var annotationPages = _this.props.annotationPages;\n\n if (annotationPages && annotationPages[0] && annotationPages[0].items && annotationPages[0].items[0]) {\n var avResource = Object(_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_28__[\"resolveAvResource\"])(annotationPages[0].items[0]);\n return avResource.service;\n }\n };\n\n _this.getOnSave = function () {\n if (!_this.props.callback) {\n return null;\n }\n\n return _this.props.saveProject;\n };\n\n _this.theme = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"createMuiTheme\"])({\n palette: {\n primary: {\n light: '#757ce8',\n main: '#3f50b5',\n dark: '#002884',\n contrastText: '#fff'\n },\n secondary: {\n light: '#d2abf3',\n main: '#C797F0',\n dark: '#8b69a8',\n contrastText: '#000'\n }\n },\n status: {\n danger: 'orange'\n },\n spacing: {\n unit: 4\n },\n shape: {\n borderRadius: 2\n },\n typography: {\n fontSize: 12,\n useNextVariants: true\n },\n mixins: {\n toolbar: {\n minHeight: 36\n }\n }\n });\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(VariationsMainView, [{\n key: \"render\",\n value: function render() {\n var _points = this.props.points;\n var _this$props = this.props,\n isPlaying = _this$props.isPlaying,\n volume = _this$props.volume,\n currentTime = _this$props.currentTime,\n audioUrl = _this$props.audioUrl,\n runTime = _this$props.runTime,\n manifestLabel = _this$props.manifestLabel,\n manifestSummary = _this$props.manifestSummary,\n homepage = _this$props.homepage,\n homepageLabel = _this$props.homepageLabel,\n isImportOpen = _this$props.isImportOpen,\n isSettingsOpen = _this$props.isSettingsOpen,\n audioError = _this$props.audioError,\n loadingPercent = _this$props.loadingPercent,\n isLoaded = _this$props.isLoaded,\n rangeToEdit = _this$props.rangeToEdit,\n settings = _this$props.settings,\n selectedRanges = _this$props.selectedRanges,\n hasResource = _this$props.hasResource,\n colourPalette = _this$props.colourPalette,\n noFooter = _this$props.noFooter,\n noHeader = _this$props.noHeader,\n noSourceLink = _this$props.noSourceLink,\n zoom = _this$props.zoom;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"variations-app\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 220\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"MuiThemeProvider\"], {\n theme: this.theme,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 221\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_VariationsAppBar_VariationsAppBar__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n title: manifestLabel,\n onImportButtonClicked: this.props.showImportModal,\n onSettingsButtonClicked: this.props.showSettingsModal,\n canUndo: this.props.canUndo,\n canRedo: this.props.canRedo,\n onRedo: this.props.onRedo,\n onUndo: this.props.onUndo,\n onSave: this.getOnSave(),\n onTitleChange: function onTitleChange() {},\n hasResource: this.props.hasResource,\n noHeader: this.props.noHeader,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 222\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"variations-app__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 235\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_28__[\"AuthCookieService1\"], {\n key: this.props.url,\n resource: this.props.url,\n service: this.props.authService ? this.props.authService[0] : null,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 236\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_BubbleEditor_BubbleEditor__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n key: 'bubble--' + this.props.url,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 243\n },\n __self: this\n }), this.props.url ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_Audio_Audio__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n key: 'audio--' + this.props.url,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 245\n },\n __self: this\n }) : null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_AudioTransportBar_AudioTransportBar__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n isPlaying: isPlaying,\n volume: volume,\n currentTime: currentTime,\n runTime: runTime,\n onVolumeChanged: this.props.setVolume,\n onPlay: this.props.play,\n onPause: this.props.pause,\n onNextBubble: this.props.nextBubble,\n onPreviousBubble: this.props.previousBubble,\n onScrubAhead: this.props.fastForward,\n onScrubBackwards: this.props.fastReward,\n onAddBubble: this.isSplittingPossible() ? this.splitRange : null,\n onGroupBubble: selectedRanges.length > 1 && this.isGroupingPossible(selectedRanges) ? this.props.groupSelectedRanges : null,\n onDeleteBubble: selectedRanges.length > 0 && _points.length > 1 && _points.length - selectedRanges.length > 0 ? this.deleteRanges(selectedRanges) : null,\n onAddMarker: this.addMarker,\n zoom: zoom,\n zoomIn: this.props.zoomIn,\n zoomOut: this.props.zoomOut,\n resetZoom: this.props.resetZoom,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 247\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"variations-app__metadata-editor\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 282\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_Metadata_Metadata__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n colourPalette: colourPalette,\n currentTime: currentTime,\n runTime: runTime,\n manifestLabel: manifestLabel,\n manifestSummary: manifestSummary,\n homepage: homepage,\n homepageLabel: homepageLabel,\n noSourceLink: noSourceLink,\n ranges: _points,\n onEdit: this.props.editMetadata,\n rangeToEdit: rangeToEdit,\n onUpdateRange: this.props.updateRange,\n blackAndWhiteMode: this.props.settings[_constants_project__WEBPACK_IMPORTED_MODULE_22__[\"PROJECT\"].BLACK_N_WHITE],\n projectMetadataEditorOpen: this.props.showMetadataEditor,\n onEditProjectMetadata: this.props.editProjectMetadata,\n onSaveProjectMetadata: this.props.saveProjectMetadata,\n onEraseButtonClicked: this.props.resetDocument,\n canSave: !this.props.callback,\n canErase: !this.props.callback,\n hasResource: this.props.hasResource,\n onSaveButtonClicked: this.props.exportDocument,\n onCancelEditingProjectMetadata: this.props.cancelProjectMetadataEdits,\n url: this.props.url,\n markers: this.props.markers,\n updateMarker: this.props.updateMarker,\n deleteMarker: this.props.deleteMarker,\n setCurrentTime: this.props.setCurrentTime,\n undoAll: this.props.canUndo ? this.props.undoAll : null,\n swatch: this.props.colourPalette.colours,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 283\n },\n __self: this\n }), !noFooter && _ref), (audioError.code || !isLoaded) && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_ContentOverlay_ContentOverlay__WEBPACK_IMPORTED_MODULE_15__[\"default\"], Object.assign({\n loadingPercent: loadingPercent,\n isLoaded: isLoaded,\n audioUrl: audioUrl\n }, {\n error: audioError,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 319\n },\n __self: this\n }))), (!hasResource || isLoaded) && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_AudioImporter_AudioImporter__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n open: isImportOpen,\n error: this.props.importError,\n onClose: this.props.url ? this.props.dismissImportModal : null,\n onImport: this.props.importDocument,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 326\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_SettingsPopoup_SettingsPopup__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n open: isSettingsOpen,\n onClose: this.props.dismissSettingsModal,\n onSave: this.props.updateSettings,\n clearCustomColors: this.props.clearCustomColors,\n settings: settings,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 333\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_VerifyDialog_VerifyDialog__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n open: this.props.verifyDialog.open,\n title: this.props.verifyDialog.title,\n doCancel: this.props.verifyDialog.doCancel,\n onClose: this.props.confirmNo,\n onProceed: this.props.confirmYes,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 340\n },\n __self: this\n })));\n }\n }]);\n\n return VariationsMainView;\n}(react__WEBPACK_IMPORTED_MODULE_5___default.a.Component);\n\nVariationsMainView.propTypes = {\n updateSettings: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n showImportModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n showSettingsModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n setVolume: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n url: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n play: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n pause: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n dismissImportModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n dismissSettingsModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n volume: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n isPlaying: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n isLoaded: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n importError: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string.isRequired,\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string.isRequired,\n homepage: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n homepageLabel: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n points: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.array,\n isImportOpen: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n isSettingsOpen: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n fastForward: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n fastReward: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n importDocument: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n exportDocument: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n addMarkerAtTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n saveProject: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n settings: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.object,\n zoom: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired\n};\n\nvar mapStateProps = function mapStateProps(state) {\n return {\n volume: state.viewState.volume,\n isPlaying: state.viewState.isPlaying,\n currentTime: state.viewState.currentTime,\n authService: state.canvas.service,\n annotationPages: state.canvas.items,\n url: state.canvas.url,\n runTime: state.viewState.runTime,\n manifestLabel: state.project.title,\n importError: state.project.error,\n manifestSummary: state.project.description,\n homepage: state.project.homepage,\n homepageLabel: state.project.homepageLabel,\n points: Object.values(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_27__[\"getRangeList\"])(state)),\n selectedRanges: Object(_reducers_range__WEBPACK_IMPORTED_MODULE_27__[\"getSelectedRanges\"])(state),\n isImportOpen: state.viewState.isImportOpen,\n isSettingsOpen: state.viewState.isSettingsOpen,\n audioUrl: state.canvas.url,\n audioError: state.canvas.error,\n loadingPercent: state.canvas.loadingPercent,\n isLoaded: state.canvas.isLoaded,\n rangeToEdit: state.viewState.metadataToEdit,\n verifyDialog: state.viewState.verifyDialog,\n showMetadataEditor: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_23__[\"VIEWSTATE\"].PROJECT_METADATA_EDITOR_OPEN],\n canUndo: state.undoHistory.undoQueue.length > 0,\n canRedo: state.undoHistory.redoQueue.length > 0,\n markers: state.markers.visible ? state.markers.list : {},\n zoom: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_23__[\"VIEWSTATE\"].ZOOM],\n //settings\n settings: _constants_project__WEBPACK_IMPORTED_MODULE_22__[\"PROJECT_SETTINGS_KEYS\"].reduce(function (acc, next) {\n acc[next] = state.project[next];\n return acc;\n }, {}),\n colourPalette: _config__WEBPACK_IMPORTED_MODULE_30__[\"colourPalettes\"][state.project[_constants_project__WEBPACK_IMPORTED_MODULE_22__[\"PROJECT\"].COLOUR_PALETTE]] || _config__WEBPACK_IMPORTED_MODULE_30__[\"colourPalettes\"].default\n };\n};\n\nvar mapDispatchToProps = {\n //project actions\n importDocument: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"importDocument\"],\n updateSettings: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"updateSettings\"],\n resetDocument: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"resetDocument\"],\n exportDocument: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"exportDocument\"],\n editProjectMetadata: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"editProjectMetadata\"],\n cancelProjectMetadataEdits: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"cancelProjectMetadataEdits\"],\n saveProjectMetadata: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"saveProjectMetadata\"],\n clearCustomColors: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"clearCustomColors\"],\n //view state actions\n showImportModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"showImportModal\"],\n showSettingsModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"showSettingsModal\"],\n setVolume: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"setVolume\"],\n play: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"play\"],\n pause: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"pause\"],\n dismissImportModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"dismissImportModal\"],\n dismissSettingsModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"dismissSettingsModal\"],\n fastForward: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"fastForward\"],\n fastReward: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"fastReward\"],\n editMetadata: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"editMetadata\"],\n previousBubble: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"previousBubble\"],\n nextBubble: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"nextBubble\"],\n confirmYes: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"confirmYes\"],\n confirmNo: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"confirmNo\"],\n setCurrentTime: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"setCurrentTime\"],\n zoomIn: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"zoomIn\"],\n zoomOut: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"zoomOut\"],\n resetZoom: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"resetZoom\"],\n //range\n splitRangeAt: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"splitRangeAt\"],\n groupSelectedRanges: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"groupSelectedRanges\"],\n deleteRanges: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"scheduleDeleteRanges\"],\n updateRange: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"updateRange\"],\n updateMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_25__[\"updateMarker\"],\n deleteMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_25__[\"deleteMarker\"],\n // markers\n addMarkerAtTime: _actions_markers__WEBPACK_IMPORTED_MODULE_25__[\"addMarkerAtTime\"],\n // Undo\n onUndo: redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__[\"actions\"].undo,\n onRedo: redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__[\"actions\"].redo,\n undoAll: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"undoAll\"],\n // Export\n saveProject: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"saveProject\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_8__[\"connect\"])(mapStateProps, mapDispatchToProps)(VariationsMainView));\n\n//# sourceURL=webpack:///./src/containers/VariationsMainView/VariationsMainView.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _components_VariationsAppBar_VariationsAppBar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../components/VariationsAppBar/VariationsAppBar */ \"./src/components/VariationsAppBar/VariationsAppBar.js\");\n/* harmony import */ var _components_AudioTransportBar_AudioTransportBar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../components/AudioTransportBar/AudioTransportBar */ \"./src/components/AudioTransportBar/AudioTransportBar.js\");\n/* harmony import */ var _components_Metadata_Metadata__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/Metadata/Metadata */ \"./src/components/Metadata/Metadata.js\");\n/* harmony import */ var _components_AudioImporter_AudioImporter__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../components/AudioImporter/AudioImporter */ \"./src/components/AudioImporter/AudioImporter.js\");\n/* harmony import */ var _components_SettingsPopoup_SettingsPopup__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../components/SettingsPopoup/SettingsPopup */ \"./src/components/SettingsPopoup/SettingsPopup.js\");\n/* harmony import */ var _components_Footer_Footer__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../components/Footer/Footer */ \"./src/components/Footer/Footer.js\");\n/* harmony import */ var _components_ContentOverlay_ContentOverlay__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../components/ContentOverlay/ContentOverlay */ \"./src/components/ContentOverlay/ContentOverlay.js\");\n/* harmony import */ var _components_VerifyDialog_VerifyDialog__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../components/VerifyDialog/VerifyDialog */ \"./src/components/VerifyDialog/VerifyDialog.js\");\n/* harmony import */ var _BubbleEditor_BubbleEditor__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../BubbleEditor/BubbleEditor */ \"./src/containers/BubbleEditor/BubbleEditor.js\");\n/* harmony import */ var _Audio_Audio__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../Audio/Audio */ \"./src/containers/Audio/Audio.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../../actions/markers */ \"./src/actions/markers.js\");\n/* harmony import */ var _VariationsMainView_scss__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./VariationsMainView.scss */ \"./src/containers/VariationsMainView/VariationsMainView.scss\");\n/* harmony import */ var _VariationsMainView_scss__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(_VariationsMainView_scss__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../AuthResource/AuthResource */ \"./src/containers/AuthResource/AuthResource.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! redux-undo-redo */ \"./node_modules/redux-undo-redo/lib/index.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_29___default = /*#__PURE__*/__webpack_require__.n(redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../../config */ \"./src/config.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/containers/VariationsMainView/VariationsMainView.js\";\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar _ref =\n/*#__PURE__*/\nreact__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_Footer_Footer__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n __source: {\n fileName: _jsxFileName,\n lineNumber: 325\n },\n __self: undefined\n});\n\nvar VariationsMainView =\n/*#__PURE__*/\nfunction (_React$Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(VariationsMainView, _React$Component);\n\n function VariationsMainView(props) {\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, VariationsMainView);\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(VariationsMainView).call(this, props));\n\n _this.addRange = function (selected) {\n return function () {\n _this.props.splitRangeAt((selected[_constants_range__WEBPACK_IMPORTED_MODULE_21__[\"RANGE\"].END_TIME] - selected[_constants_range__WEBPACK_IMPORTED_MODULE_21__[\"RANGE\"].START_TIME]) / 2 + selected[_constants_range__WEBPACK_IMPORTED_MODULE_21__[\"RANGE\"].START_TIME]);\n };\n };\n\n _this.groupSelectedRanges = function () {\n _this.props.groupSelectedRanges();\n };\n\n _this.deleteRanges = function (ranges) {\n return function () {\n _this.props.deleteRanges(ranges);\n };\n };\n\n _this.isGroupingPossible = function (selectedRanges) {\n var newRangeMinMax = selectedRanges.reduce(function (newRange, bubble) {\n newRange.startTime = Math.min(newRange.startTime, bubble.startTime);\n newRange.endTime = Math.max(newRange.endTime, bubble.endTime);\n return newRange;\n }, {\n startTime: Number.MAX_SAFE_INTEGER,\n endTime: Number.MIN_SAFE_INTEGER\n });\n var tallBubbles = Object.values(_this.props.points).filter(function (bubble) {\n return bubble.depth > 1;\n });\n return tallBubbles.filter(function (bubble) {\n return bubble.startTime < newRangeMinMax.startTime && newRangeMinMax.startTime < bubble.endTime && bubble.endTime < newRangeMinMax.endTime || newRangeMinMax.startTime < bubble.startTime && bubble.startTime < newRangeMinMax.endTime && newRangeMinMax.endTime < bubble.endTime || bubble.startTime === newRangeMinMax.startTime && bubble.endTime === newRangeMinMax.endTime;\n }).length === 0;\n };\n\n _this.isSplittingPossible = function () {\n return !Object.values(_this.props.points).reduce(function (allPoints, range) {\n allPoints.add(range.startTime);\n allPoints.add(range.endTime);\n return allPoints;\n }, new Set([])).has(_this.props.currentTime);\n };\n\n _this.splitRange = function () {\n return _this.props.splitRangeAt(_this.props.currentTime);\n };\n\n _this.addMarker = function () {\n _this.props.addMarkerAtTime(_this.props.currentTime);\n\n _this.props.setProjectChanged(false);\n };\n\n _this.getAuthService = function () {\n var annotationPages = _this.props.annotationPages;\n\n if (annotationPages && annotationPages[0] && annotationPages[0].items && annotationPages[0].items[0]) {\n var avResource = Object(_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_28__[\"resolveAvResource\"])(annotationPages[0].items[0]);\n return avResource.service;\n }\n };\n\n _this.getOnSave = function () {\n if (!_this.props.callback) {\n return null;\n }\n\n return _this.props.saveProject;\n };\n\n _this.theme = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"createMuiTheme\"])({\n palette: {\n primary: {\n light: '#757ce8',\n main: '#3f50b5',\n dark: '#002884',\n contrastText: '#fff'\n },\n secondary: {\n light: '#d2abf3',\n main: '#C797F0',\n dark: '#8b69a8',\n contrastText: '#000'\n }\n },\n status: {\n danger: 'orange'\n },\n spacing: {\n unit: 4\n },\n shape: {\n borderRadius: 2\n },\n typography: {\n fontSize: 12,\n useNextVariants: true\n },\n mixins: {\n toolbar: {\n minHeight: 36\n }\n }\n });\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(VariationsMainView, [{\n key: \"render\",\n value: function render() {\n var _points = this.props.points;\n var _this$props = this.props,\n isPlaying = _this$props.isPlaying,\n volume = _this$props.volume,\n currentTime = _this$props.currentTime,\n audioUrl = _this$props.audioUrl,\n runTime = _this$props.runTime,\n manifestLabel = _this$props.manifestLabel,\n manifestSummary = _this$props.manifestSummary,\n homepage = _this$props.homepage,\n homepageLabel = _this$props.homepageLabel,\n isImportOpen = _this$props.isImportOpen,\n isSettingsOpen = _this$props.isSettingsOpen,\n mediaError = _this$props.mediaError,\n loadingPercent = _this$props.loadingPercent,\n isLoaded = _this$props.isLoaded,\n rangeToEdit = _this$props.rangeToEdit,\n settings = _this$props.settings,\n selectedRanges = _this$props.selectedRanges,\n hasResource = _this$props.hasResource,\n colourPalette = _this$props.colourPalette,\n noFooter = _this$props.noFooter,\n noHeader = _this$props.noHeader,\n noVideo = _this$props.noVideo,\n noSourceLink = _this$props.noSourceLink,\n zoom = _this$props.zoom;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"variations-app\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 225\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_7__[\"MuiThemeProvider\"], {\n theme: this.theme,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 226\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_VariationsAppBar_VariationsAppBar__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n title: manifestLabel,\n onImportButtonClicked: this.props.showImportModal,\n onSettingsButtonClicked: this.props.showSettingsModal,\n canUndo: this.props.canUndo,\n canRedo: this.props.canRedo,\n onRedo: this.props.onRedo,\n onUndo: this.props.onUndo,\n onSave: this.getOnSave(),\n onTitleChange: function onTitleChange() {},\n hasResource: this.props.hasResource,\n noHeader: this.props.noHeader,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 227\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"variations-app__content\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 240\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_28__[\"AuthCookieService1\"], {\n key: this.props.url,\n resource: this.props.url,\n service: this.props.authService ? this.props.authService[0] : null,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 241\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_BubbleEditor_BubbleEditor__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n key: 'bubble--' + this.props.url,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 248\n },\n __self: this\n }), this.props.url ? react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_Audio_Audio__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n key: 'audio--' + this.props.url,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 250\n },\n __self: this\n }) : null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_AudioTransportBar_AudioTransportBar__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n isPlaying: isPlaying,\n volume: volume,\n currentTime: currentTime,\n runTime: runTime,\n onVolumeChanged: this.props.setVolume,\n onPlay: this.props.play,\n onPause: this.props.pause,\n onNextBubble: this.props.nextBubble,\n onPreviousBubble: this.props.previousBubble,\n onScrubAhead: this.props.fastForward,\n onScrubBackwards: this.props.fastReward,\n onAddBubble: this.isSplittingPossible() ? this.splitRange : null,\n onGroupBubble: selectedRanges.length > 1 && this.isGroupingPossible(selectedRanges) ? this.props.groupSelectedRanges : null,\n onDeleteBubble: selectedRanges.length > 0 && _points.length > 1 && _points.length - selectedRanges.length > 0 ? this.deleteRanges(selectedRanges) : null,\n onAddMarker: this.addMarker,\n zoom: zoom,\n zoomIn: this.props.zoomIn,\n zoomOut: this.props.zoomOut,\n resetZoom: this.props.resetZoom,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 252\n },\n __self: this\n })), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", {\n className: \"variations-app__metadata-editor\",\n __source: {\n fileName: _jsxFileName,\n lineNumber: 287\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_Metadata_Metadata__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n colourPalette: colourPalette,\n currentTime: currentTime,\n runTime: runTime,\n manifestLabel: manifestLabel,\n manifestSummary: manifestSummary,\n homepage: homepage,\n homepageLabel: homepageLabel,\n noSourceLink: noSourceLink,\n ranges: _points,\n onEdit: this.props.editMetadata,\n rangeToEdit: rangeToEdit,\n onUpdateRange: this.props.updateRange,\n blackAndWhiteMode: this.props.settings[_constants_project__WEBPACK_IMPORTED_MODULE_22__[\"PROJECT\"].BLACK_N_WHITE],\n projectMetadataEditorOpen: this.props.showMetadataEditor,\n onEditProjectMetadata: this.props.editProjectMetadata,\n onSaveProjectMetadata: this.props.saveProjectMetadata,\n onEraseButtonClicked: this.props.resetDocument,\n canSave: !this.props.callback,\n canErase: !this.props.callback,\n hasResource: this.props.hasResource,\n onSaveButtonClicked: this.props.exportDocument,\n onCancelEditingProjectMetadata: this.props.cancelProjectMetadataEdits,\n url: this.props.url,\n markers: this.props.markers,\n updateMarker: this.props.updateMarker,\n deleteMarker: this.props.deleteMarker,\n updateProjectStatus: this.props.setProjectChanged,\n setCurrentTime: this.props.setCurrentTime,\n undoAll: this.props.canUndo ? this.props.undoAll : null,\n swatch: this.props.colourPalette.colours // Enable Video playback in the timeliner\n ,\n isVideo: !noVideo && this.props.isVideo,\n poster: this.props.poster,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 288\n },\n __self: this\n }), !noFooter && _ref), (mediaError.code || !isLoaded) && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_ContentOverlay_ContentOverlay__WEBPACK_IMPORTED_MODULE_15__[\"default\"], Object.assign({\n loadingPercent: loadingPercent,\n isLoaded: isLoaded,\n audioUrl: audioUrl\n }, {\n error: mediaError,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 328\n },\n __self: this\n }))), (!hasResource || isLoaded) && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_AudioImporter_AudioImporter__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n open: isImportOpen,\n error: this.props.importError,\n onClose: this.props.url ? this.props.dismissImportModal : null,\n onImport: this.props.importDocument,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 335\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_SettingsPopoup_SettingsPopup__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n open: isSettingsOpen,\n onClose: this.props.dismissSettingsModal,\n onSave: this.props.updateSettings,\n clearCustomColors: this.props.clearCustomColors,\n settings: settings,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 342\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_components_VerifyDialog_VerifyDialog__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n open: this.props.verifyDialog.open,\n title: this.props.verifyDialog.title,\n doCancel: this.props.verifyDialog.doCancel,\n onClose: this.props.confirmNo,\n onProceed: this.props.confirmYes,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 349\n },\n __self: this\n })));\n }\n }]);\n\n return VariationsMainView;\n}(react__WEBPACK_IMPORTED_MODULE_5___default.a.Component);\n\nVariationsMainView.propTypes = {\n updateSettings: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n showImportModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n showSettingsModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n setVolume: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n url: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n play: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n pause: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n dismissImportModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n dismissSettingsModal: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func,\n volume: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n isPlaying: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n isLoaded: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n importError: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n currentTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n runTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired,\n manifestLabel: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string.isRequired,\n manifestSummary: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string.isRequired,\n homepage: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n homepageLabel: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.string,\n points: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.array,\n isImportOpen: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n isSettingsOpen: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.bool.isRequired,\n fastForward: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n fastReward: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n importDocument: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n exportDocument: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n addMarkerAtTime: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n saveProject: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired,\n settings: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.object,\n zoom: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.number.isRequired\n};\n\nvar mapStateProps = function mapStateProps(state) {\n return {\n volume: state.viewState.volume,\n isPlaying: state.viewState.isPlaying,\n currentTime: state.viewState.currentTime,\n authService: state.canvas.service,\n annotationPages: state.canvas.items,\n url: state.canvas.url,\n isVideo: state.canvas.isVideo,\n poster: state.canvas.poster,\n runTime: state.viewState.runTime,\n manifestLabel: state.project.title,\n importError: state.project.error,\n manifestSummary: state.project.description,\n homepage: state.project.homepage,\n homepageLabel: state.project.homepageLabel,\n points: Object.values(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_27__[\"getRangeList\"])(state)),\n selectedRanges: Object(_reducers_range__WEBPACK_IMPORTED_MODULE_27__[\"getSelectedRanges\"])(state),\n isImportOpen: state.viewState.isImportOpen,\n isSettingsOpen: state.viewState.isSettingsOpen,\n audioUrl: state.canvas.url,\n mediaError: state.canvas.error,\n loadingPercent: state.canvas.loadingPercent,\n isLoaded: state.canvas.isLoaded,\n rangeToEdit: state.viewState.metadataToEdit,\n verifyDialog: state.viewState.verifyDialog,\n showMetadataEditor: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_23__[\"VIEWSTATE\"].PROJECT_METADATA_EDITOR_OPEN],\n canUndo: state.undoHistory.undoQueue.length > 0,\n canRedo: state.undoHistory.redoQueue.length > 0,\n markers: state.markers.visible ? state.markers.list : {},\n zoom: state.viewState[_constants_viewState__WEBPACK_IMPORTED_MODULE_23__[\"VIEWSTATE\"].ZOOM],\n //settings\n settings: _constants_project__WEBPACK_IMPORTED_MODULE_22__[\"PROJECT_SETTINGS_KEYS\"].reduce(function (acc, next) {\n acc[next] = state.project[next];\n return acc;\n }, {}),\n colourPalette: _config__WEBPACK_IMPORTED_MODULE_30__[\"colourPalettes\"][state.project[_constants_project__WEBPACK_IMPORTED_MODULE_22__[\"PROJECT\"].COLOUR_PALETTE]] || _config__WEBPACK_IMPORTED_MODULE_30__[\"colourPalettes\"].default\n };\n};\n\nvar mapDispatchToProps = {\n //project actions\n importDocument: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"importDocument\"],\n updateSettings: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"updateSettings\"],\n resetDocument: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"resetDocument\"],\n exportDocument: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"exportDocument\"],\n editProjectMetadata: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"editProjectMetadata\"],\n cancelProjectMetadataEdits: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"cancelProjectMetadataEdits\"],\n saveProjectMetadata: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"saveProjectMetadata\"],\n clearCustomColors: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"clearCustomColors\"],\n setProjectChanged: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"setProjectChanged\"],\n //view state actions\n showImportModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"showImportModal\"],\n showSettingsModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"showSettingsModal\"],\n setVolume: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"setVolume\"],\n play: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"play\"],\n pause: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"pause\"],\n dismissImportModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"dismissImportModal\"],\n dismissSettingsModal: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"dismissSettingsModal\"],\n fastForward: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"fastForward\"],\n fastReward: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"fastReward\"],\n editMetadata: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"editMetadata\"],\n previousBubble: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"previousBubble\"],\n nextBubble: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"nextBubble\"],\n confirmYes: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"confirmYes\"],\n confirmNo: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"confirmNo\"],\n setCurrentTime: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"setCurrentTime\"],\n zoomIn: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"zoomIn\"],\n zoomOut: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"zoomOut\"],\n resetZoom: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"resetZoom\"],\n //range\n splitRangeAt: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"splitRangeAt\"],\n groupSelectedRanges: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"groupSelectedRanges\"],\n deleteRanges: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"scheduleDeleteRanges\"],\n updateRange: _actions_range__WEBPACK_IMPORTED_MODULE_19__[\"updateRange\"],\n updateMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_25__[\"updateMarker\"],\n deleteMarker: _actions_markers__WEBPACK_IMPORTED_MODULE_25__[\"deleteMarker\"],\n // markers\n addMarkerAtTime: _actions_markers__WEBPACK_IMPORTED_MODULE_25__[\"addMarkerAtTime\"],\n // Undo\n onUndo: redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__[\"actions\"].undo,\n onRedo: redux_undo_redo__WEBPACK_IMPORTED_MODULE_29__[\"actions\"].redo,\n undoAll: _actions_viewState__WEBPACK_IMPORTED_MODULE_24__[\"undoAll\"],\n // Export\n saveProject: _actions_project__WEBPACK_IMPORTED_MODULE_20__[\"saveProject\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_8__[\"connect\"])(mapStateProps, mapDispatchToProps)(VariationsMainView));\n\n//# sourceURL=webpack:///./src/containers/VariationsMainView/VariationsMainView.js?");
/***/ }),
@@ -10968,6 +10980,18 @@ import "../iiif-timeliner-styles.css"
/***/ }),
+ /***/ "./src/containers/Video/Video.js":
+ /*!***************************************!*\
+ !*** ./src/containers/Video/Video.js ***!
+ \***************************************/
+ /*! exports provided: default */
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+ "use strict";
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_PictureInPicture__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/PictureInPicture */ \"./node_modules/@material-ui/icons/PictureInPicture.js\");\n/* harmony import */ var _material_ui_icons_PictureInPicture__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_PictureInPicture__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var mediaelement_standalone__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! mediaelement/standalone */ \"./node_modules/mediaelement/standalone.js\");\n/* harmony import */ var mediaelement_standalone__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(mediaelement_standalone__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _hooks_useEventListener__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../hooks/useEventListener */ \"./src/hooks/useEventListener.js\");\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/containers/Video/Video.js\";\n\n\n\n\n // Media Element\n\n\n\nvar _window = window,\n MediaElement = _window.MediaElement;\n\nfunction Video(_ref) {\n var url = _ref.url,\n volume = _ref.volume,\n currentTime = _ref.currentTime,\n startTime = _ref.startTime,\n isPlaying = _ref.isPlaying,\n poster = _ref.poster,\n isSeeked = _ref.isSeeked,\n props = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, [\"url\", \"volume\", \"currentTime\", \"startTime\", \"isPlaying\", \"poster\", \"isSeeked\"]);\n\n var video = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])();\n var player = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])();\n var sources = [{\n src: url\n }];\n var lastTime = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])(function () {\n return startTime - 1;\n });\n var lastVolume = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useRef\"])();\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])('Enter Picture-in-Picture mode'),\n _useState2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n pipButtonText = _useState2[0],\n setPipButtonText = _useState2[1]; // Styling for video and PIP button\n\n\n var videoStyle = {\n background: 'black',\n boxShadow: 'gray 2px 2px 4px'\n };\n var videoDivStyle = {\n margin: '0 auto',\n padding: '5px'\n };\n var pipButtonStyles = {\n display: 'none',\n alignItems: 'center',\n flexWrap: 'wrap',\n marginTop: '20px'\n };\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n var element = new MediaElement(video.current, {\n currentTime: currentTime / 1000\n }, sources);\n player.current = element; // Set volume to zero, use audio player's volume\n\n player.current.setVolume(0);\n return function () {\n element.remove();\n };\n }, []); // When Picture-in-Picture is not an in-built feature of the browser,\n // use an external button to use the Picture-in-Picture Web API\n // to enable the feature\n // Reference: https://css-tricks.com/an-introduction-to-the-picture-in-picture-web-api/\n\n var initPIP = function initPIP() {\n var pipButton = document.getElementById('timeliner-pip-button');\n var videoElement = document.getElementsByTagName('video')[0];\n\n if ('pictureInPictureEnabled' in document && videoElement) {\n pipButton.style.display = 'flex';\n pipButton.addEventListener('click', function () {\n if (document.pictureInPictureElement) {\n document.exitPictureInPicture().catch(function (error) {\n console.error('Error -> exitPictureInPicture() -> ', error);\n });\n } else {\n videoElement.requestPictureInPicture().catch(function (error) {\n console.error('Error -> requestPictureInPicture() -> ', error);\n });\n }\n });\n } // Change button text\n\n\n videoElement.addEventListener('enterpictureinpicture', function () {\n setPipButtonText('Exit Picture-in-Picture mode');\n });\n videoElement.addEventListener('leavepictureinpicture', function () {\n setPipButtonText('Enter Picture-in-Picture mode');\n });\n }; // Re-create player instance with media swap\n // TODO:: There's a slight time difference in the video and audio\n // players when media file gets swapped.\n // To reproduce: load a manifest -> play media -> pause media\n // -> swap media file with 'Open audio file' in toolbar ->\n // play media -> observe currentTime diff in the audio and video players\n\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (url != null && player.current == null) {\n player.current = new MediaElement(video.current, {\n currentTime: currentTime / 1000\n }, [{\n src: url\n }]);\n player.current.setVolume(0);\n player.current.setCurrentTime(currentTime / 1000);\n }\n\n ;\n }, [url]); // Store last non-zero volume to restore it \n // when using PiP controls\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (volume > 0) {\n lastVolume.current = volume;\n }\n }, [volume]); // Propagate play/pause and mute/unmute events from the picture-in-picture\n // player window to audio player\n\n Object(_hooks_useEventListener__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(player, 'play', function () {\n props.play();\n }, [url]);\n Object(_hooks_useEventListener__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(player, 'pause', function () {\n props.pause();\n }, [url]);\n Object(_hooks_useEventListener__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(player, 'volumechange', function () {\n if (player.current.muted) {\n props.setVolume(0);\n } else {\n props.setVolume(lastVolume.current);\n }\n }, [volume, url]);\n Object(_hooks_useEventListener__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(player, 'loadedmetadata', function () {\n initPIP();\n }); // Handle play/pause events from the audio player\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current) {\n if (isPlaying) {\n player.current.setCurrentTime(currentTime / 1000);\n player.current.play();\n lastTime.current = player.current.currentTime;\n } else {\n if (player.current.readyState) {\n player.current.pause();\n }\n }\n }\n }, [isPlaying, url]); // While the video player is always on mute, sync mute/unmute\n // in the picture-in-picture window for visual purposes\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current && volume == 0) {\n player.current.setMuted(true);\n } else {\n player.current.setMuted(false);\n }\n }, [volume, url]); // Handle current time when seeked.\n\n Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useLayoutEffect\"])(function () {\n if (player.current) {\n lastTime.current = currentTime;\n player.current.setCurrentTime(currentTime / 1000);\n } // Reset isSeeked state variable\n\n\n props.seek(false);\n }, [isSeeked, url]);\n\n if (!url) {\n return null;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n style: videoDivStyle,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 168\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"video\", {\n height: 270,\n width: 480,\n ref: video,\n poster: poster,\n style: videoStyle,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 169\n },\n __self: this\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n variant: \"text\",\n id: \"timeliner-pip-button\",\n color: \"primary\",\n title: \"Picture-in-Picture mode\",\n style: pipButtonStyles,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 171\n },\n __self: this\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_icons_PictureInPicture__WEBPACK_IMPORTED_MODULE_6___default.a, {\n nativeColor: \"#FF4081\",\n style: {\n marginRight: 20\n },\n __source: {\n fileName: _jsxFileName,\n lineNumber: 178\n },\n __self: this\n }), pipButtonText));\n}\n\nvar mapStateProps = function mapStateProps(state) {\n return {\n url: state.canvas.url,\n poster: state.canvas.poster,\n isPlaying: state.viewState.isPlaying,\n isSeeked: state.viewState.isSeeked,\n currentTime: state.viewState.currentTime + state.viewState.startTime,\n volume: state.viewState.volume,\n runTime: state.viewState.runTime,\n startTime: state.viewState.startTime\n };\n};\n\nvar mapDispatchToProps = {\n seek: _actions_viewState__WEBPACK_IMPORTED_MODULE_4__[\"seek\"],\n play: _actions_viewState__WEBPACK_IMPORTED_MODULE_4__[\"play\"],\n pause: _actions_viewState__WEBPACK_IMPORTED_MODULE_4__[\"pause\"],\n setVolume: _actions_viewState__WEBPACK_IMPORTED_MODULE_4__[\"setVolume\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_3__[\"connect\"])(mapStateProps, mapDispatchToProps)(Video));\n\n//# sourceURL=webpack:///./src/containers/Video/Video.js?");
+
+ /***/ }),
+
/***/ "./src/hocs/dragBubbleMarker.js":
/*!**************************************!*\
!*** ./src/hocs/dragBubbleMarker.js ***!
@@ -10976,7 +11000,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dragPlayhead; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/hocs/dragBubbleMarker.js\";\n\n\n\nfunction dragPlayhead(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(DragBubbleMarker, _Component);\n\n function DragBubbleMarker() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, DragBubbleMarker);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(DragBubbleMarker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n markerMovement: null\n };\n\n _this.getTimePoints = function () {\n return Array.from(Object.values(_this.props.points).reduce(function (timePointsSet, bubble) {\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_7__[\"RANGE\"].START_TIME]);\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_7__[\"RANGE\"].END_TIME]);\n return timePointsSet;\n }, new Set())).sort(function (p1, p2) {\n return p1 - p2;\n });\n };\n\n _this.dragStart = function (resource, ev) {\n document.body.addEventListener('mousemove', _this.dragMove);\n document.body.addEventListener('mouseup', _this.dragEnd);\n\n _this.setState({\n markerMovement: {\n selectedPoint: resource.index,\n markerX: resource.x,\n startX: ev.pageX,\n deltaX: 0,\n deltaTime: 0\n }\n });\n };\n\n _this.dragMove = function (ev) {\n var _this$props = _this.props,\n runTime = _this$props.runTime,\n zoom = _this$props.zoom,\n viewerWidth = _this$props.viewerWidth;\n var markerMovement = _this.state.markerMovement;\n\n if (markerMovement.selectedPoint < 0) {\n return;\n } // in order to smooth drag\n\n\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])();\n var deltaX = ev.clientX - markerMovement.startX;\n\n _this.setState({\n markerMovement: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, markerMovement, {\n deltaX: deltaX,\n deltaTime: deltaX / viewerWidth * runTime / zoom\n })\n });\n };\n\n _this.dragEnd = function (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n var _this$props2 = _this.props,\n viewerWidth = _this$props2.viewerWidth,\n runTime = _this$props2.runTime,\n zoom = _this$props2.zoom;\n var markerMovement = _this.state.markerMovement; // Remove events.\n\n document.body.removeEventListener('mousemove', _this.dragMove);\n document.body.removeEventListener('mouseup', _this.dragEnd); // Calculate new time point.\n\n var timePoints = _this.getTimePoints();\n\n var dX = (ev.pageX - markerMovement.startX) / viewerWidth * runTime / zoom;\n\n _this.props.movePoint(Math.min(Math.max(timePoints[markerMovement.selectedPoint] + dX, timePoints[markerMovement.selectedPoint - 1]), timePoints[markerMovement.selectedPoint + 1]), timePoints[markerMovement.selectedPoint]);\n\n _this.setState({\n markerMovement: null\n });\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DragBubbleMarker, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n bubbleMarkerMovement: this.state.markerMovement,\n dragStartBubbleMarker: this.dragStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 87\n },\n __self: this\n }));\n }\n }]);\n\n return DragBubbleMarker;\n }(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/dragBubbleMarker.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dragPlayhead; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/hocs/dragBubbleMarker.js\";\n\n\n\nfunction dragPlayhead(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(DragBubbleMarker, _Component);\n\n function DragBubbleMarker() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, DragBubbleMarker);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(DragBubbleMarker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n markerMovement: null\n };\n\n _this.getTimePoints = function () {\n return Array.from(Object.values(_this.props.points).reduce(function (timePointsSet, bubble) {\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_7__[\"RANGE\"].START_TIME]);\n timePointsSet.add(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_7__[\"RANGE\"].END_TIME]);\n return timePointsSet;\n }, new Set())).sort(function (p1, p2) {\n return p1 - p2;\n });\n };\n\n _this.dragStart = function (resource, ev) {\n document.body.addEventListener('mousemove', _this.dragMove);\n document.body.addEventListener('mouseup', _this.dragEnd);\n\n _this.setState({\n markerMovement: {\n selectedPoint: resource.index,\n markerX: resource.x,\n startX: ev.pageX,\n deltaX: 0,\n deltaTime: 0\n }\n });\n };\n\n _this.dragMove = function (ev) {\n var _this$props = _this.props,\n runTime = _this$props.runTime,\n zoom = _this$props.zoom,\n viewerWidth = _this$props.viewerWidth;\n var markerMovement = _this.state.markerMovement;\n\n if (markerMovement.selectedPoint < 0) {\n return;\n } // in order to smooth drag\n\n\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_8__[\"default\"])();\n var deltaX = ev.clientX - markerMovement.startX;\n\n _this.setState({\n markerMovement: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, markerMovement, {\n deltaX: deltaX,\n deltaTime: deltaX / viewerWidth * runTime / zoom\n })\n });\n };\n\n _this.dragEnd = function (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n var _this$props2 = _this.props,\n viewerWidth = _this$props2.viewerWidth,\n runTime = _this$props2.runTime,\n zoom = _this$props2.zoom;\n var markerMovement = _this.state.markerMovement; // Remove events.\n\n document.body.removeEventListener('mousemove', _this.dragMove);\n document.body.removeEventListener('mouseup', _this.dragEnd); // Calculate new time point.\n\n var timePoints = _this.getTimePoints();\n\n var dX = (ev.pageX - markerMovement.startX) / viewerWidth * runTime / zoom;\n\n _this.props.movePoint(Math.min(Math.max(timePoints[markerMovement.selectedPoint] + dX, timePoints[markerMovement.selectedPoint - 1]), timePoints[markerMovement.selectedPoint + 1]), timePoints[markerMovement.selectedPoint]);\n\n _this.setState({\n markerMovement: null\n });\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DragBubbleMarker, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n bubbleMarkerMovement: this.state.markerMovement,\n dragStartBubbleMarker: this.dragStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 87\n },\n __self: this\n }));\n }\n }]);\n\n return DragBubbleMarker;\n }(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/dragBubbleMarker.js?");
/***/ }),
@@ -10988,7 +11012,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dragMarker; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/hocs/dragMarker.js\";\n\n\nfunction dragMarker(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(DragMarker, _Component);\n\n function DragMarker() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, DragMarker);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(DragMarker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n markerMovement: null,\n resource: null\n };\n\n _this.dragStart = function (resource, ev) {\n document.body.addEventListener('mousemove', _this.dragMove);\n document.body.addEventListener('mouseup', _this.dragEnd);\n\n _this.setState({\n click: true,\n resource: resource,\n markerMovement: {\n selectedPoint: resource.index,\n markerX: resource.x,\n startX: ev.pageX,\n deltaX: 0,\n deltaTime: 0\n }\n });\n\n setTimeout(function () {\n _this.setState({\n click: false\n });\n }, 1000);\n };\n\n _this.dragMove = function (ev) {\n var _this$props = _this.props,\n runTime = _this$props.runTime,\n zoom = _this$props.zoom,\n viewerWidth = _this$props.viewerWidth;\n var markerMovement = _this.state.markerMovement; // in order to smooth drag\n\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n var deltaX = ev.clientX - markerMovement.startX;\n\n _this.setState({\n markerMovement: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, markerMovement, {\n deltaX: deltaX,\n deltaTime: deltaX / viewerWidth * runTime / zoom\n })\n });\n };\n\n _this.dragEnd = function (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n var _this$props2 = _this.props,\n viewerWidth = _this$props2.viewerWidth,\n zoom = _this$props2.zoom,\n runTime = _this$props2.runTime;\n var _this$state = _this.state,\n markerMovement = _this$state.markerMovement,\n resource = _this$state.resource,\n click = _this$state.click; // Remove events.\n\n document.body.removeEventListener('mousemove', _this.dragMove);\n document.body.removeEventListener('mouseup', _this.dragEnd);\n\n if (Math.abs(markerMovement.deltaX) > 5 || _this.state.click === false) {\n // Calculate new time point.\n var time = (ev.pageX - markerMovement.startX) / viewerWidth * runTime / zoom;\n\n _this.props.updateMarker(resource.id, {\n time: resource.time + time\n });\n } else if (click === true) {\n _this.props.selectMarker(resource.id);\n }\n\n _this.setState({\n resource: null,\n markerMovement: null\n });\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DragMarker, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n markerMovement: this.state.markerMovement,\n dragStartMarker: this.dragStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 74\n },\n __self: this\n }));\n }\n }]);\n\n return DragMarker;\n }(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/dragMarker.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dragMarker; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/hocs/dragMarker.js\";\n\n\nfunction dragMarker(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(DragMarker, _Component);\n\n function DragMarker() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, DragMarker);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(DragMarker)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n markerMovement: null,\n resource: null\n };\n\n _this.dragStart = function (resource, ev) {\n document.body.addEventListener('mousemove', _this.dragMove);\n document.body.addEventListener('mouseup', _this.dragEnd);\n\n _this.setState({\n click: true,\n resource: resource,\n markerMovement: {\n selectedPoint: resource.index,\n markerX: resource.x,\n startX: ev.pageX,\n deltaX: 0,\n deltaTime: 0\n }\n });\n\n setTimeout(function () {\n _this.setState({\n click: false\n });\n }, 1000);\n };\n\n _this.dragMove = function (ev) {\n var _this$props = _this.props,\n runTime = _this$props.runTime,\n zoom = _this$props.zoom,\n viewerWidth = _this$props.viewerWidth;\n var markerMovement = _this.state.markerMovement; // in order to smooth drag\n\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_7__[\"default\"])();\n var deltaX = ev.clientX - markerMovement.startX;\n\n _this.setState({\n markerMovement: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, markerMovement, {\n deltaX: deltaX,\n deltaTime: deltaX / viewerWidth * runTime / zoom\n })\n });\n };\n\n _this.dragEnd = function (ev) {\n ev.preventDefault();\n ev.stopPropagation();\n var _this$props2 = _this.props,\n viewerWidth = _this$props2.viewerWidth,\n zoom = _this$props2.zoom,\n runTime = _this$props2.runTime;\n var _this$state = _this.state,\n markerMovement = _this$state.markerMovement,\n resource = _this$state.resource,\n click = _this$state.click; // Remove events.\n\n document.body.removeEventListener('mousemove', _this.dragMove);\n document.body.removeEventListener('mouseup', _this.dragEnd);\n\n if (Math.abs(markerMovement.deltaX) > 5 || _this.state.click === false) {\n // Calculate new time point.\n var time = (ev.pageX - markerMovement.startX) / viewerWidth * runTime / zoom;\n\n _this.props.updateMarker(resource.id, {\n time: resource.time + time\n });\n } else if (click === true) {\n _this.props.selectMarker(resource.id);\n }\n\n _this.setState({\n resource: null,\n markerMovement: null\n });\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(DragMarker, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n markerMovement: this.state.markerMovement,\n dragStartMarker: this.dragStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 74\n },\n __self: this\n }));\n }\n }]);\n\n return DragMarker;\n }(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/dragMarker.js?");
/***/ }),
@@ -11000,7 +11024,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dragPlayhead; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/hocs/dragPlayhead.js\";\n\n\nfunction dragPlayhead(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(DragPlayhead, _Component);\n\n function DragPlayhead() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DragPlayhead);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(DragPlayhead)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isPlayheadUpdating: false,\n playheadX: 0,\n scrubberBounds: null\n };\n\n _this.dragStart = function (resource, ev) {\n var scrubberBounds = ev.currentTarget.getBoundingClientRect();\n var positionRatio = (ev.pageX - scrubberBounds.left) / scrubberBounds.width;\n var time = positionRatio * _this.props.runTime;\n document.body.addEventListener('mousemove', _this.dragMove);\n document.body.addEventListener('mouseup', _this.dragEnd);\n\n _this.setState({\n isPlayheadUpdating: true,\n playheadX: time,\n scrubberBounds: scrubberBounds\n });\n };\n\n _this.dragMove = function (ev) {\n if (_this.state.isPlayheadUpdating) {\n // in order to smooth drag\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n var positionRatio = (ev.pageX - _this.state.scrubberBounds.left) / _this.state.scrubberBounds.width;\n var time = positionRatio * _this.props.runTime;\n\n _this.setState({\n playheadX: time\n });\n }\n };\n\n _this.dragEnd = function () {\n if (_this.state.isPlayheadUpdating) {\n _this.props.onUpdateTime(_this.state.playheadX);\n\n _this.setState({\n isPlayheadUpdating: false,\n playheadX: 0\n });\n }\n\n document.body.removeEventListener('mousemove', _this.dragMove);\n document.body.removeEventListener('mouseup', _this.dragEnd);\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DragPlayhead, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n playhead: {\n x: this.state.playheadX,\n isUpdating: this.state.isPlayheadUpdating\n },\n dragStartPlayhead: this.dragStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 56\n },\n __self: this\n }));\n }\n }]);\n\n return DragPlayhead;\n }(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/dragPlayhead.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return dragPlayhead; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/hocs/dragPlayhead.js\";\n\n\nfunction dragPlayhead(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(DragPlayhead, _Component);\n\n function DragPlayhead() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, DragPlayhead);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(DragPlayhead)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n isPlayheadUpdating: false,\n playheadX: 0,\n scrubberBounds: null\n };\n\n _this.dragStart = function (resource, ev) {\n var scrubberBounds = ev.currentTarget.getBoundingClientRect();\n var positionRatio = (ev.pageX - scrubberBounds.left) / scrubberBounds.width;\n var time = positionRatio * _this.props.runTime;\n document.body.addEventListener('mousemove', _this.dragMove);\n document.body.addEventListener('mouseup', _this.dragEnd);\n\n _this.setState({\n isPlayheadUpdating: true,\n playheadX: time,\n scrubberBounds: scrubberBounds\n });\n };\n\n _this.dragMove = function (ev) {\n if (_this.state.isPlayheadUpdating) {\n // in order to smooth drag\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n var positionRatio = (ev.pageX - _this.state.scrubberBounds.left) / _this.state.scrubberBounds.width;\n var time = positionRatio * _this.props.runTime;\n\n _this.setState({\n playheadX: time\n });\n }\n };\n\n _this.dragEnd = function () {\n if (_this.state.isPlayheadUpdating) {\n _this.props.onUpdateTime(_this.state.playheadX);\n\n _this.setState({\n isPlayheadUpdating: false,\n playheadX: 0\n });\n }\n\n document.body.removeEventListener('mousemove', _this.dragMove);\n document.body.removeEventListener('mouseup', _this.dragEnd);\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(DragPlayhead, [{\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n playhead: {\n x: this.state.playheadX,\n isUpdating: this.state.isPlayheadUpdating\n },\n dragStartPlayhead: this.dragStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 56\n },\n __self: this\n }));\n }\n }]);\n\n return DragPlayhead;\n }(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/dragPlayhead.js?");
/***/ }),
@@ -11012,7 +11036,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pan; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/hocs/pan.js\";\n\n\nfunction pan(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Pan, _Component);\n\n function Pan() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Pan);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Pan)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n startX: 0,\n selectedPoint: -1,\n viewportX: 0,\n viewportStartX: 0,\n deltaX: 0\n };\n\n _this.onPanStart = function (ev) {\n document.body.addEventListener('mousemove', _this.panMove);\n document.body.addEventListener('mouseup', _this.panEnd);\n\n _this.setState({\n selectedPoint: -1,\n startX: ev.pageX,\n viewportStartX: _this.state.viewportX,\n deltaX: 0\n });\n };\n\n _this.panMove = function (ev) {\n var _this$props = _this.props,\n viewerWidth = _this$props.viewerWidth,\n zoom = _this$props.zoom;\n var _this$state = _this.state,\n viewportStartX = _this$state.viewportStartX,\n startX = _this$state.startX;\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n var dX = ev.pageX - startX;\n\n _this.setState({\n viewportX: Math.min(Math.max(0, viewportStartX - dX), viewerWidth * zoom - viewerWidth)\n });\n };\n\n _this.panEnd = function () {\n document.body.removeEventListener('mousemove', _this.panMove);\n document.body.removeEventListener('mouseup', _this.panEnd);\n\n if (_this.state.viewportStartX !== -1) {\n _this.props.panToPosition(_this.state.viewportX);\n }\n\n _this.setState({\n selectedPoint: -1,\n viewportStartX: -1\n });\n };\n\n return _this;\n }\n\n Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Pan, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps, nextContext) {\n if (nextProps.x !== this.props.x) {\n this.setState({\n viewportX: nextProps.x,\n viewportStartX: -1\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n viewport: {\n x: this.state.viewportX,\n startX: this.state.viewportStartX\n },\n onPanStart: this.onPanStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }));\n }\n }]);\n\n return Pan;\n }(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/pan.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return pan; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/clearTextSelection */ \"./src/utils/clearTextSelection.js\");\n\n\n\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/hocs/pan.js\";\n\n\nfunction pan(WrappedComponent) {\n return (\n /*#__PURE__*/\n function (_Component) {\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(Pan, _Component);\n\n function Pan() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, Pan);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Pan)).call.apply(_getPrototypeOf2, [this].concat(args)));\n _this.state = {\n startX: 0,\n selectedPoint: -1,\n viewportX: 0,\n viewportStartX: 0,\n deltaX: 0\n };\n\n _this.onPanStart = function (ev) {\n document.body.addEventListener('mousemove', _this.panMove);\n document.body.addEventListener('mouseup', _this.panEnd);\n\n _this.setState({\n selectedPoint: -1,\n startX: ev.pageX,\n viewportStartX: _this.state.viewportX,\n deltaX: 0\n });\n };\n\n _this.panMove = function (ev) {\n var _this$props = _this.props,\n viewerWidth = _this$props.viewerWidth,\n zoom = _this$props.zoom;\n var _this$state = _this.state,\n viewportStartX = _this$state.viewportStartX,\n startX = _this$state.startX;\n Object(_utils_clearTextSelection__WEBPACK_IMPORTED_MODULE_6__[\"default\"])();\n var dX = ev.pageX - startX;\n\n _this.setState({\n viewportX: Math.min(Math.max(0, viewportStartX - dX), viewerWidth * zoom - viewerWidth)\n });\n };\n\n _this.panEnd = function () {\n document.body.removeEventListener('mousemove', _this.panMove);\n document.body.removeEventListener('mouseup', _this.panEnd);\n\n if (_this.state.viewportStartX !== -1) {\n _this.props.panToPosition(_this.state.viewportX);\n }\n\n _this.setState({\n selectedPoint: -1,\n viewportStartX: -1\n });\n };\n\n return _this;\n }\n\n Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Pan, [{\n key: \"componentWillReceiveProps\",\n value: function componentWillReceiveProps(nextProps, nextContext) {\n if (nextProps.x !== this.props.x) {\n this.setState({\n viewportX: nextProps.x,\n viewportStartX: -1\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(WrappedComponent, Object.assign({}, this.props, {\n viewport: {\n x: this.state.viewportX,\n startX: this.state.viewportStartX\n },\n onPanStart: this.onPanStart,\n __source: {\n fileName: _jsxFileName,\n lineNumber: 62\n },\n __self: this\n }));\n }\n }]);\n\n return Pan;\n }(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"])\n );\n}\n\n//# sourceURL=webpack:///./src/hocs/pan.js?");
/***/ }),
@@ -11036,7 +11060,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return useInterval; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction useInterval(callback, delay) {\n var other = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var savedCallback = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(); // Remember the latest callback.\n\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n savedCallback.current = callback;\n }); // Set up the interval.\n\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n var id = setInterval(tick, delay);\n return function () {\n return clearInterval(id);\n };\n }\n }, [delay].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other)));\n}\n\n//# sourceURL=webpack:///./src/hooks/useInterval.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return useInterval; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction useInterval(callback, delay) {\n var other = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var savedCallback = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(); // Remember the latest callback.\n\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n savedCallback.current = callback;\n }); // Set up the interval.\n\n Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n var id = setInterval(tick, delay);\n return function () {\n return clearInterval(id);\n };\n }\n }, [delay].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(other)));\n}\n\n//# sourceURL=webpack:///./src/hooks/useInterval.js?");
/***/ }),
@@ -11048,7 +11072,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _main_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./main.scss */ \"./src/main.scss\");\n/* harmony import */ var _main_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_main_scss__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _containers_Root_Root__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./containers/Root/Root */ \"./src/containers/Root/Root.js\");\n/* harmony import */ var _store_main__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./store/main */ \"./src/store/main.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! query-string */ \"./node_modules/query-string/index.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_7__);\n\n\nvar _jsxFileName = \"/home/dananji/avalonmediasystem/original/timeliner/src/index.js\";\n\n\n\n\n\n\n\nvar _qs$parse = query_string__WEBPACK_IMPORTED_MODULE_7__[\"parse\"](location.hash),\n resource = _qs$parse.resource,\n save = _qs$parse.save,\n callback = _qs$parse.callback,\n noFooter = _qs$parse.noFooter,\n noHeader = _qs$parse.noHeader,\n noSourceLink = _qs$parse.noSourceLink,\n hash = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_qs$parse, [\"resource\", \"save\", \"callback\", \"noFooter\", \"noHeader\", \"noSourceLink\"]); // Set the hash back\n\n\nlocation.hash = query_string__WEBPACK_IMPORTED_MODULE_7__[\"stringify\"](Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n resource: resource,\n save: save,\n callback: callback,\n noFooter: noFooter,\n noHeader: noHeader,\n noSourceLink: noSourceLink\n}, hash));\n\nvar _configureStore = Object(_store_main__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(resource, typeof save === 'undefined', callback),\n store = _configureStore.store,\n persistor = _configureStore.persistor;\n\nObject(react_dom__WEBPACK_IMPORTED_MODULE_4__[\"render\"])(react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_containers_Root_Root__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n store: store,\n persistor: persistor,\n callback: callback,\n hasResource: !!resource,\n noFooter: noFooter === 'true',\n noHeader: noHeader === 'true',\n noSourceLink: noSourceLink === 'true',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 36\n },\n __self: undefined\n}), document.getElementById('app'));\n\n//# sourceURL=webpack:///./src/index.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _main_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./main.scss */ \"./src/main.scss\");\n/* harmony import */ var _main_scss__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_main_scss__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _containers_Root_Root__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./containers/Root/Root */ \"./src/containers/Root/Root.js\");\n/* harmony import */ var _store_main__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./store/main */ \"./src/store/main.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! query-string */ \"./node_modules/query-string/index.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_7__);\n\n\nvar _jsxFileName = \"/home/dwithana/github/iu/timeliner/src/index.js\";\n\n\n\n\n\n\n\nvar _qs$parse = query_string__WEBPACK_IMPORTED_MODULE_7__[\"parse\"](location.hash),\n resource = _qs$parse.resource,\n save = _qs$parse.save,\n callback = _qs$parse.callback,\n noFooter = _qs$parse.noFooter,\n noHeader = _qs$parse.noHeader,\n noVideo = _qs$parse.noVideo,\n noSourceLink = _qs$parse.noSourceLink,\n hash = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_qs$parse, [\"resource\", \"save\", \"callback\", \"noFooter\", \"noHeader\", \"noVideo\", \"noSourceLink\"]); // Set the hash back\n\n\nlocation.hash = query_string__WEBPACK_IMPORTED_MODULE_7__[\"stringify\"](Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n resource: resource,\n save: save,\n callback: callback,\n noFooter: noFooter,\n noHeader: noHeader,\n noSourceLink: noSourceLink\n}, hash));\n\nvar _configureStore = Object(_store_main__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(resource, typeof save === 'undefined', callback),\n store = _configureStore.store,\n persistor = _configureStore.persistor;\n\nif (document.getElementById('app')) {\n Object(react_dom__WEBPACK_IMPORTED_MODULE_4__[\"render\"])(react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(_containers_Root_Root__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n store: store,\n persistor: persistor,\n callback: callback,\n hasResource: !!resource,\n noFooter: noFooter === 'true',\n noHeader: noHeader === 'true',\n noVideo: noVideo === 'true',\n noSourceLink: noSourceLink === 'true',\n __source: {\n fileName: _jsxFileName,\n lineNumber: 38\n },\n __self: undefined\n }), document.getElementById('app'));\n}\n\n//# sourceURL=webpack:///./src/index.js?");
/***/ }),
@@ -11071,7 +11095,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n\n\n\n\nvar canvas = function canvas() {\n var _update2, _update4;\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_CANVAS_STATE\"];\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"AUDIO_LOADING\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].PERCENT_LOADED, {\n $set: action.payload.percentLoaded\n }));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"AUDIO_LOADED\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update2 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update2, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].IS_LOADED, {\n $set: action.payload.isLoaded\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update2, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].PERCENT_LOADED, {\n $set: 100\n }), _update2));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"AUDIO_ERROR\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].ERROR, {\n code: {\n $set: action.payload.code\n },\n description: {\n $set: action.payload.description\n }\n }));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"UNLOAD_AUDIO\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update4 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].URL, {\n $set: null\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].IS_LOADED, {\n $set: false\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].PERCENT_LOADED, {\n $set: 0\n }), _update4));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_CANVAS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(_constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_CANVAS_STATE\"], {\n $merge: action.state\n });\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (canvas);\n\n//# sourceURL=webpack:///./src/reducers/canvas.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n\n\n\n\nvar canvas = function canvas() {\n var _update2, _update4;\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_CANVAS_STATE\"];\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"MEDIA_LOADING\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].PERCENT_LOADED, {\n $set: action.payload.percentLoaded\n }));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"MEDIA_LOADED\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update2 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update2, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].IS_LOADED, {\n $set: action.payload.isLoaded\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update2, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].PERCENT_LOADED, {\n $set: 100\n }), _update2));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"MEDIA_ERROR\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].ERROR, {\n code: {\n $set: action.payload.code\n },\n description: {\n $set: action.payload.description\n }\n }));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"UNLOAD_MEDIA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update4 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].URL, {\n $set: null\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].IS_LOADED, {\n $set: false\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].PERCENT_LOADED, {\n $set: 0\n }), _update4));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_CANVAS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(_constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_CANVAS_STATE\"], {\n $merge: action.state\n });\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_POSTER\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_canvas__WEBPACK_IMPORTED_MODULE_2__[\"CANVAS\"].POSTER, {\n $set: action.payload.poster\n }));\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (canvas);\n\n//# sourceURL=webpack:///./src/reducers/canvas.js?");
/***/ }),
@@ -11083,7 +11107,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_STATE\", function() { return DEFAULT_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return reducer; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants_markers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/markers */ \"./src/constants/markers.js\");\n\n\n\n\nvar DEFAULT_STATE = {\n list: {},\n selected: [],\n visible: true\n};\n\nfunction filterUndefinedSets(acc, _ref) {\n var _ref2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, 2),\n key = _ref2[0],\n change = _ref2[1];\n\n if (typeof change.$set !== 'undefined') {\n acc[key] = change;\n }\n\n return acc;\n}\n\nfunction reducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"UPDATE_MARKER\"]:\n if (!action.payload.id) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, action.payload.id, [[_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].ID, {\n $set: action.payload.id\n }], [_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].LABEL, {\n $set: action.payload.label\n }], [_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].SUMMARY, {\n $set: action.payload.summary\n }], [_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].TIME, {\n $set: action.payload.time\n }]].reduce(filterUndefinedSets, {}))\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"CLEAR_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: {\n $set: {}\n },\n selected: {\n $set: []\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"CREATE_MARKER\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, action.payload.marker.id, {\n $set: action.payload.marker\n })\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"IMPORT_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: action.payload.markers.reduce(function (acc, next) {\n if (next.id) {\n acc[next.id] = {\n $set: next\n };\n }\n\n return acc;\n }, {})\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"DELETE_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: {\n $unset: action.payload.ids\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"DELETE_MARKER\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: {\n $unset: [action.payload.id]\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"SHOW_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n visible: {\n $set: true\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"HIDE_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n visible: {\n $set: false\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"SELECT_MARKER\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n selected: {\n $push: [action.payload.id]\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"DESELECT_MARKER\"]:\n var index = state.selected.indexOf(action.payload.id);\n\n if (index === -1) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n selected: {\n $splice: [[state.selected.indexOf(action.payload.id), 1]]\n }\n });\n\n default:\n return state;\n }\n}\n\n//# sourceURL=webpack:///./src/reducers/markers.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_STATE\", function() { return DEFAULT_STATE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return reducer; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants_markers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/markers */ \"./src/constants/markers.js\");\n\n\n\n\nvar DEFAULT_STATE = {\n list: {},\n selected: [],\n visible: true\n};\n\nfunction filterUndefinedSets(acc, _ref) {\n var _ref2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_ref, 2),\n key = _ref2[0],\n change = _ref2[1];\n\n if (typeof change.$set !== 'undefined') {\n acc[key] = change;\n }\n\n return acc;\n}\n\nfunction reducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DEFAULT_STATE;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"UPDATE_MARKER\"]:\n if (!action.payload.id) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, action.payload.id, [[_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].ID, {\n $set: action.payload.id\n }], [_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].LABEL, {\n $set: action.payload.label\n }], [_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].SUMMARY, {\n $set: action.payload.summary\n }], [_constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"MARKER\"].TIME, {\n $set: action.payload.time\n }]].reduce(filterUndefinedSets, {}))\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"CLEAR_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: {\n $set: {}\n },\n selected: {\n $set: []\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"CREATE_MARKER\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, action.payload.marker.id, {\n $set: action.payload.marker\n })\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"IMPORT_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: action.payload.markers.reduce(function (acc, next) {\n if (next.id) {\n acc[next.id] = {\n $set: next\n };\n }\n\n return acc;\n }, {})\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"DELETE_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: {\n $unset: action.payload.ids\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"DELETE_MARKER\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n list: {\n $unset: [action.payload.id]\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"SHOW_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n visible: {\n $set: true\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"HIDE_MARKERS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n visible: {\n $set: false\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"SELECT_MARKER\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n selected: {\n $push: [action.payload.id]\n }\n });\n\n case _constants_markers__WEBPACK_IMPORTED_MODULE_3__[\"DESELECT_MARKER\"]:\n var index = state.selected.indexOf(action.payload.id);\n\n if (index === -1) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_2___default()(state, {\n selected: {\n $splice: [[state.selected.indexOf(action.payload.id), 1]]\n }\n });\n\n default:\n return state;\n }\n}\n\n//# sourceURL=webpack:///./src/reducers/markers.js?");
/***/ }),
@@ -11095,7 +11119,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\n\n\n\nvar project = function project() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_PROJECT_STATE\"];\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"UPDATE_SETTINGS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, {\n $merge: action.payload\n });\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_LANGUAGE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].LANGUAGE, {\n $set: action.payload.language\n }));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_TITLE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].TITLE, {\n $set: action.payload.title\n }));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_DESCRIPTION\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].DESCRIPTION, {\n $set: action.payload.description\n }));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"IMPORT_ERROR\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, {\n error: {\n $set: action.payload.error\n }\n });\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RESET_DOCUMENT\"]:\n return state;\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_PROJECT\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()({}, {\n $merge: _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_PROJECT_STATE\"]\n }), {\n $merge: action.state\n });\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_COLOUR_PALETTE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].COLOUR_PALETTE, action.payload.pallet));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"EXPORT_DOCUMENT\"]:\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PROJECT\"]:\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (project);\n\n//# sourceURL=webpack:///./src/reducers/project.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\n\n\n\nvar project = function project() {\n var _update, _update2, _update3, _update4;\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_PROJECT_STATE\"];\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"UPDATE_SETTINGS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, {\n $merge: action.payload\n });\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_LANGUAGE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].LANGUAGE, {\n $set: action.payload.language\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].IS_CHANGED, {\n $set: false\n }), _update));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_TITLE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update2 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update2, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].TITLE, {\n $set: action.payload.title\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update2, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].IS_CHANGED, {\n $set: false\n }), _update2));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_DESCRIPTION\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update3 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update3, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].DESCRIPTION, {\n $set: action.payload.description\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update3, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].IS_CHANGED, {\n $set: false\n }), _update3));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"IMPORT_ERROR\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, {\n error: {\n $set: action.payload.error\n }\n });\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RESET_DOCUMENT\"]:\n return state;\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_PROJECT\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()({}, {\n $merge: _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_PROJECT_STATE\"]\n }), {\n $merge: action.state\n });\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_COLOUR_PALETTE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update4 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].COLOUR_PALETTE, action.payload.pallet), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update4, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].IS_CHANGED, {\n $set: false\n }), _update4));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"EXPORT_DOCUMENT\"]:\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PROJECT\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].IS_CHANGED, {\n $set: true\n }));\n\n case _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT_CHANGED\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT\"].IS_CHANGED, {\n $set: action.payload.isSaved\n }));\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (project);\n\n//# sourceURL=webpack:///./src/reducers/project.js?");
/***/ }),
@@ -11107,7 +11131,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"undo\", function() { return undo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangeList\", function() { return getRangeList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSelectedRanges\", function() { return getSelectedRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangesByIds\", function() { return getRangesByIds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangesAtPoint\", function() { return getRangesAtPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangesBetweenTimes\", function() { return getRangesBetweenTimes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNextBubbleStartTime\", function() { return getNextBubbleStartTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPreviousBubbleStartTime\", function() { return getPreviousBubbleStartTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPoints\", function() { return getPoints; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions/range */ \"./src/actions/range.js\");\n\n\n\n\n\n\nvar NEW_DEFAULT_RANGES_STATE = {\n selected: [],\n list: {}\n};\nfunction undo(prevState, action) {\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE_MUTATION\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"rangeMutations\"])(action.mutations.reverse().map(function (mutation) {\n return undo(prevState, mutation);\n }));\n }\n\n var prevResource = action.payload.id ? prevState.list[action.payload.id] : null;\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"INCREASE_RANGE_DEPTH\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"decreaseRangeDepth\"])(action.payload.id);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DECREASE_RANGE_DEPTH\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"increaseRangeDepth\"])(action.payload.id);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE\"] || action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"SCHEDULE_UPDATE_RANGE\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"updateRange\"])(action.payload.id, Object.keys(action.payload).reduce(function (acc, key) {\n acc[key] = prevResource[key];\n return acc;\n }, {}), false);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE_TIME\"]) {\n var toRevert = {};\n\n if (typeof action.payload.startTime !== 'undefined') {\n toRevert.startTime = prevResource.startTime;\n }\n\n if (typeof action.payload.endTime !== 'undefined') {\n toRevert.endTime = prevResource.endTime;\n }\n\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"updateRangeTime\"])(action.payload.id, toRevert);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"CREATE_RANGE\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"deleteRange\"])(action.payload.id);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DELETE_RANGE\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"createRange\"])(prevResource);\n }\n\n return {};\n}\n\nvar range = function range() {\n var _action$payload$id3, _action$payload$id4;\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NEW_DEFAULT_RANGES_STATE;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE_MUTATION\"]) {\n return (action.mutations || []).reduce(range, state);\n }\n\n switch (action.type) {\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"SELECT_RANGE\"]:\n // Don't select if already selected.\n if (state.selected.indexOf(action.payload.id) !== -1) {\n return state;\n } // Don't select if it does not exist.\n\n\n if (Object.keys(state.list).indexOf(action.payload.id) === -1) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n selected: {\n $push: [action.payload.id]\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DESELECT_RANGE\"]:\n // Don't deselect if not in the index.\n if (state.selected.indexOf(action.payload.id) === -1) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n selected: {\n $apply: function $apply(selected) {\n return selected.filter(function (id) {\n return id !== action.payload.id;\n });\n }\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"CREATE_RANGE\"]:\n var id = action.payload.id;\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, id, {\n $set: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DEFAULT_RANGE\"], action.payload)\n })\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"INCREASE_RANGE_DEPTH\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].DEPTH, {\n $apply: function $apply(n) {\n return n + 1;\n }\n }))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DECREASE_RANGE_DEPTH\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].DEPTH, {\n $apply: function $apply(n) {\n return n === 1 ? 1 : n - 1;\n }\n }))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE_TIME\"]:\n if (!state.list[action.payload.id]) {\n console.warn('Cannot update section/range that does not exist', action);\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, (_action$payload$id3 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id3, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].START_TIME, {\n $set: typeof action.payload.startTime !== 'undefined' ? action.payload.startTime : state.list[action.payload.id].startTime\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id3, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].END_TIME, {\n $set: typeof action.payload.endTime !== 'undefined' ? action.payload.endTime : state.list[action.payload.id].endTime\n }), _action$payload$id3))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, (_action$payload$id4 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].LABEL, {\n $set: action.payload.label\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].SUMMARY, {\n $set: action.payload.summary\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].COLOUR, {\n $set: action.payload.colour\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].WHITE_TEXT, {\n $set: action.payload.whiteText\n }), _action$payload$id4))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DELETE_RANGE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: {\n $unset: [action.payload.id]\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"IMPORT_RANGES\"]:\n if (Array.isArray(action.payload.ranges)) {\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: {\n $set: action.payload.ranges.reduce(function (acc, next) {\n acc[next.id] = next;\n return acc;\n }, {})\n }\n });\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: {\n $set: action.payload.ranges\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UNSET_RANGE_COLOR\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, {\n $unset: [_constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].COLOUR]\n })\n });\n\n default:\n return state;\n }\n};\n\nfunction getRangeList(state) {\n return state.range.list;\n}\nfunction getSelectedRanges(state) {\n return state.range.selected;\n}\nfunction getRangesByIds(rangeIds) {\n return function (state) {\n return rangeIds.map(function (rangeId) {\n return state.range.list[rangeId];\n });\n };\n}\nfunction getRangesAtPoint(time) {\n var sticky = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;\n return function (state) {\n return Object.values(state.range.list).filter(function (next) {\n return Math.abs(next.startTime - time) <= sticky || Math.abs(next.endTime - time) <= sticky;\n });\n };\n}\nfunction getRangesBetweenTimes(startTime, endTime) {\n return function (state) {\n return Object.values(state.range.list).filter(function (next) {\n return next.startTime >= startTime && next.endTime <= endTime;\n });\n };\n}\nvar getNextBubbleStartTime = function getNextBubbleStartTime(state) {\n // const currentTime = state.viewState.currentTime;\n // const pointsPastNext = getPoints(state).filter(point => point > currentTime);\n // console.log(pointsPastNext);\n var result = Math.min.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(getPoints(state).filter(function (point) {\n return point - 250 >= state.viewState.currentTime;\n })));\n return {\n time: result === Infinity ? state.viewState.runTime + 1 : result + 1,\n doStop: result === Infinity\n };\n};\nvar getPreviousBubbleStartTime = function getPreviousBubbleStartTime(state) {\n return Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(getPoints(state).filter(function (point) {\n return point + 250 <= state.viewState.currentTime;\n })));\n};\nvar getPoints = function getPoints(state) {\n return Array.from(Object.values(getRangeList(state)).reduce(function (markers, r) {\n markers.add(r.startTime);\n markers.add(r.endTime);\n return markers;\n }, new Set([]))).sort();\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (range);\n\n//# sourceURL=webpack:///./src/reducers/range.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"undo\", function() { return undo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangeList\", function() { return getRangeList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSelectedRanges\", function() { return getSelectedRanges; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangesByIds\", function() { return getRangesByIds; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangesAtPoint\", function() { return getRangesAtPoint; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRangesBetweenTimes\", function() { return getRangesBetweenTimes; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getNextBubbleStartTime\", function() { return getNextBubbleStartTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPreviousBubbleStartTime\", function() { return getPreviousBubbleStartTime; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPoints\", function() { return getPoints; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions/range */ \"./src/actions/range.js\");\n\n\n\n\n\n\nvar NEW_DEFAULT_RANGES_STATE = {\n selected: [],\n list: {}\n};\nfunction undo(prevState, action) {\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE_MUTATION\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"rangeMutations\"])(action.mutations.reverse().map(function (mutation) {\n return undo(prevState, mutation);\n }));\n }\n\n var prevResource = action.payload.id ? prevState.list[action.payload.id] : null;\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"INCREASE_RANGE_DEPTH\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"decreaseRangeDepth\"])(action.payload.id);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DECREASE_RANGE_DEPTH\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"increaseRangeDepth\"])(action.payload.id);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE\"] || action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"SCHEDULE_UPDATE_RANGE\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"updateRange\"])(action.payload.id, Object.keys(action.payload).reduce(function (acc, key) {\n acc[key] = prevResource[key];\n return acc;\n }, {}), false);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE_TIME\"]) {\n var toRevert = {};\n\n if (typeof action.payload.startTime !== 'undefined') {\n toRevert.startTime = prevResource.startTime;\n }\n\n if (typeof action.payload.endTime !== 'undefined') {\n toRevert.endTime = prevResource.endTime;\n }\n\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"updateRangeTime\"])(action.payload.id, toRevert);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"CREATE_RANGE\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"deleteRange\"])(action.payload.id);\n }\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DELETE_RANGE\"]) {\n return Object(_actions_range__WEBPACK_IMPORTED_MODULE_5__[\"createRange\"])(prevResource);\n }\n\n return {};\n}\n\nvar range = function range() {\n var _action$payload$id3, _action$payload$id4;\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : NEW_DEFAULT_RANGES_STATE;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n if (action.type === _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE_MUTATION\"]) {\n return (action.mutations || []).reduce(range, state);\n }\n\n switch (action.type) {\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"SELECT_RANGE\"]:\n // Don't select if already selected.\n if (state.selected.indexOf(action.payload.id) !== -1) {\n return state;\n } // Don't select if it does not exist.\n\n\n if (Object.keys(state.list).indexOf(action.payload.id) === -1) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n selected: {\n $push: [action.payload.id]\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DESELECT_RANGE\"]:\n // Don't deselect if not in the index.\n if (state.selected.indexOf(action.payload.id) === -1) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n selected: {\n $apply: function $apply(selected) {\n return selected.filter(function (id) {\n return id !== action.payload.id;\n });\n }\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"CREATE_RANGE\"]:\n var id = action.payload.id;\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, id, {\n $set: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DEFAULT_RANGE\"], action.payload)\n })\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"INCREASE_RANGE_DEPTH\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].DEPTH, {\n $apply: function $apply(n) {\n return n + 1;\n }\n }))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DECREASE_RANGE_DEPTH\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].DEPTH, {\n $apply: function $apply(n) {\n return n === 1 ? 1 : n - 1;\n }\n }))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE_TIME\"]:\n if (!state.list[action.payload.id]) {\n console.warn('Cannot update section/range that does not exist', action);\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, (_action$payload$id3 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id3, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].START_TIME, {\n $set: typeof action.payload.startTime !== 'undefined' ? action.payload.startTime : state.list[action.payload.id].startTime\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id3, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].END_TIME, {\n $set: typeof action.payload.endTime !== 'undefined' ? action.payload.endTime : state.list[action.payload.id].endTime\n }), _action$payload$id3))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UPDATE_RANGE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, (_action$payload$id4 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].LABEL, {\n $set: action.payload.label\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].SUMMARY, {\n $set: action.payload.summary\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].COLOUR, {\n $set: action.payload.colour\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_action$payload$id4, _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].WHITE_TEXT, {\n $set: action.payload.whiteText\n }), _action$payload$id4))\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"DELETE_RANGE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: {\n $unset: [action.payload.id]\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"IMPORT_RANGES\"]:\n if (Array.isArray(action.payload.ranges)) {\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: {\n $set: action.payload.ranges.reduce(function (acc, next) {\n acc[next.id] = next;\n return acc;\n }, {})\n }\n });\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: {\n $set: action.payload.ranges\n }\n });\n\n case _constants_range__WEBPACK_IMPORTED_MODULE_4__[\"UNSET_RANGE_COLOR\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_3___default()(state, {\n list: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, action.payload.id, {\n $unset: [_constants_range__WEBPACK_IMPORTED_MODULE_4__[\"RANGE\"].COLOUR]\n })\n });\n\n default:\n return state;\n }\n};\n\nfunction getRangeList(state) {\n return state.range.list;\n}\nfunction getSelectedRanges(state) {\n return state.range.selected;\n}\nfunction getRangesByIds(rangeIds) {\n return function (state) {\n return rangeIds.map(function (rangeId) {\n return state.range.list[rangeId];\n });\n };\n}\nfunction getRangesAtPoint(time) {\n var sticky = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 50;\n return function (state) {\n return Object.values(state.range.list).filter(function (next) {\n return Math.abs(next.startTime - time) <= sticky || Math.abs(next.endTime - time) <= sticky;\n });\n };\n}\nfunction getRangesBetweenTimes(startTime, endTime) {\n return function (state) {\n return Object.values(state.range.list).filter(function (next) {\n return next.startTime >= startTime && next.endTime <= endTime;\n });\n };\n}\nvar getNextBubbleStartTime = function getNextBubbleStartTime(state) {\n // const currentTime = state.viewState.currentTime;\n // const pointsPastNext = getPoints(state).filter(point => point > currentTime);\n // console.log(pointsPastNext);\n var result = Math.min.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(getPoints(state).filter(function (point) {\n return point - 250 >= state.viewState.currentTime;\n })));\n return {\n time: result === Infinity ? state.viewState.runTime + 1 : result + 1,\n doStop: result === Infinity\n };\n};\nvar getPreviousBubbleStartTime = function getPreviousBubbleStartTime(state) {\n return Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(getPoints(state).filter(function (point) {\n return point + 250 <= state.viewState.currentTime;\n })));\n};\nvar getPoints = function getPoints(state) {\n return Array.from(Object.values(getRangeList(state)).reduce(function (markers, r) {\n markers.add(r.startTime);\n markers.add(r.endTime);\n return markers;\n }, new Set([]))).sort();\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (range);\n\n//# sourceURL=webpack:///./src/reducers/range.js?");
/***/ }),
@@ -11131,7 +11155,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n\n\n\n\n\nvar viewState = function viewState() {\n var _update6;\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_VIEWSTATE_STATE\"];\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_START_TIME\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].START_TIME, {\n $set: action.payload.startTime\n }));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_3__[\"AUDIO_LOADING\"]:\n if (state[_constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].RUNTIME]) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].RUNTIME, {\n $set: action.payload.duration\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"PLAY_AUDIO\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_PLAYING, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"STOP_AUDIO\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_PLAYING, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"ZOOM_TO\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].ZOOM, {\n $set: action.payload.zoom\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"RESET_ZOOM\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update6 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update6, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].ZOOM, {\n $set: 1.0\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update6, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].X, {\n $set: 0.0\n }), _update6));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"UPDATE_VIEWER_WIDTH\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VIEWER_WIDTH, {\n $set: action.payload.width\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"PAN_TO_POSITION\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].X, {\n $set: action.payload.x\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SHOW_IMPORT_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_IMPORT_OPEN, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"DISMISS_IMPORT_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_IMPORT_OPEN, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SHOW_SETTINGS_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_SETTINGS_OPEN, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"DISMISS_SETTINGS_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_SETTINGS_OPEN, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_VOLUME\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VOLUME, {\n $set: action.payload.volume\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_CURRENT_TIME\"]:\n if (Number.isFinite(action.payload.currentTime) === false) {\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, 0));\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, {\n $set: action.payload.currentTime || 0\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"FAST_FORWARD\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, {\n $set: Math.min(state.currentTime + 5000, state.runTime)\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"FAST_REWARD\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, {\n $set: Math.max(state.currentTime - 5000, 0)\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_VIEW_STATE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, {\n $merge: action.state\n });\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_SOURCE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].SOURCE, {\n $set: action.payload.source\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"EDIT_METADATA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].METADATA_TO_EDIT, {\n $set: action.rangeId\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"OPEN_CONFIRM_DIALOG\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VERIFY_DIALOG, {\n open: {\n $set: true\n },\n title: {\n $set: action.title\n },\n doCancel: {\n $set: action.doCancel\n }\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CLOSE_CONFIRM_DIALOG\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VERIFY_DIALOG, {\n open: {\n $set: false\n }\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"EDIT_PROJECT_METADATA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].PROJECT_METADATA_EDITOR_OPEN, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CANCEL_PROJECT_METADATA_EDITS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].PROJECT_METADATA_EDITOR_OPEN, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"FINISHED_PLAYING\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_PLAYING, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_CALLBACK\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CALLBACK, {\n $set: action.payload.callback\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_RESOURCE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].RESOURCE, {\n $set: action.payload.resource\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PROJECT_METADATA\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CONFIRM_YES\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CONFIRM_NO\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"NEXT_BUBBLE\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"PREVIOUS_BUBBLE\"]:\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (viewState);\n\n//# sourceURL=webpack:///./src/reducers/viewState.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutability-helper */ \"./node_modules/immutability-helper/index.js\");\n/* harmony import */ var immutability_helper__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutability_helper__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n\n\n\n\n\nvar viewState = function viewState() {\n var _update7;\n\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"DEFAULT_VIEWSTATE_STATE\"];\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_START_TIME\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].START_TIME, {\n $set: action.payload.startTime\n }));\n\n case _constants_canvas__WEBPACK_IMPORTED_MODULE_3__[\"MEDIA_LOADING\"]:\n if (state[_constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].RUNTIME]) {\n return state;\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].RUNTIME, {\n $set: action.payload.duration\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"PLAY_MEDIA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_PLAYING, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"STOP_MEDIA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_PLAYING, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SEEK_MEDIA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_SEEKED, {\n $set: action.payload.flag\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"ZOOM_TO\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].ZOOM, {\n $set: action.payload.zoom\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"RESET_ZOOM\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, (_update7 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update7, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].ZOOM, {\n $set: 1.0\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_update7, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].X, {\n $set: 0.0\n }), _update7));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"UPDATE_VIEWER_WIDTH\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VIEWER_WIDTH, {\n $set: action.payload.width\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"PAN_TO_POSITION\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].X, {\n $set: action.payload.x\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SHOW_IMPORT_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_IMPORT_OPEN, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"DISMISS_IMPORT_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_IMPORT_OPEN, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SHOW_SETTINGS_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_SETTINGS_OPEN, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"DISMISS_SETTINGS_MODAL\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_SETTINGS_OPEN, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_VOLUME\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VOLUME, {\n $set: action.payload.volume\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_CURRENT_TIME\"]:\n if (Number.isFinite(action.payload.currentTime) === false) {\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, 0));\n }\n\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, {\n $set: action.payload.currentTime || 0\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"FAST_FORWARD\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, {\n $set: Math.min(state.currentTime + 5000, state.runTime)\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"FAST_REWARD\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CURRENT_TIME, {\n $set: Math.max(state.currentTime - 5000, 0)\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_VIEW_STATE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, {\n $merge: action.state\n });\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"LOAD_SOURCE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].SOURCE, {\n $set: action.payload.source\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"EDIT_METADATA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].METADATA_TO_EDIT, {\n $set: action.rangeId\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"OPEN_CONFIRM_DIALOG\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VERIFY_DIALOG, {\n open: {\n $set: true\n },\n title: {\n $set: action.title\n },\n doCancel: {\n $set: action.doCancel\n }\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CLOSE_CONFIRM_DIALOG\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].VERIFY_DIALOG, {\n open: {\n $set: false\n }\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"EDIT_PROJECT_METADATA\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].PROJECT_METADATA_EDITOR_OPEN, {\n $set: true\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CANCEL_PROJECT_METADATA_EDITS\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].PROJECT_METADATA_EDITOR_OPEN, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"FINISHED_PLAYING\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].IS_PLAYING, {\n $set: false\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_CALLBACK\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].CALLBACK, {\n $set: action.payload.callback\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SET_RESOURCE\"]:\n return immutability_helper__WEBPACK_IMPORTED_MODULE_1___default()(state, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"VIEWSTATE\"].RESOURCE, {\n $set: action.payload.resource\n }));\n\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PROJECT_METADATA\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CONFIRM_YES\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"CONFIRM_NO\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"NEXT_BUBBLE\"]:\n case _constants_viewState__WEBPACK_IMPORTED_MODULE_2__[\"PREVIOUS_BUBBLE\"]:\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (viewState);\n\n//# sourceURL=webpack:///./src/reducers/viewState.js?");
/***/ }),
@@ -11143,7 +11167,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showConfirmation\", function() { return showConfirmation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return root; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-saga/effects */ \"./node_modules/redux-saga/es/effects.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _utils_iiifLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/iiifLoader */ \"./src/utils/iiifLoader.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! redux-undo-redo */ \"./node_modules/redux-undo-redo/lib/index.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _utils_iiifSaver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/iiifSaver */ \"./src/utils/iiifSaver.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _actions_canvas__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../actions/canvas */ \"./src/actions/canvas.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _utils_iiifSerializer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/iiifSerializer */ \"./src/utils/iiifSerializer.js\");\n/* harmony import */ var _utils_fileDownload__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/fileDownload */ \"./src/utils/fileDownload.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _range_saga__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./range-saga */ \"./src/sagas/range-saga.js\");\n/* harmony import */ var _constants_markers__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../constants/markers */ \"./src/constants/markers.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../actions/markers */ \"./src/actions/markers.js\");\n\n\n\nvar _marked =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(importDocument),\n _marked2 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(showConfirmation),\n _marked3 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(resetDocument),\n _marked4 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(exportDocument),\n _marked5 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(saveProjectMetadata),\n _marked6 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(selectMarker),\n _marked7 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(updateMarkerTime),\n _marked8 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(updateSettings),\n _marked9 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomSideEffects),\n _marked10 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(timeWithinSelection),\n _marked11 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomToSelection),\n _marked12 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomTowards),\n _marked13 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomInOut),\n _marked14 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(saveProject),\n _marked15 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(undoAll),\n _marked16 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(root);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar getDuration = function getDuration(state) {\n return state.viewState.runTime;\n};\n\nvar getCurrentTime = function getCurrentTime(state) {\n return state.viewState.currentTime;\n};\n\nfunction importDocument(_ref) {\n var manifest, source, _ref2, viewState, loadedState;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function importDocument$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n manifest = _ref.manifest, source = _ref.source;\n _context.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])();\n\n case 3:\n _ref2 = _context.sent;\n viewState = _ref2.viewState;\n\n if (!(viewState.source === source)) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 7:\n _context.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__[\"actions\"].clear());\n\n case 9:\n _context.prev = 9;\n loadedState = Object(_utils_iiifLoader__WEBPACK_IMPORTED_MODULE_4__[\"loadProjectState\"])(manifest);\n _context.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_canvas__WEBPACK_IMPORTED_MODULE_9__[\"unloadAudio\"])());\n\n case 13:\n _context.next = 15;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"loadProject\"])(loadedState.project));\n\n case 15:\n _context.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"loadViewState\"])(loadedState.viewState));\n\n case 17:\n _context.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_canvas__WEBPACK_IMPORTED_MODULE_9__[\"loadCanvas\"])(loadedState.canvas));\n\n case 19:\n _context.next = 21;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_10__[\"importRanges\"])(loadedState.range));\n\n case 21:\n _context.next = 23;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"clearMarkers\"])());\n\n case 23:\n _context.next = 25;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"importMarkers\"])(Object(_utils_iiifLoader__WEBPACK_IMPORTED_MODULE_4__[\"parseMarkers\"])(manifest)));\n\n case 25:\n _context.next = 32;\n break;\n\n case 27:\n _context.prev = 27;\n _context.t0 = _context[\"catch\"](9);\n console.error(_context.t0);\n _context.next = 32;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"importError\"])(_context.t0));\n\n case 32:\n case \"end\":\n return _context.stop();\n }\n }\n }, _marked, null, [[9, 27]]);\n}\n\nfunction showConfirmation(message) {\n var doCancel,\n _ref3,\n yes,\n _args2 = arguments;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function showConfirmation$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n doCancel = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : true;\n _context2.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"openVerifyDialog\"])(message, doCancel));\n\n case 3:\n _context2.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"race\"])({\n yes: Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"CONFIRM_YES\"]),\n no: Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"CONFIRM_NO\"])\n });\n\n case 5:\n _ref3 = _context2.sent;\n yes = _ref3.yes;\n _context2.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"closeVerifyDialog\"])());\n\n case 9:\n return _context2.abrupt(\"return\", !!yes);\n\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _marked2);\n}\n\nfunction resetDocument() {\n var confirmed, rangeIds, duration;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function resetDocument$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(showConfirmation, 'Are you sure you want to delete all sections?');\n\n case 2:\n confirmed = _context3.sent;\n\n if (!confirmed) {\n _context3.next = 14;\n break;\n }\n\n _context3.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return Object.keys(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangeList\"])(s));\n });\n\n case 6:\n rangeIds = _context3.sent;\n _context3.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__[\"actions\"].clear());\n\n case 9:\n _context3.next = 11;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 11:\n duration = _context3.sent;\n _context3.next = 14;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_10__[\"rangeMutations\"])([].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(rangeIds.map(function (range) {\n return {\n type: 'DELETE_RANGE',\n payload: {\n id: range\n }\n };\n })), [Object(_actions_range__WEBPACK_IMPORTED_MODULE_10__[\"createRange\"])({\n startTime: 0,\n endTime: duration\n })])));\n\n case 14:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _marked3);\n}\n\nfunction exportDocument() {\n var state, label, outputJSON;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function exportDocument$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])();\n\n case 2:\n state = _context4.sent;\n _context4.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return \"\".concat(s.project[_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"PROJECT\"].TITLE].replace(/[ ,.'\"]/g, '_') || 'manifest', \".json\");\n });\n\n case 5:\n label = _context4.sent;\n outputJSON = Object(_utils_iiifSaver__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state);\n Object(_utils_fileDownload__WEBPACK_IMPORTED_MODULE_14__[\"immediateDownload\"])(label, Object(_utils_iiifSerializer__WEBPACK_IMPORTED_MODULE_13__[\"serialize\"])(outputJSON));\n\n case 8:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _marked4);\n}\n\nfunction saveProjectMetadata(_ref4) {\n var metadata, _ref5, title, description, manifestLabel, manifestSummary;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function saveProjectMetadata$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n metadata = _ref4.metadata;\n _context5.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.project;\n });\n\n case 3:\n _ref5 = _context5.sent;\n title = _ref5.title;\n description = _ref5.description;\n manifestLabel = metadata.manifestLabel, manifestSummary = metadata.manifestSummary;\n\n if (!(title !== manifestLabel)) {\n _context5.next = 10;\n break;\n }\n\n _context5.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"setTitle\"])(manifestLabel));\n\n case 10:\n if (!(description !== manifestSummary)) {\n _context5.next = 13;\n break;\n }\n\n _context5.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"setDescription\"])(manifestSummary));\n\n case 13:\n _context5.next = 15;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"cancelProjectMetadataEdits\"])());\n\n case 15:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _marked5);\n}\n\nfunction selectMarker(_ref6) {\n var id, marker, startPlaying;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function selectMarker$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n id = _ref6.payload.id;\n _context6.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.markers.list[id];\n });\n\n case 3:\n marker = _context6.sent;\n _context6.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.project[_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"PROJECT\"].START_PLAYING_WHEN_BUBBLES_CLICKED];\n });\n\n case 6:\n startPlaying = _context6.sent;\n _context6.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"setCurrentTime\"])(marker.time));\n\n case 9:\n if (!startPlaying) {\n _context6.next = 12;\n break;\n }\n\n _context6.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"play\"])());\n\n case 12:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _marked6);\n}\n\nfunction updateMarkerTime(_ref7) {\n var _ref7$payload, id, time;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function updateMarkerTime$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _ref7$payload = _ref7.payload, id = _ref7$payload.id, time = _ref7$payload.time;\n\n if (!time) {\n _context7.next = 4;\n break;\n }\n\n _context7.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"setCurrentTime\"])(time));\n\n case 4:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _marked7);\n}\n\nfunction updateSettings(_ref8) {\n var payload;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function updateSettings$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n payload = _ref8.payload;\n\n if (!payload.showMarkers) {\n _context8.next = 6;\n break;\n }\n\n _context8.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"showMarkers\"])());\n\n case 4:\n _context8.next = 8;\n break;\n\n case 6:\n _context8.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"hideMarkers\"])());\n\n case 8:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _marked8);\n}\n\nfunction zoomSideEffects() {\n var zoomA, duration, _ref9, currentTime, viewportWidth, zoom, x, sliderWidth, percentThrough, maxMiddle, pixelThrough, from, to, isVisible, shouldZoomToRange, targetPan;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomSideEffects$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.viewState.zoom;\n });\n\n case 2:\n zoomA = _context9.sent;\n _context9.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 5:\n duration = _context9.sent;\n\n if (!(zoomA === 1)) {\n _context9.next = 8;\n break;\n }\n\n return _context9.abrupt(\"return\");\n\n case 8:\n if (false) {}\n\n _context9.next = 11;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"SET_CURRENT_TIME\"]);\n\n case 11:\n _ref9 = _context9.sent;\n currentTime = _ref9.payload.currentTime;\n _context9.next = 15;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 15:\n viewportWidth = _context9.sent;\n _context9.next = 18;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.viewState.zoom;\n });\n\n case 18:\n zoom = _context9.sent;\n _context9.next = 21;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.viewState.x;\n });\n\n case 21:\n x = _context9.sent;\n\n if (!(zoom === 1)) {\n _context9.next = 24;\n break;\n }\n\n return _context9.abrupt(\"return\");\n\n case 24:\n sliderWidth = viewportWidth * zoom;\n percentThrough = currentTime / duration;\n maxMiddle = sliderWidth - viewportWidth;\n pixelThrough = percentThrough * sliderWidth;\n from = Math.floor(x) - 20;\n to = Math.ceil(x + viewportWidth) + 20;\n isVisible = pixelThrough >= from && pixelThrough <= to; // If its not visible, pan to the middle.\n\n if (!(isVisible === false)) {\n _context9.next = 51;\n break;\n }\n\n _context9.next = 34;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(timeWithinSelection, currentTime);\n\n case 34:\n shouldZoomToRange = _context9.sent;\n\n if (!shouldZoomToRange) {\n _context9.next = 39;\n break;\n }\n\n _context9.next = 38;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(zoomToSelection);\n\n case 38:\n return _context9.abrupt(\"return\");\n\n case 39:\n targetPan = pixelThrough - viewportWidth / 2;\n\n if (!(targetPan <= 0)) {\n _context9.next = 44;\n break;\n }\n\n _context9.next = 43;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(0));\n\n case 43:\n return _context9.abrupt(\"return\");\n\n case 44:\n if (!(targetPan >= maxMiddle)) {\n _context9.next = 48;\n break;\n }\n\n _context9.next = 47;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(maxMiddle));\n\n case 47:\n return _context9.abrupt(\"return\");\n\n case 48:\n _context9.next = 50;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(targetPan));\n\n case 50:\n return _context9.abrupt(\"return\");\n\n case 51:\n _context9.next = 8;\n break;\n\n case 53:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _marked9);\n}\n\nvar getViewerWidth = function getViewerWidth(state) {\n return state.viewState.viewerWidth;\n};\n\nfunction timeWithinSelection(time) {\n var selectedRangeIds, selectedRanges, startTime, endTime;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function timeWithinSelection$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context10.sent;\n\n if (!(selectedRangeIds.length <= 1)) {\n _context10.next = 5;\n break;\n }\n\n return _context10.abrupt(\"return\", false);\n\n case 5:\n _context10.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context10.sent;\n startTime = Math.min.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.startTime;\n })));\n endTime = Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.endTime;\n })));\n return _context10.abrupt(\"return\", time >= startTime && time <= endTime);\n\n case 11:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _marked10);\n}\n\nfunction zoomToSelection(action) {\n var selectedRangeIds, selectedRanges, duration, viewerWidth, startTime, endTime, percentVisible, percentStart, targetZoom, targetPixelStart;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomToSelection$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context11.sent;\n\n if (!(selectedRangeIds.length <= 1 || action.payload.deselectOthers)) {\n _context11.next = 5;\n break;\n }\n\n return _context11.abrupt(\"return\", false);\n\n case 5:\n _context11.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context11.sent;\n _context11.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 10:\n duration = _context11.sent;\n _context11.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 13:\n viewerWidth = _context11.sent;\n startTime = Math.min.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.startTime;\n })));\n endTime = Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.endTime;\n })));\n percentVisible = (endTime - startTime) / duration;\n percentStart = startTime / duration;\n targetZoom = 1 / percentVisible;\n targetPixelStart = percentStart * (viewerWidth * targetZoom);\n _context11.next = 22;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"zoomTo\"])(targetZoom));\n\n case 22:\n _context11.next = 24;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(targetPixelStart));\n\n case 24:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _marked11);\n}\n\nfunction zoomTowards(targetZoom) {\n var selectedRangeIds, selectedRanges, zoomIncr, duration, viewerWidth, startTime, endTime, percentStart, percentVisible, maxZoom, zoom, targetPixelStart;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomTowards$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context12.sent;\n\n if (!(selectedRangeIds.length <= 1)) {\n _context12.next = 5;\n break;\n }\n\n return _context12.abrupt(\"return\", false);\n\n case 5:\n _context12.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context12.sent;\n _context12.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.project[_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"PROJECT\"].ZOOM_TO_SECTION_INCREMENTALLY];\n });\n\n case 10:\n zoomIncr = _context12.sent;\n _context12.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 13:\n duration = _context12.sent;\n _context12.next = 16;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 16:\n viewerWidth = _context12.sent;\n startTime = Math.min.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.startTime;\n })));\n endTime = Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.endTime;\n })));\n percentStart = startTime / duration;\n percentVisible = (endTime - startTime) / duration;\n maxZoom = 1 / percentVisible;\n zoom = zoomIncr ? targetZoom < maxZoom ? targetZoom : maxZoom : maxZoom;\n targetPixelStart = percentStart * (viewerWidth * zoom);\n _context12.next = 26;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"zoomTo\"])(maxZoom));\n\n case 26:\n _context12.next = 28;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(targetPixelStart));\n\n case 28:\n return _context12.abrupt(\"return\", true);\n\n case 29:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _marked12);\n}\n\nvar getZoom = function getZoom(state) {\n return state.viewState.zoom;\n};\n\nfunction zoomInOut(action) {\n var ZOOM_AMOUNT, zoom, duration, currentTime, ZOOM_ORIGIN, viewerWidth, targetViewerWidth, viewerOffsetLeft, didZoom;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomInOut$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n ZOOM_AMOUNT = action.type === _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"] ? 1.2 : 1 / 1.2;\n _context13.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getZoom);\n\n case 3:\n zoom = _context13.sent;\n _context13.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 6:\n duration = _context13.sent;\n _context13.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getCurrentTime);\n\n case 9:\n currentTime = _context13.sent;\n ZOOM_ORIGIN = currentTime / duration;\n _context13.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 13:\n viewerWidth = _context13.sent;\n targetViewerWidth = viewerWidth * zoom * ZOOM_AMOUNT;\n viewerOffsetLeft = (targetViewerWidth - viewerWidth) * ZOOM_ORIGIN;\n\n if (!(action.type === _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"])) {\n _context13.next = 22;\n break;\n }\n\n _context13.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(zoomTowards, zoom * ZOOM_AMOUNT);\n\n case 19:\n _context13.t0 = _context13.sent;\n _context13.next = 23;\n break;\n\n case 22:\n _context13.t0 = false;\n\n case 23:\n didZoom = _context13.t0;\n\n if (didZoom) {\n _context13.next = 29;\n break;\n }\n\n _context13.next = 27;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"zoomTo\"])(zoom * ZOOM_AMOUNT));\n\n case 27:\n _context13.next = 29;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(viewerOffsetLeft));\n\n case 29:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _marked13);\n}\n\nfunction saveResource(url, content) {\n return new Promise(function (resolve, reject) {\n var http = new XMLHttpRequest();\n http.open('POST', url);\n http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n\n http.onreadystatechange = function () {\n if (http.readyState === http.DONE) {\n if (200 <= http.status && http.status <= 299) {\n // reload parent widow to location of newly created timeline\n if (document.referrer !== http.getResponseHeader('location')) {\n reject({\n redirect_location: http.getResponseHeader('location')\n });\n return;\n }\n\n resolve();\n } else {\n reject(new Error('Save Failed: ' + http.status + ', ' + http.statusText));\n }\n }\n };\n\n http.send(JSON.stringify(content));\n });\n}\n\nfunction saveProject() {\n var state, callback, resource, yes, outputJSON;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function saveProject$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n _context14.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])();\n\n case 2:\n state = _context14.sent;\n _context14.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return s.viewState.callback;\n });\n\n case 5:\n callback = _context14.sent;\n _context14.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return s.viewState.resource;\n });\n\n case 8:\n resource = _context14.sent;\n\n if (!(resource !== callback)) {\n _context14.next = 15;\n break;\n }\n\n _context14.next = 12;\n return showConfirmation('This timeline isn’t yours. Saving will create a personal copy of this timeline that includes any changes you’ve made. Proceed?');\n\n case 12:\n yes = _context14.sent;\n\n if (yes) {\n _context14.next = 15;\n break;\n }\n\n return _context14.abrupt(\"return\");\n\n case 15:\n outputJSON = Object(_utils_iiifSaver__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state);\n _context14.prev = 16;\n _context14.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(saveResource, callback, outputJSON);\n\n case 19:\n _context14.next = 21;\n return showConfirmation('Saved Successfully.', false);\n\n case 21:\n _context14.next = 30;\n break;\n\n case 23:\n _context14.prev = 23;\n _context14.t0 = _context14[\"catch\"](16);\n\n if (!_context14.t0.hasOwnProperty('redirect_location')) {\n _context14.next = 28;\n break;\n }\n\n top.window.location = _context14.t0.redirect_location;\n return _context14.abrupt(\"return\");\n\n case 28:\n _context14.next = 30;\n return showConfirmation(_context14.t0.message, false);\n\n case 30:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _marked14, null, [[16, 23]]);\n}\n\nfunction undoAll() {\n var undoStack, yes, i;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function undoAll$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return s.undoHistory.undoQueue;\n });\n\n case 2:\n undoStack = _context15.sent;\n _context15.next = 5;\n return showConfirmation('Are you sure you want to revert all your changes?');\n\n case 5:\n yes = _context15.sent;\n\n if (yes) {\n _context15.next = 8;\n break;\n }\n\n return _context15.abrupt(\"return\");\n\n case 8:\n i = 0;\n\n case 9:\n if (!(i < undoStack.length)) {\n _context15.next = 15;\n break;\n }\n\n _context15.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__[\"actions\"].undo());\n\n case 12:\n i++;\n _context15.next = 9;\n break;\n\n case 15:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _marked15);\n}\n\nfunction root() {\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function root$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"all\"])([Object(_range_saga__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"IMPORT_DOCUMENT\"], importDocument), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"RESET_DOCUMENT\"], resetDocument), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"EXPORT_DOCUMENT\"], exportDocument), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"SAVE_PROJECT_METADATA\"], saveProjectMetadata), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_markers__WEBPACK_IMPORTED_MODULE_17__[\"SELECT_MARKER\"], selectMarker), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_markers__WEBPACK_IMPORTED_MODULE_17__[\"UPDATE_MARKER\"], updateMarkerTime), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"UPDATE_SETTINGS\"], updateSettings), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeLatest\"])([_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_OUT\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"PAN_TO_POSITION\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"PLAY_AUDIO\"]], zoomSideEffects), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])([_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_OUT\"]], zoomInOut), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"SAVE_PROJECT\"], saveProject), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"UNDO_ALL\"], undoAll)]);\n\n case 2:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _marked16);\n}\n\n//# sourceURL=webpack:///./src/sagas/index.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showConfirmation\", function() { return showConfirmation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return root; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-saga/effects */ \"./node_modules/redux-saga/es/effects.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _utils_iiifLoader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/iiifLoader */ \"./src/utils/iiifLoader.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! redux-undo-redo */ \"./node_modules/redux-undo-redo/lib/index.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _utils_iiifSaver__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/iiifSaver */ \"./src/utils/iiifSaver.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _actions_canvas__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../actions/canvas */ \"./src/actions/canvas.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _utils_iiifSerializer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/iiifSerializer */ \"./src/utils/iiifSerializer.js\");\n/* harmony import */ var _utils_fileDownload__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/fileDownload */ \"./src/utils/fileDownload.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _range_saga__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./range-saga */ \"./src/sagas/range-saga.js\");\n/* harmony import */ var _constants_markers__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../constants/markers */ \"./src/constants/markers.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../actions/markers */ \"./src/actions/markers.js\");\n\n\n\nvar _marked =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(setIsSavedStatus),\n _marked2 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(importDocument),\n _marked3 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(showConfirmation),\n _marked4 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(resetDocument),\n _marked5 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(exportDocument),\n _marked6 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(saveProjectMetadata),\n _marked7 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(selectMarker),\n _marked8 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(updateMarkerTime),\n _marked9 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(updateSettings),\n _marked10 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomSideEffects),\n _marked11 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(timeWithinSelection),\n _marked12 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomToSelection),\n _marked13 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomTowards),\n _marked14 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(zoomInOut),\n _marked15 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(saveProject),\n _marked16 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(undoAll),\n _marked17 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.mark(root);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar getDuration = function getDuration(state) {\n return state.viewState.runTime;\n};\n\nvar getCurrentTime = function getCurrentTime(state) {\n return state.viewState.currentTime;\n};\n\nfunction setIsSavedStatus() {\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function setIsSavedStatus$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"setProjectChanged\"])(false));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _marked);\n}\n\nfunction importDocument(_ref) {\n var manifest, source, _ref2, viewState, loadedState;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function importDocument$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n manifest = _ref.manifest, source = _ref.source;\n _context2.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])();\n\n case 3:\n _ref2 = _context2.sent;\n viewState = _ref2.viewState;\n\n if (!(viewState.source === source)) {\n _context2.next = 7;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 7:\n _context2.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__[\"actions\"].clear());\n\n case 9:\n _context2.prev = 9;\n loadedState = Object(_utils_iiifLoader__WEBPACK_IMPORTED_MODULE_4__[\"loadProjectState\"])(manifest);\n _context2.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_canvas__WEBPACK_IMPORTED_MODULE_9__[\"unloadMedia\"])());\n\n case 13:\n _context2.next = 15;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"loadProject\"])(loadedState.project));\n\n case 15:\n _context2.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"loadViewState\"])(loadedState.viewState));\n\n case 17:\n _context2.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_canvas__WEBPACK_IMPORTED_MODULE_9__[\"loadCanvas\"])(loadedState.canvas));\n\n case 19:\n _context2.next = 21;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_canvas__WEBPACK_IMPORTED_MODULE_9__[\"loadPoster\"])(loadedState.poster));\n\n case 21:\n _context2.next = 23;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_10__[\"importRanges\"])(loadedState.range));\n\n case 23:\n _context2.next = 25;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"clearMarkers\"])());\n\n case 25:\n _context2.next = 27;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"importMarkers\"])(Object(_utils_iiifLoader__WEBPACK_IMPORTED_MODULE_4__[\"parseMarkers\"])(manifest)));\n\n case 27:\n _context2.next = 34;\n break;\n\n case 29:\n _context2.prev = 29;\n _context2.t0 = _context2[\"catch\"](9);\n console.error(_context2.t0);\n _context2.next = 34;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"importError\"])(_context2.t0));\n\n case 34:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _marked2, null, [[9, 29]]);\n}\n\nfunction showConfirmation(message) {\n var doCancel,\n _ref3,\n yes,\n _args3 = arguments;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function showConfirmation$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n doCancel = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : true;\n _context3.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"openVerifyDialog\"])(message, doCancel));\n\n case 3:\n _context3.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"race\"])({\n yes: Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"CONFIRM_YES\"]),\n no: Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"CONFIRM_NO\"])\n });\n\n case 5:\n _ref3 = _context3.sent;\n yes = _ref3.yes;\n _context3.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"closeVerifyDialog\"])());\n\n case 9:\n return _context3.abrupt(\"return\", !!yes);\n\n case 10:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _marked3);\n}\n\nfunction resetDocument() {\n var confirmed, rangeIds, duration;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function resetDocument$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(showConfirmation, 'Are you sure you want to delete all sections?');\n\n case 2:\n confirmed = _context4.sent;\n\n if (!confirmed) {\n _context4.next = 14;\n break;\n }\n\n _context4.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return Object.keys(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangeList\"])(s));\n });\n\n case 6:\n rangeIds = _context4.sent;\n _context4.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__[\"actions\"].clear());\n\n case 9:\n _context4.next = 11;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 11:\n duration = _context4.sent;\n _context4.next = 14;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_10__[\"rangeMutations\"])([].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(rangeIds.map(function (range) {\n return {\n type: 'DELETE_RANGE',\n payload: {\n id: range\n }\n };\n })), [Object(_actions_range__WEBPACK_IMPORTED_MODULE_10__[\"createRange\"])({\n startTime: 0,\n endTime: duration\n })])));\n\n case 14:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _marked4);\n}\n\nfunction exportDocument() {\n var state, label, outputJSON;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function exportDocument$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])();\n\n case 2:\n state = _context5.sent;\n _context5.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return \"\".concat(s.project[_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"PROJECT\"].TITLE].replace(/[ ,.'\"]/g, '_') || 'manifest', \".json\");\n });\n\n case 5:\n label = _context5.sent;\n outputJSON = Object(_utils_iiifSaver__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state);\n Object(_utils_fileDownload__WEBPACK_IMPORTED_MODULE_14__[\"immediateDownload\"])(label, Object(_utils_iiifSerializer__WEBPACK_IMPORTED_MODULE_13__[\"serialize\"])(outputJSON));\n\n case 8:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _marked5);\n}\n\nfunction saveProjectMetadata(_ref4) {\n var metadata, _ref5, title, description, manifestLabel, manifestSummary;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function saveProjectMetadata$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n metadata = _ref4.metadata;\n _context6.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.project;\n });\n\n case 3:\n _ref5 = _context6.sent;\n title = _ref5.title;\n description = _ref5.description;\n manifestLabel = metadata.manifestLabel, manifestSummary = metadata.manifestSummary;\n\n if (!(title !== manifestLabel)) {\n _context6.next = 10;\n break;\n }\n\n _context6.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"setTitle\"])(manifestLabel));\n\n case 10:\n if (!(description !== manifestSummary)) {\n _context6.next = 13;\n break;\n }\n\n _context6.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"setDescription\"])(manifestSummary));\n\n case 13:\n _context6.next = 15;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"cancelProjectMetadataEdits\"])());\n\n case 15:\n _context6.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(setIsSavedStatus);\n\n case 17:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _marked6);\n}\n\nfunction selectMarker(_ref6) {\n var id, marker, startPlaying;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function selectMarker$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n id = _ref6.payload.id;\n _context7.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.markers.list[id];\n });\n\n case 3:\n marker = _context7.sent;\n _context7.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.project[_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"PROJECT\"].START_PLAYING_WHEN_BUBBLES_CLICKED];\n });\n\n case 6:\n startPlaying = _context7.sent;\n _context7.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"setCurrentTime\"])(marker.time));\n\n case 9:\n if (!startPlaying) {\n _context7.next = 12;\n break;\n }\n\n _context7.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"play\"])());\n\n case 12:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _marked7);\n}\n\nfunction updateMarkerTime(_ref7) {\n var _ref7$payload, id, time;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function updateMarkerTime$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _ref7$payload = _ref7.payload, id = _ref7$payload.id, time = _ref7$payload.time;\n\n if (!time) {\n _context8.next = 4;\n break;\n }\n\n _context8.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"setCurrentTime\"])(time));\n\n case 4:\n _context8.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(setIsSavedStatus);\n\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _marked8);\n}\n\nfunction updateSettings(_ref8) {\n var payload;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function updateSettings$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n payload = _ref8.payload;\n\n if (!payload.showMarkers) {\n _context9.next = 6;\n break;\n }\n\n _context9.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"showMarkers\"])());\n\n case 4:\n _context9.next = 8;\n break;\n\n case 6:\n _context9.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_markers__WEBPACK_IMPORTED_MODULE_18__[\"hideMarkers\"])());\n\n case 8:\n _context9.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(setIsSavedStatus);\n\n case 10:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _marked9);\n}\n\nfunction zoomSideEffects() {\n var zoomA, duration, _ref9, currentTime, viewportWidth, zoom, x, sliderWidth, percentThrough, maxMiddle, pixelThrough, from, to, isVisible, shouldZoomToRange, targetPan;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomSideEffects$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.viewState.zoom;\n });\n\n case 2:\n zoomA = _context10.sent;\n _context10.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 5:\n duration = _context10.sent;\n\n if (!(zoomA === 1)) {\n _context10.next = 8;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 8:\n if (false) {}\n\n _context10.next = 11;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"SET_CURRENT_TIME\"]);\n\n case 11:\n _ref9 = _context10.sent;\n currentTime = _ref9.payload.currentTime;\n _context10.next = 15;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 15:\n viewportWidth = _context10.sent;\n _context10.next = 18;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.viewState.zoom;\n });\n\n case 18:\n zoom = _context10.sent;\n _context10.next = 21;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.viewState.x;\n });\n\n case 21:\n x = _context10.sent;\n\n if (!(zoom === 1)) {\n _context10.next = 24;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 24:\n sliderWidth = viewportWidth * zoom;\n percentThrough = currentTime / duration;\n maxMiddle = sliderWidth - viewportWidth;\n pixelThrough = percentThrough * sliderWidth;\n from = Math.floor(x) - 20;\n to = Math.ceil(x + viewportWidth) + 20;\n isVisible = pixelThrough >= from && pixelThrough <= to; // If its not visible, pan to the middle.\n\n if (!(isVisible === false)) {\n _context10.next = 51;\n break;\n }\n\n _context10.next = 34;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(timeWithinSelection, currentTime);\n\n case 34:\n shouldZoomToRange = _context10.sent;\n\n if (!shouldZoomToRange) {\n _context10.next = 39;\n break;\n }\n\n _context10.next = 38;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(zoomToSelection);\n\n case 38:\n return _context10.abrupt(\"return\");\n\n case 39:\n targetPan = pixelThrough - viewportWidth / 2;\n\n if (!(targetPan <= 0)) {\n _context10.next = 44;\n break;\n }\n\n _context10.next = 43;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(0));\n\n case 43:\n return _context10.abrupt(\"return\");\n\n case 44:\n if (!(targetPan >= maxMiddle)) {\n _context10.next = 48;\n break;\n }\n\n _context10.next = 47;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(maxMiddle));\n\n case 47:\n return _context10.abrupt(\"return\");\n\n case 48:\n _context10.next = 50;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(targetPan));\n\n case 50:\n return _context10.abrupt(\"return\");\n\n case 51:\n _context10.next = 8;\n break;\n\n case 53:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _marked10);\n}\n\nvar getViewerWidth = function getViewerWidth(state) {\n return state.viewState.viewerWidth;\n};\n\nfunction timeWithinSelection(time) {\n var selectedRangeIds, selectedRanges, startTime, endTime;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function timeWithinSelection$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context11.sent;\n\n if (!(selectedRangeIds.length <= 1)) {\n _context11.next = 5;\n break;\n }\n\n return _context11.abrupt(\"return\", false);\n\n case 5:\n _context11.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context11.sent;\n startTime = Math.min.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.startTime;\n })));\n endTime = Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.endTime;\n })));\n return _context11.abrupt(\"return\", time >= startTime && time <= endTime);\n\n case 11:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _marked11);\n}\n\nfunction zoomToSelection(action) {\n var selectedRangeIds, selectedRanges, duration, viewerWidth, startTime, endTime, percentVisible, percentStart, targetZoom, targetPixelStart;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomToSelection$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context12.sent;\n\n if (!(selectedRangeIds.length <= 1 || action.payload.deselectOthers)) {\n _context12.next = 5;\n break;\n }\n\n return _context12.abrupt(\"return\", false);\n\n case 5:\n _context12.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context12.sent;\n _context12.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 10:\n duration = _context12.sent;\n _context12.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 13:\n viewerWidth = _context12.sent;\n startTime = Math.min.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.startTime;\n })));\n endTime = Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.endTime;\n })));\n percentVisible = (endTime - startTime) / duration;\n percentStart = startTime / duration;\n targetZoom = 1 / percentVisible;\n targetPixelStart = percentStart * (viewerWidth * targetZoom);\n _context12.next = 22;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"zoomTo\"])(targetZoom));\n\n case 22:\n _context12.next = 24;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(targetPixelStart));\n\n case 24:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _marked12);\n}\n\nfunction zoomTowards(targetZoom) {\n var selectedRangeIds, selectedRanges, zoomIncr, duration, viewerWidth, startTime, endTime, percentStart, percentVisible, maxZoom, zoom, targetPixelStart;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomTowards$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n _context13.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context13.sent;\n\n if (!(selectedRangeIds.length <= 1)) {\n _context13.next = 5;\n break;\n }\n\n return _context13.abrupt(\"return\", false);\n\n case 5:\n _context13.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_15__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context13.sent;\n _context13.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (state) {\n return state.project[_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"PROJECT\"].ZOOM_TO_SECTION_INCREMENTALLY];\n });\n\n case 10:\n zoomIncr = _context13.sent;\n _context13.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 13:\n duration = _context13.sent;\n _context13.next = 16;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 16:\n viewerWidth = _context13.sent;\n startTime = Math.min.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.startTime;\n })));\n endTime = Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(selectedRanges.map(function (range) {\n return range.endTime;\n })));\n percentStart = startTime / duration;\n percentVisible = (endTime - startTime) / duration;\n maxZoom = 1 / percentVisible;\n zoom = zoomIncr ? targetZoom < maxZoom ? targetZoom : maxZoom : maxZoom;\n targetPixelStart = percentStart * (viewerWidth * zoom);\n _context13.next = 26;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"zoomTo\"])(maxZoom));\n\n case 26:\n _context13.next = 28;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(targetPixelStart));\n\n case 28:\n return _context13.abrupt(\"return\", true);\n\n case 29:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _marked13);\n}\n\nvar getZoom = function getZoom(state) {\n return state.viewState.zoom;\n};\n\nfunction zoomInOut(action) {\n var ZOOM_AMOUNT, zoom, duration, currentTime, ZOOM_ORIGIN, viewerWidth, targetViewerWidth, viewerOffsetLeft, didZoom;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function zoomInOut$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n ZOOM_AMOUNT = action.type === _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"] ? 1.2 : 1 / 1.2;\n _context14.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getZoom);\n\n case 3:\n zoom = _context14.sent;\n _context14.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getDuration);\n\n case 6:\n duration = _context14.sent;\n _context14.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getCurrentTime);\n\n case 9:\n currentTime = _context14.sent;\n ZOOM_ORIGIN = currentTime / duration;\n _context14.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(getViewerWidth);\n\n case 13:\n viewerWidth = _context14.sent;\n targetViewerWidth = viewerWidth * zoom * ZOOM_AMOUNT;\n viewerOffsetLeft = (targetViewerWidth - viewerWidth) * ZOOM_ORIGIN;\n\n if (!(action.type === _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"])) {\n _context14.next = 22;\n break;\n }\n\n _context14.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(zoomTowards, zoom * ZOOM_AMOUNT);\n\n case 19:\n _context14.t0 = _context14.sent;\n _context14.next = 23;\n break;\n\n case 22:\n _context14.t0 = false;\n\n case 23:\n didZoom = _context14.t0;\n\n if (didZoom) {\n _context14.next = 29;\n break;\n }\n\n _context14.next = 27;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"zoomTo\"])(zoom * ZOOM_AMOUNT));\n\n case 27:\n _context14.next = 29;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_11__[\"panToPosition\"])(viewerOffsetLeft));\n\n case 29:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _marked14);\n}\n\nfunction saveResource(url, content) {\n return new Promise(function (resolve, reject) {\n var http = new XMLHttpRequest();\n http.open('POST', url);\n http.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');\n\n http.onreadystatechange = function () {\n if (http.readyState === http.DONE) {\n if (200 <= http.status && http.status <= 299) {\n // reload parent widow to location of newly created timeline\n if (document.referrer !== http.getResponseHeader('location')) {\n reject({\n redirect_location: http.getResponseHeader('location')\n });\n return;\n }\n\n resolve();\n } else {\n reject(new Error('Save Failed: ' + http.status + ', ' + http.statusText));\n }\n }\n };\n\n http.send(JSON.stringify(content));\n });\n}\n\nfunction saveProject() {\n var state, callback, resource, yes, outputJSON;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function saveProject$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])();\n\n case 2:\n state = _context15.sent;\n _context15.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return s.viewState.callback;\n });\n\n case 5:\n callback = _context15.sent;\n _context15.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return s.viewState.resource;\n });\n\n case 8:\n resource = _context15.sent;\n\n if (!(resource !== callback)) {\n _context15.next = 15;\n break;\n }\n\n _context15.next = 12;\n return showConfirmation('This timeline isn’t yours. Saving will create a personal copy of this timeline that includes any changes you’ve made. Proceed?');\n\n case 12:\n yes = _context15.sent;\n\n if (yes) {\n _context15.next = 15;\n break;\n }\n\n return _context15.abrupt(\"return\");\n\n case 15:\n outputJSON = Object(_utils_iiifSaver__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(state);\n _context15.prev = 16;\n _context15.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(saveResource, callback, outputJSON);\n\n case 19:\n _context15.next = 21;\n return showConfirmation('Saved Successfully.', false);\n\n case 21:\n _context15.next = 30;\n break;\n\n case 23:\n _context15.prev = 23;\n _context15.t0 = _context15[\"catch\"](16);\n\n if (!_context15.t0.hasOwnProperty('redirect_location')) {\n _context15.next = 28;\n break;\n }\n\n top.window.location = _context15.t0.redirect_location;\n return _context15.abrupt(\"return\");\n\n case 28:\n _context15.next = 30;\n return showConfirmation(_context15.t0.message, false);\n\n case 30:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _marked15, null, [[16, 23]]);\n}\n\nfunction undoAll() {\n var undoStack, yes, i;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function undoAll$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"select\"])(function (s) {\n return s.undoHistory.undoQueue;\n });\n\n case 2:\n undoStack = _context16.sent;\n _context16.next = 5;\n return showConfirmation('Are you sure you want to revert all your changes?');\n\n case 5:\n yes = _context16.sent;\n\n if (yes) {\n _context16.next = 8;\n break;\n }\n\n return _context16.abrupt(\"return\");\n\n case 8:\n i = 0;\n\n case 9:\n if (!(i < undoStack.length)) {\n _context16.next = 15;\n break;\n }\n\n _context16.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"put\"])(redux_undo_redo__WEBPACK_IMPORTED_MODULE_5__[\"actions\"].undo());\n\n case 12:\n i++;\n _context16.next = 9;\n break;\n\n case 15:\n _context16.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"call\"])(setIsSavedStatus);\n\n case 17:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _marked16);\n}\n\nfunction root() {\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_1___default.a.wrap(function root$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"all\"])([Object(_range_saga__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"IMPORT_DOCUMENT\"], importDocument), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"RESET_DOCUMENT\"], resetDocument), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"EXPORT_DOCUMENT\"], exportDocument), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"SAVE_PROJECT_METADATA\"], saveProjectMetadata), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_markers__WEBPACK_IMPORTED_MODULE_17__[\"SELECT_MARKER\"], selectMarker), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_markers__WEBPACK_IMPORTED_MODULE_17__[\"UPDATE_MARKER\"], updateMarkerTime), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"UPDATE_SETTINGS\"], updateSettings), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeLatest\"])([_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_OUT\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"PAN_TO_POSITION\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"PLAY_MEDIA\"]], zoomSideEffects), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])([_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_IN\"], _constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"ZOOM_OUT\"]], zoomInOut), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_6__[\"SAVE_PROJECT\"], saveProject), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_2__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_12__[\"UNDO_ALL\"], undoAll)]);\n\n case 2:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _marked17);\n}\n\n//# sourceURL=webpack:///./src/sagas/index.js?");
/***/ }),
@@ -11155,7 +11179,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STICKY_BUBBLE_MS\", function() { return STICKY_BUBBLE_MS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStickyPointDelta\", function() { return getStickyPointDelta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"currentTimeSaga\", function() { return currentTimeSaga; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRangeAction\", function() { return createRangeAction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rangeSaga; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! redux-saga/effects */ \"./node_modules/redux-saga/es/effects.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _utils_invariant__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/invariant */ \"./src/utils/invariant.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./index */ \"./src/sagas/index.js\");\n\n\n\n\n\nvar _marked =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(previousBubble),\n _marked2 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(nextBubble),\n _marked3 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(calculateRedundantSizes),\n _marked4 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(getDirectParentRange),\n _marked5 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(getSiblingRanges),\n _marked6 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(getMovePointMutations),\n _marked7 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(saveRangeSaga),\n _marked8 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(movePointSaga),\n _marked9 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(playWhenBubbleIsClicked),\n _marked10 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(currentTimeSaga),\n _marked11 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deselectOtherRanges),\n _marked12 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deselectAllRangesSaga),\n _marked13 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(selectRangeSaga),\n _marked14 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deselectRangeSaga),\n _marked15 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(createRangeAction),\n _marked16 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(resolveParentDepths),\n _marked17 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(groupRangeSaga),\n _marked18 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(splitRangeSaga),\n _marked19 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deleteRangeRequest),\n _marked20 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(singleDelete),\n _marked21 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(multiDelete),\n _marked22 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(clearCustomColorsSaga),\n _marked23 =\n/*#__PURE__*/\n_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(rangeSaga);\n\n\n\n\n\n\n\n\n\n\nvar STICKY_BUBBLE_MS = 500;\n\nfunction previousBubble() {\n var previousBubbleTime;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function previousBubble$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getPreviousBubbleStartTime\"]);\n\n case 2:\n previousBubbleTime = _context.sent;\n\n if (!Number.isFinite(previousBubbleTime)) {\n _context.next = 8;\n break;\n }\n\n _context.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(previousBubbleTime));\n\n case 6:\n _context.next = 10;\n break;\n\n case 8:\n _context.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(0));\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, _marked);\n}\n\nfunction nextBubble() {\n var nextBubbleTime;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function nextBubble$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getNextBubbleStartTime\"]);\n\n case 2:\n nextBubbleTime = _context2.sent;\n _context2.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(nextBubbleTime.time));\n\n case 5:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _marked2);\n}\n\nvar getCurrentTime = function getCurrentTime(state) {\n return state.viewState.currentTime;\n};\n/**\n * Can points merge\n *\n * Given a list of points and a start and end time this will\n * return true if the bubbles can be grouped.\n *\n * This is to avoid intersecting bubbles, which is not allowed.\n *\n * @param points\n * @param startTime\n * @param endTime\n * @returns {boolean}\n */\n\n\nfunction canMerge(points, _ref) {\n var startTime = _ref.startTime,\n endTime = _ref.endTime;\n return Object.values(points).filter(function (bubble) {\n return bubble.depth > 1;\n }).filter(function (bubble) {\n return bubble.startTime < startTime && startTime < bubble.endTime && bubble.endTime < endTime || startTime < bubble.startTime && bubble.startTime < endTime && endTime < bubble.endTime || bubble.startTime === startTime && bubble.endTime === endTime;\n }).length === 0;\n}\n/**\n * Get sticky point delta\n *\n * From a list of ranges and a single point in time this will return\n * the largest delta within `sticky` (default: 50ms) so that you can\n * use it to auto-correct inaccuracy of user pointers.\n *\n * @param ranges\n * @param x\n * @param sticky\n * @returns {T | *}\n */\n\n\nfunction getStickyPointDelta(ranges, x, sticky) {\n return ranges.reduce(function (stickyCandidates, range) {\n if (Math.abs(range.startTime - x) <= sticky) {\n stickyCandidates.push(range.startTime);\n }\n\n if (Math.abs(range.endTime - x) <= sticky) {\n stickyCandidates.push(range.endTime);\n }\n\n return stickyCandidates;\n }, []).filter(function (r) {\n return r > 0;\n }).sort(function (a, b) {\n return Math.abs(x - a) - Math.abs(x - b);\n }).pop() || x;\n}\n/**\n * Sort ranges by depth then time.\n *\n * Sort them first by depth, and then by endTime.\n *\n * This will give an order where parents always come before their\n * children AND they are still ordered by time.\n *\n * @param a\n * @param b\n * @returns {number}\n */\n\nfunction sortRangesByDepthThenTime(a, b) {\n // First by depth, if they are different from each other.\n if (b.depth !== a.depth) {\n return b.depth - a.depth;\n } // Then by end time.\n\n\n if (a.endTime < b.endTime) {\n return -1;\n }\n\n if (a.endTime > b.endTime) {\n return 1;\n } // This shouldn't happen, if they share an end time AND depth, its\n // not a valid bubble.\n\n\n return 0;\n}\n/**\n * Get direct children\n *\n * Given a list of all the children of a grouping bubble, this will\n * return only the DIRECT children.\n *\n * @param childrenRanges\n * @returns {*}\n */\n\n\nfunction getDirectChildren(childrenRanges) {\n return childrenRanges.sort(sortRangesByDepthThenTime).reduce(function (ac, n) {\n // Does it start first in range.\n var isMin = n.startTime < ac.min; // Is furthest reaching in range.\n\n var isMax = n.endTime > ac.max; // Record the min and max.\n\n if (isMin) {\n ac.min = n.startTime;\n }\n\n if (isMax) {\n ac.max = n.endTime;\n } // If we've just established a new min or max, push it on our list.\n\n\n if (isMin || isMax) {\n ac.list.push(n);\n } // Return the state.\n\n\n return ac;\n }, {\n min: Infinity,\n max: 0,\n list: []\n }).list;\n}\n/**\n * Calculate redundant sizes\n *\n * Asks the question, in the current state of the application, if I\n * removed X bubbles, which bubbles would have to be removed.\n *\n * @param toRemoveIds\n * @returns {IterableIterator<*>}\n */\n\n\nfunction calculateRedundantSizes(toRemoveIds) {\n var allRanges;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function calculateRedundantSizes$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.t0 = Object;\n _context3.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 3:\n _context3.t1 = _context3.sent;\n allRanges = _context3.t0.values.call(_context3.t0, _context3.t1);\n return _context3.abrupt(\"return\", allRanges.filter(function (range) {\n return toRemoveIds.indexOf(range.id) === -1;\n }).filter(filterOnlyGroupingRanges).sort(function (a, b) {\n return a.depth === b.depth ? 0 : a.depth < b.depth ? -1 : 1;\n }).reduce(function (acc, next) {\n // Filter to only include children inside the current range.\n var filteredChildren = allRanges.filter(function (range) {\n return (// Not already removed\n acc.indexOf(range.id) === -1 && // Is within the parent bubble.\n bubbleIsWithin(next, range)\n );\n }); // From the filtered children, filter out only the DIRECT children.\n\n var directChildren = getDirectChildren(filteredChildren); // If there is only one child, we need to remove it.\n\n if (directChildren.length === 1) {\n acc.push(next.id);\n }\n\n return acc;\n }, toRemoveIds));\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _marked3);\n}\n/**\n * Filter only grouping ranges\n *\n * This has been split out, it may be expanded later on.\n *\n * @param range\n * @returns {boolean}\n */\n\n\nfunction filterOnlyGroupingRanges(range) {\n return range.depth > 1;\n}\n/**\n * Bubble is withing\n *\n * Filter for two ranges, returns true if `childCandidate` is\n * inside the first range at any level.\n *\n * @param parent\n * @param childCandidate\n * @returns {boolean}\n */\n\n\nfunction bubbleIsWithin(parent, childCandidate) {\n return childCandidate.id !== parent.id && childCandidate.startTime >= parent.startTime && childCandidate.endTime <= parent.endTime;\n}\n/**\n * Fuzzy equal.\n *\n * Compares `a` and `b` and returns if they are within\n * STICK_BUBBLE_MS configuration value (default: 50)\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\n\nfunction fuzzyEqual(a, b) {\n return Math.abs(a - b) <= STICKY_BUBBLE_MS;\n}\n/**\n * Extract times from range list\n *\n * This will take a list of ranges and simply return the smallest start\n * time and the largest end time to get a range.\n *\n * @param ranges\n * @returns {{startTime: *, endTime: *}}\n */\n\n\nfunction extractTimesFromRangeList(ranges) {\n var startTime = ranges.reduce(function (cur, next) {\n return next.startTime <= cur ? next.startTime : cur;\n }, Infinity);\n var endTime = ranges.reduce(function (cur, next) {\n return next.endTime >= cur ? next.endTime : cur;\n }, 0);\n return {\n startTime: startTime,\n endTime: endTime\n };\n}\n\nfunction getDirectParentRange(range) {\n var parentBubbles;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function getDirectParentRange$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getParentBubbles(range));\n\n case 2:\n parentBubbles = _context4.sent;\n return _context4.abrupt(\"return\", parentBubbles.find(function (parentRange) {\n return parentRange.depth === range.depth + 1 && range.startTime >= parentRange.startTime && range.endTime <= parentRange.endTime;\n }));\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _marked4);\n}\n\nfunction getSiblingRanges(parentRange, childRange) {\n var rangesBetweenParent;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function getSiblingRanges$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(parentRange.startTime, parentRange.endTime));\n\n case 2:\n rangesBetweenParent = _context5.sent;\n return _context5.abrupt(\"return\", rangesBetweenParent.filter(function (range) {\n return range.id !== childRange.id && range.id !== parentRange.id;\n }));\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _marked5);\n}\n\nfunction getRangeToTheLeft(siblingRanges, childRange) {\n return siblingRanges.find(function (range) {\n return range.id !== childRange.id && range.depth === childRange.depth && range.endTime === childRange.startTime;\n });\n}\n\nfunction getRangeToTheRight(siblingRanges, childRange) {\n return siblingRanges.find(function (range) {\n return range.id !== childRange.id && range.depth === childRange.depth && range.startTime === childRange.endTime;\n });\n}\n\nfunction overlapBubbleRight(toCover, toGrow) {\n return toGrow.startTime === toCover.endTime ? Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n startTime: toCover.startTime\n }) : Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n endTime: toCover.startTime\n });\n}\n\nfunction overlapBubbleLeft(toCover, toGrow) {\n return toGrow.endTime === toCover.startTime ? Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n endTime: toCover.endTime\n }) : Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n startTime: toCover.endTime\n });\n}\n\nvar getParentBubbles = function getParentBubbles(child) {\n return function (state) {\n return Object.values(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"])(state)).filter(function (range) {\n return bubbleIsWithin(range, child);\n }).sort(function (range) {\n return -(range.startTime - range.endTime);\n });\n };\n};\n\nfunction canMoveBubbles(bubbleList, toRemove) {\n return bubbleList.filter(function (range) {\n return range.depth === toRemove.depth;\n }).length > 0;\n}\n\nfunction getMovePointMutations(fromTime, toTime) {\n var ranges, x, toRemoveIds, redundantSizes, toRemove, updateRangeTimes;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function getMovePointMutations$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesAtPoint\"])(fromTime, STICKY_BUBBLE_MS));\n\n case 2:\n ranges = _context6.sent;\n x = getStickyPointDelta(ranges, toTime, STICKY_BUBBLE_MS);\n toRemoveIds = ranges.filter(function (range) {\n if (fuzzyEqual(range.startTime, fromTime)) {\n return fuzzyEqual(range.endTime, x);\n }\n\n return fuzzyEqual(range.startTime, x);\n }).map(function (range) {\n return range.id;\n }); // This should be able to be split out.\n\n _context6.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(calculateRedundantSizes, toRemoveIds);\n\n case 7:\n redundantSizes = _context6.sent;\n toRemove = redundantSizes.map(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deleteRange\"]); // When updating range times, need to consider the STICKY_BUBBLE_MS of stickiness.\n\n updateRangeTimes = ranges.filter(function (range) {\n return redundantSizes.indexOf(range.id) === -1;\n }).map(function (range) {\n return fuzzyEqual(range.startTime, fromTime) ? Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(range.id, {\n startTime: x\n }) : Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(range.id, {\n endTime: x\n });\n }); // Finish the mutation.\n\n return _context6.abrupt(\"return\", [].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(updateRangeTimes), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(toRemove)));\n\n case 11:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _marked6);\n}\n/**\n * Get range by id\n *\n * Returns a selector for easily getting a single range by id\n * @param id\n * @returns {function(*): *}\n */\n\n\nfunction getRangeById(id) {\n return function (state) {\n return state.range.list[id];\n };\n}\n\nfunction saveRangeSaga(_ref2) {\n var payload, startTime, endTime, restPayload, range, mutations, startMutations, endMutations;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function saveRangeSaga$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n payload = _ref2.payload;\n startTime = payload.startTime, endTime = payload.endTime, restPayload = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(payload, [\"startTime\", \"endTime\"]);\n _context7.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getRangeById(restPayload.id));\n\n case 4:\n range = _context7.sent;\n mutations = [{\n type: _constants_range__WEBPACK_IMPORTED_MODULE_8__[\"UPDATE_RANGE\"],\n payload: restPayload\n }];\n\n if (!(typeof startTime !== 'undefined' && startTime !== null)) {\n _context7.next = 11;\n break;\n }\n\n _context7.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getMovePointMutations, range.startTime, startTime);\n\n case 9:\n startMutations = _context7.sent;\n startMutations.forEach(function (mutation) {\n return mutations.push(mutation);\n });\n\n case 11:\n if (!(typeof endTime !== 'undefined' && endTime !== null)) {\n _context7.next = 16;\n break;\n }\n\n _context7.next = 14;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getMovePointMutations, range.endTime, endTime);\n\n case 14:\n endMutations = _context7.sent;\n endMutations.forEach(function (mutation) {\n return mutations.push(mutation);\n });\n\n case 16:\n _context7.next = 18;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])(mutations));\n\n case 18:\n _context7.next = 20;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"editMetadata\"])(null));\n\n case 20:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _marked7);\n}\n\nfunction movePointSaga(_ref3) {\n var _ref3$payload, originalX, newX, mutations;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function movePointSaga$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _ref3$payload = _ref3.payload, originalX = _ref3$payload.originalX, newX = _ref3$payload.x;\n _context8.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getMovePointMutations, originalX, newX);\n\n case 3:\n mutations = _context8.sent;\n _context8.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])(mutations));\n\n case 6:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _marked8);\n}\n\nfunction playWhenBubbleIsClicked(id, isSelected) {\n var state, ranges, selectedRangeIds, selectedRanges;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function playWhenBubbleIsClicked$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])();\n\n case 2:\n state = _context9.sent;\n _context9.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 5:\n ranges = _context9.sent;\n _context9.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 8:\n selectedRangeIds = _context9.sent;\n _context9.next = 11;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 11:\n selectedRanges = _context9.sent;\n\n if (!isSelected) {\n _context9.next = 21;\n break;\n }\n\n if (!(selectedRanges.length && selectedRanges[0] && selectedRanges[0].startTime === ranges[id].startTime)) {\n _context9.next = 19;\n break;\n }\n\n if (!state.project[_constants_project__WEBPACK_IMPORTED_MODULE_10__[\"PROJECT\"].START_PLAYING_WHEN_BUBBLES_CLICKED]) {\n _context9.next = 17;\n break;\n }\n\n _context9.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"play\"])());\n\n case 17:\n _context9.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(ranges[id].startTime));\n\n case 19:\n _context9.next = 23;\n break;\n\n case 21:\n _context9.next = 23;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"pause\"])());\n\n case 23:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _marked9);\n}\n\nfunction currentTimeSaga() {\n var _ref4,\n type,\n state,\n startPlayingAtEnd,\n stopPlayingAtEnd,\n selectedRangeIds,\n selectedRanges,\n startTime,\n endTime,\n time,\n lastTime,\n clicked,\n _ref5,\n currentTime,\n _args10 = arguments;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function currentTimeSaga$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _ref4 = _args10.length > 0 && _args10[0] !== undefined ? _args10[0] : {}, type = _ref4.type;\n _context10.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(function (s) {\n return s.project;\n });\n\n case 3:\n state = _context10.sent;\n startPlayingAtEnd = state.startPlayingAtEndOfSection;\n stopPlayingAtEnd = state.stopPlayingAtTheEndOfSection;\n _context10.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 8:\n selectedRangeIds = _context10.sent;\n\n if (selectedRangeIds.length) {\n _context10.next = 11;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 11:\n _context10.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 13:\n selectedRanges = _context10.sent;\n startTime = selectedRanges[0].startTime;\n endTime = selectedRanges[selectedRanges.length - 1].endTime;\n _context10.next = 18;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getCurrentTime);\n\n case 18:\n time = _context10.sent;\n\n if (!(type === _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"PLAY_AUDIO\"] && time <= startTime || time >= endTime)) {\n _context10.next = 21;\n break;\n }\n\n return _context10.abrupt(\"return\");\n\n case 21:\n // Last time stores previous tick time so that we can compare the gap.\n lastTime = 0; // Click stores if we have made a jump in this code, so we can skip it\n // in our checks when trying to identify user clicks.\n // @todo improvement if we can identify different sources of `SET_CURRENT_TIME` then\n // we can more easily know if the jumps in the time are from human clicks or automated.\n\n clicked = false; // We want to listen for every tick of the time.\n\n case 23:\n if (false) {}\n\n _context10.next = 26;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"SET_CURRENT_TIME\"]);\n\n case 26:\n _ref5 = _context10.sent;\n currentTime = _ref5.payload.currentTime;\n\n if (!(clicked === false && lastTime && Math.abs(currentTime - lastTime) >= 1000)) {\n _context10.next = 30;\n break;\n }\n\n return _context10.abrupt(\"break\", 44);\n\n case 30:\n // Reset the clicked value if set.\n if (clicked) {\n clicked = false;\n } // Set a new last time, since we're done using it.\n\n\n lastTime = currentTime; // When the time goes past the end of a section\n\n if (!(currentTime >= endTime)) {\n _context10.next = 42;\n break;\n }\n\n if (!startPlayingAtEnd) {\n _context10.next = 39;\n break;\n }\n\n // Set a clicked value so we know to skip the user click check.\n clicked = true; // Either we start playing from the beginning of the section.\n\n _context10.next = 37;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(startTime));\n\n case 37:\n _context10.next = 42;\n break;\n\n case 39:\n if (!stopPlayingAtEnd) {\n _context10.next = 42;\n break;\n }\n\n _context10.next = 42;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"pause\"])());\n\n case 42:\n _context10.next = 23;\n break;\n\n case 44:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _marked10);\n}\n\nfunction deselectOtherRanges(id) {\n var selected;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deselectOtherRanges$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 2:\n selected = _context11.sent;\n return _context11.delegateYield((selected || []).filter(function (range) {\n return range !== id;\n }).map(function (range) {\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deselectRange\"])(range), {\n meta: {\n fromSaga: true\n }\n }));\n }), \"t0\", 4);\n\n case 4:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _marked11);\n}\n\nfunction deselectAllRangesSaga(_ref6) {\n var payload, selectedRangeIds, selectedRanges, startTime, state;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deselectAllRangesSaga$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n payload = _ref6.payload;\n _context12.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 3:\n selectedRangeIds = _context12.sent;\n\n if (selectedRangeIds.length) {\n _context12.next = 6;\n break;\n }\n\n return _context12.abrupt(\"return\");\n\n case 6:\n _context12.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 8:\n selectedRanges = _context12.sent;\n startTime = selectedRanges[0].startTime;\n _context12.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(function (s) {\n return s;\n });\n\n case 12:\n state = _context12.sent;\n\n if (!(payload.currentTime === startTime && !state.viewState.isPlaying)) {\n _context12.next = 15;\n break;\n }\n\n return _context12.abrupt(\"return\");\n\n case 15:\n _context12.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deselectOtherRanges, null);\n\n case 17:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _marked12);\n}\n\nfunction selectRangeSaga(_ref7) {\n var payload;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function selectRangeSaga$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n payload = _ref7.payload;\n\n if (!payload.deselectOthers) {\n _context13.next = 4;\n break;\n }\n\n _context13.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deselectOtherRanges, payload.id);\n\n case 4:\n _context13.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(playWhenBubbleIsClicked, payload.id, true);\n\n case 6:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _marked13);\n}\n\nfunction deselectRangeSaga(_ref8) {\n var payload, meta;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deselectRangeSaga$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n payload = _ref8.payload, meta = _ref8.meta;\n\n if (!(meta && meta.fromSaga)) {\n _context14.next = 3;\n break;\n }\n\n return _context14.abrupt(\"return\");\n\n case 3:\n _context14.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(playWhenBubbleIsClicked, payload.id, false);\n\n case 5:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _marked14);\n}\n\nfunction createRangeAction(data) {\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function createRangeAction$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n return _context15.abrupt(\"return\", Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"createRange\"])(data));\n\n case 1:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _marked15);\n}\n/**\n * Resolve parents depths\n *\n * Given an initial target depth of a \"child\" of a set of parents, this will\n * change the parents depth if required, and then recursively to the same\n * to that bubble. It walks all the way up parents parents bumping the size\n * if the parent bubble can no longer fit the child bubble.\n *\n * Return value is an array of depth changes.\n *\n * This is a co-routine that needs the state so it is wrapped in this generator.\n * @param initialDepth\n * @param initialParents\n * @returns {IterableIterator<*>}\n */\n\nfunction resolveParentDepths(initialDepth, initialParents) {\n var state, depthChangeParents;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function resolveParentDepths$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])();\n\n case 2:\n state = _context16.sent;\n\n // Create a recursive function.\n depthChangeParents = function depthChangeParents(childDepth, parents) {\n var mutations = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n // Loop through the parents\n return parents.reduce(function (acc, range) {\n // If we \"bumped\" the child depth by one, would this particular parent still be\n // tall enough to contain this new height.\n if (childDepth + 1 === range.depth) {\n // If not, increase the depth of it\n acc.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"increaseRangeDepth\"])(range.id)); // Now get its direct parents.\n\n var parentsParents = getParentBubbles(range)(state); // And do the same process, using this ranges depth.\n\n return depthChangeParents(range.depth, parentsParents, acc);\n } // Accumulate all of the mutations.\n\n\n return acc;\n }, mutations);\n };\n\n return _context16.abrupt(\"return\", depthChangeParents(initialDepth, initialParents));\n\n case 5:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _marked16);\n}\n\nfunction groupRangeSaga() {\n var selectedRangeIds, selectedRanges, _extractTimesFromRang, startTime, endTime, rangeBubbles, parentBubbles, depth, depthMutations, deselectMutations, newRange;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function groupRangeSaga$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context17.sent;\n\n if (!(selectedRangeIds.length < 2)) {\n _context17.next = 5;\n break;\n }\n\n return _context17.abrupt(\"return\");\n\n case 5:\n _context17.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context17.sent;\n _extractTimesFromRang = extractTimesFromRangeList(selectedRanges), startTime = _extractTimesFromRang.startTime, endTime = _extractTimesFromRang.endTime;\n _context17.t0 = canMerge;\n _context17.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 12:\n _context17.t1 = _context17.sent;\n _context17.t2 = {\n startTime: startTime,\n endTime: endTime\n };\n\n if ((0, _context17.t0)(_context17.t1, _context17.t2)) {\n _context17.next = 17;\n break;\n }\n\n console.log(\"We can't merge these bubbles.\");\n return _context17.abrupt(\"return\");\n\n case 17:\n _context17.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(startTime, endTime));\n\n case 19:\n rangeBubbles = _context17.sent;\n _context17.next = 22;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getParentBubbles({\n startTime: startTime,\n endTime: endTime\n }));\n\n case 22:\n parentBubbles = _context17.sent;\n // Calculate the tallest bubble in the selection\n depth = Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(rangeBubbles.map(function (range) {\n return range.depth;\n }))) || 1; // Calculate any changes to parent bubble depths.\n\n _context17.next = 26;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(resolveParentDepths, depth, parentBubbles);\n\n case 26:\n depthMutations = _context17.sent;\n // Deselect currently selected.\n deselectMutations = selectedRangeIds.map(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deselectRange\"]); // Create the new range.\n\n _context17.next = 30;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(createRangeAction, {\n startTime: startTime,\n endTime: endTime,\n depth: depth + 1\n });\n\n case 30:\n newRange = _context17.sent;\n _context17.next = 33;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])([].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(deselectMutations), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(depthMutations), [newRange, Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"selectRange\"])(newRange.payload.id)])));\n\n case 33:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _marked17);\n}\n\nfunction splitRangeSaga(_ref9) {\n var time, ranges, itemToSplit;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function splitRangeSaga$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n time = _ref9.payload.time;\n _context18.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 3:\n ranges = _context18.sent;\n itemToSplit = Object.values(ranges).filter(function (bubble) {\n return time <= bubble.endTime && time >= bubble.startTime;\n }).sort(function (b1, b2) {\n return b1.depth - b2.depth;\n })[0];\n Object(_utils_invariant__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(function () {\n return itemToSplit && itemToSplit.id && itemToSplit.endTime;\n }, 'Unstable state: There should be a bubble at every point'); // If we wanted to implement split left, so that a new bubble would be created on the left side\n // yield put(updateRangeTime(itemToSplit.id, { startTime }));\n // yield put(createRange({ startTime, endTime: time }));\n\n _context18.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])([Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"createRange\"])({\n startTime: time,\n endTime: itemToSplit.endTime\n }), Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(itemToSplit.id, {\n endTime: time\n })]));\n\n case 8:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _marked18);\n}\n\nfunction deleteRangeRequest(toRemoveId) {\n var toRemoveIds, redundantSizes, toRemove, rangeList, rangeArray, remainingRanges, depthMutations, newDepthMap, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret, sizeMutations, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop2, _iterator2, _step2, _ret2;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deleteRangeRequest$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n toRemoveIds = [toRemoveId]; // Removing redundant sizes first\n\n _context21.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(calculateRedundantSizes, toRemoveIds);\n\n case 3:\n redundantSizes = _context21.sent;\n // Map these Ids to a delete range action.\n toRemove = redundantSizes.map(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deleteRange\"]); // Some useful variables.\n\n _context21.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 7:\n rangeList = _context21.sent;\n rangeArray = Object.values(rangeList); // Create new list of bubbles\n // Run through a validation step to ensure they are of the correct level.\n\n remainingRanges = rangeArray.filter(function (range) {\n return redundantSizes.indexOf(range.id) === -1 && range.depth > 1;\n }).sort(function (a, b) {\n return a.depth === b.depth ? 0 : a.depth < b.depth ? -1 : 1;\n });\n depthMutations = [];\n newDepthMap = {}; // Loop through the remaining ranges to calculate depth changes.\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context21.prev = 15;\n _loop =\n /*#__PURE__*/\n _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _loop() {\n var parent, rangeChildren, maxDepthOfChildren;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _loop$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n parent = _step.value;\n _context19.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(parent.startTime, parent.endTime));\n\n case 3:\n _context19.t0 = function (range) {\n return range.id !== parent.id && redundantSizes.indexOf(range.id) === -1;\n };\n\n rangeChildren = _context19.sent.filter(_context19.t0);\n\n if (rangeChildren.length) {\n _context19.next = 7;\n break;\n }\n\n return _context19.abrupt(\"return\", \"continue\");\n\n case 7:\n // Calculate the maximum depth, taking into account any changes made in this loop.\n maxDepthOfChildren = Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(rangeChildren.map(function (range) {\n return newDepthMap[range.id] || range.depth;\n }))); // Continue if there are no changes.\n\n if (!(maxDepthOfChildren + 1 === parent.depth)) {\n _context19.next = 10;\n break;\n }\n\n return _context19.abrupt(\"return\", \"continue\");\n\n case 10:\n // This indicates we have an incorrect depth,\n if (maxDepthOfChildren + 1 < parent.depth) {\n // Decrease the range if it is too much higher than children.\n newDepthMap[parent.id] = parent.depth - 1;\n depthMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"decreaseRangeDepth\"])(parent.id));\n } else {\n // Increase the range if it can't fit the children anymore.\n newDepthMap[parent.id] = parent.depth + 1;\n depthMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"increaseRangeDepth\"])(parent.id));\n }\n\n case 11:\n case \"end\":\n return _context19.stop();\n }\n }\n }, _loop);\n });\n _iterator = remainingRanges[Symbol.iterator]();\n\n case 18:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context21.next = 26;\n break;\n }\n\n return _context21.delegateYield(_loop(), \"t0\", 20);\n\n case 20:\n _ret = _context21.t0;\n\n if (!(_ret === \"continue\")) {\n _context21.next = 23;\n break;\n }\n\n return _context21.abrupt(\"continue\", 23);\n\n case 23:\n _iteratorNormalCompletion = true;\n _context21.next = 18;\n break;\n\n case 26:\n _context21.next = 32;\n break;\n\n case 28:\n _context21.prev = 28;\n _context21.t1 = _context21[\"catch\"](15);\n _didIteratorError = true;\n _iteratorError = _context21.t1;\n\n case 32:\n _context21.prev = 32;\n _context21.prev = 33;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 35:\n _context21.prev = 35;\n\n if (!_didIteratorError) {\n _context21.next = 38;\n break;\n }\n\n throw _iteratorError;\n\n case 38:\n return _context21.finish(35);\n\n case 39:\n return _context21.finish(32);\n\n case 40:\n // Make remaining ranges grow right (or left if that's not possible)\n sizeMutations = []; // Loop through all of the deleted ranges.\n\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context21.prev = 44;\n _loop2 =\n /*#__PURE__*/\n _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _loop2() {\n var deletedId, rangeToRemove, rangeChildren, parentRange, siblingRanges, lookLeftSibling, lookRightSibling, leftBubbles, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, leftBubble, rightBubbles, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, rightBubble;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _loop2$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n deletedId = _step2.value;\n // Get the full range object.\n rangeToRemove = rangeList[deletedId]; // Need to check if this range has children first, children grow inside so\n // no sibling bubbles will change size in this case.\n\n _context20.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(rangeToRemove.startTime, rangeToRemove.endTime));\n\n case 4:\n _context20.t0 = function (range) {\n return range.id !== rangeToRemove.id;\n };\n\n rangeChildren = _context20.sent.filter(_context20.t0);\n\n if (!rangeChildren.length) {\n _context20.next = 8;\n break;\n }\n\n return _context20.abrupt(\"return\", \"continue\");\n\n case 8:\n _context20.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getDirectParentRange, rangeToRemove);\n\n case 10:\n parentRange = _context20.sent;\n\n if (!parentRange) {\n _context20.next = 23;\n break;\n }\n\n _context20.next = 14;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getSiblingRanges, parentRange, rangeToRemove);\n\n case 14:\n siblingRanges = _context20.sent;\n lookLeftSibling = getRangeToTheLeft(siblingRanges, rangeToRemove);\n\n if (!lookLeftSibling) {\n _context20.next = 19;\n break;\n }\n\n sizeMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(lookLeftSibling.id, {\n endTime: rangeToRemove.endTime\n }));\n return _context20.abrupt(\"return\", \"continue\");\n\n case 19:\n lookRightSibling = getRangeToTheRight(siblingRanges, rangeToRemove);\n\n if (!lookRightSibling) {\n _context20.next = 23;\n break;\n }\n\n sizeMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(lookRightSibling.id, {\n startTime: rangeToRemove.startTime\n }));\n return _context20.abrupt(\"return\", \"continue\");\n\n case 23:\n // At this point we know that bubbles inside the parent won't shift to fill the space.\n // First look left to find all the bubbles that share the startTime.\n leftBubbles = rangeArray.filter(function (range) {\n return range.id !== rangeToRemove.id && (range.endTime === rangeToRemove.startTime || range.startTime === rangeToRemove.startTime);\n }); // And queue them up to be moved.\n\n if (!(canMoveBubbles(leftBubbles, rangeToRemove) && leftBubbles.length)) {\n _context20.next = 45;\n break;\n }\n\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context20.prev = 28;\n\n for (_iterator3 = leftBubbles[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n leftBubble = _step3.value;\n // Overlap bubble growing from the left.\n sizeMutations.push(overlapBubbleLeft(rangeToRemove, leftBubble));\n }\n\n _context20.next = 36;\n break;\n\n case 32:\n _context20.prev = 32;\n _context20.t1 = _context20[\"catch\"](28);\n _didIteratorError3 = true;\n _iteratorError3 = _context20.t1;\n\n case 36:\n _context20.prev = 36;\n _context20.prev = 37;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 39:\n _context20.prev = 39;\n\n if (!_didIteratorError3) {\n _context20.next = 42;\n break;\n }\n\n throw _iteratorError3;\n\n case 42:\n return _context20.finish(39);\n\n case 43:\n return _context20.finish(36);\n\n case 44:\n return _context20.abrupt(\"return\", \"continue\");\n\n case 45:\n // Now we look to the right of the bubble to find bubbles that share\n // the endTime. This is only applicable when there are no bubbles\n // to the left (i.e. a bubble with startTime = 0)\n rightBubbles = rangeArray.filter(function (range) {\n return range.id !== rangeToRemove.id && (range.startTime === rangeToRemove.endTime || range.endTime === rangeToRemove.startTime);\n }); // And queue these up to be moved.\n\n if (!(canMoveBubbles(rightBubbles, rangeToRemove) && rightBubbles.length)) {\n _context20.next = 66;\n break;\n }\n\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context20.prev = 50;\n\n for (_iterator4 = rightBubbles[Symbol.iterator](); !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n rightBubble = _step4.value;\n // Overlap bubble growing from the right.\n sizeMutations.push(overlapBubbleRight(rangeToRemove, rightBubble));\n } // continue;\n\n\n _context20.next = 58;\n break;\n\n case 54:\n _context20.prev = 54;\n _context20.t2 = _context20[\"catch\"](50);\n _didIteratorError4 = true;\n _iteratorError4 = _context20.t2;\n\n case 58:\n _context20.prev = 58;\n _context20.prev = 59;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 61:\n _context20.prev = 61;\n\n if (!_didIteratorError4) {\n _context20.next = 64;\n break;\n }\n\n throw _iteratorError4;\n\n case 64:\n return _context20.finish(61);\n\n case 65:\n return _context20.finish(58);\n\n case 66:\n case \"end\":\n return _context20.stop();\n }\n }\n }, _loop2, null, [[28, 32, 36, 44], [37,, 39, 43], [50, 54, 58, 66], [59,, 61, 65]]);\n });\n _iterator2 = redundantSizes[Symbol.iterator]();\n\n case 47:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context21.next = 55;\n break;\n }\n\n return _context21.delegateYield(_loop2(), \"t2\", 49);\n\n case 49:\n _ret2 = _context21.t2;\n\n if (!(_ret2 === \"continue\")) {\n _context21.next = 52;\n break;\n }\n\n return _context21.abrupt(\"continue\", 52);\n\n case 52:\n _iteratorNormalCompletion2 = true;\n _context21.next = 47;\n break;\n\n case 55:\n _context21.next = 61;\n break;\n\n case 57:\n _context21.prev = 57;\n _context21.t3 = _context21[\"catch\"](44);\n _didIteratorError2 = true;\n _iteratorError2 = _context21.t3;\n\n case 61:\n _context21.prev = 61;\n _context21.prev = 62;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 64:\n _context21.prev = 64;\n\n if (!_didIteratorError2) {\n _context21.next = 67;\n break;\n }\n\n throw _iteratorError2;\n\n case 67:\n return _context21.finish(64);\n\n case 68:\n return _context21.finish(61);\n\n case 69:\n _context21.next = 71;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])([].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(toRemove), depthMutations, sizeMutations)));\n\n case 71:\n case \"end\":\n return _context21.stop();\n }\n }\n }, _marked19, null, [[15, 28, 32, 40], [33,, 35, 39], [44, 57, 61, 69], [62,, 64, 68]]);\n}\n\nfunction singleDelete(_ref10) {\n var id;\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function singleDelete$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n id = _ref10.payload.id;\n _context22.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deleteRangeRequest, id);\n\n case 3:\n case \"end\":\n return _context22.stop();\n }\n }\n }, _marked20);\n}\n\nfunction multiDelete(_ref11) {\n var ranges, confirmed, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, range;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function multiDelete$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n ranges = _ref11.payload.ranges;\n\n if (!(ranges.length > 1)) {\n _context23.next = 7;\n break;\n }\n\n _context23.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(_index__WEBPACK_IMPORTED_MODULE_12__[\"showConfirmation\"], 'Multiple sections will be deleted. Redundant sections will be removed. Do you wish to continue?');\n\n case 4:\n confirmed = _context23.sent;\n\n if (!(confirmed === false)) {\n _context23.next = 7;\n break;\n }\n\n return _context23.abrupt(\"return\");\n\n case 7:\n _iteratorNormalCompletion5 = true;\n _didIteratorError5 = false;\n _iteratorError5 = undefined;\n _context23.prev = 10;\n _iterator5 = ranges[Symbol.iterator]();\n\n case 12:\n if (_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done) {\n _context23.next = 19;\n break;\n }\n\n range = _step5.value;\n _context23.next = 16;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deleteRangeRequest, range);\n\n case 16:\n _iteratorNormalCompletion5 = true;\n _context23.next = 12;\n break;\n\n case 19:\n _context23.next = 25;\n break;\n\n case 21:\n _context23.prev = 21;\n _context23.t0 = _context23[\"catch\"](10);\n _didIteratorError5 = true;\n _iteratorError5 = _context23.t0;\n\n case 25:\n _context23.prev = 25;\n _context23.prev = 26;\n\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n\n case 28:\n _context23.prev = 28;\n\n if (!_didIteratorError5) {\n _context23.next = 31;\n break;\n }\n\n throw _iteratorError5;\n\n case 31:\n return _context23.finish(28);\n\n case 32:\n return _context23.finish(25);\n\n case 33:\n case \"end\":\n return _context23.stop();\n }\n }\n }, _marked21, null, [[10, 21, 25, 33], [26,, 28, 32]]);\n}\n\nfunction clearCustomColorsSaga() {\n var rangeList, rangeIds, _i, rangeId;\n\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function clearCustomColorsSaga$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n _context24.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 2:\n rangeList = _context24.sent;\n rangeIds = Object.keys(rangeList);\n _i = 0;\n\n case 5:\n if (!(_i < rangeIds.length)) {\n _context24.next = 12;\n break;\n }\n\n rangeId = rangeIds[_i];\n _context24.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"unsetRangeColor\"])(rangeId));\n\n case 9:\n _i++;\n _context24.next = 5;\n break;\n\n case 12:\n case \"end\":\n return _context24.stop();\n }\n }\n }, _marked22);\n}\n\nfunction rangeSaga() {\n return _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function rangeSaga$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n _context25.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"all\"])([Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"PREVIOUS_BUBBLE\"], previousBubble), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"NEXT_BUBBLE\"], nextBubble), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"MOVE_POINT\"], movePointSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SCHEDULE_UPDATE_RANGE\"], saveRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SELECT_RANGE\"], selectRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeLatest\"])([_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SELECT_RANGE\"], _constants_range__WEBPACK_IMPORTED_MODULE_8__[\"DESELECT_RANGE\"]], currentTimeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"DESELECT_RANGE\"], deselectRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"GROUP_RANGES\"], groupRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SPLIT_RANGE_AT\"], splitRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SCHEDULE_DELETE_RANGE\"], singleDelete), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SCHEDULE_DELETE_RANGES\"], multiDelete), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"SET_CURRENT_TIME\"], deselectAllRangesSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_10__[\"CLEAR_CUSTOM_COLORS\"], clearCustomColorsSaga)]);\n\n case 2:\n case \"end\":\n return _context25.stop();\n }\n }\n }, _marked23);\n}\n\n//# sourceURL=webpack:///./src/sagas/range-saga.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"STICKY_BUBBLE_MS\", function() { return STICKY_BUBBLE_MS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStickyPointDelta\", function() { return getStickyPointDelta; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"currentTimeSaga\", function() { return currentTimeSaga; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createRangeAction\", function() { return createRangeAction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return rangeSaga; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! redux-saga/effects */ \"./node_modules/redux-saga/es/effects.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../actions/viewState */ \"./src/actions/viewState.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _actions_range__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../actions/range */ \"./src/actions/range.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _utils_invariant__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/invariant */ \"./src/utils/invariant.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./index */ \"./src/sagas/index.js\");\n\n\n\n\n\nvar _marked =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(setIsSavedStatus),\n _marked2 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(previousBubble),\n _marked3 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(nextBubble),\n _marked4 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(calculateRedundantSizes),\n _marked5 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(getDirectParentRange),\n _marked6 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(getSiblingRanges),\n _marked7 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(getMovePointMutations),\n _marked8 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(saveRangeSaga),\n _marked9 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(movePointSaga),\n _marked10 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(playWhenBubbleIsClicked),\n _marked11 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(currentTimeSaga),\n _marked12 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deselectOtherRanges),\n _marked13 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deselectAllRangesSaga),\n _marked14 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(selectRangeSaga),\n _marked15 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deselectRangeSaga),\n _marked16 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(createRangeAction),\n _marked17 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(resolveParentDepths),\n _marked18 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(groupRangeSaga),\n _marked19 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(splitRangeSaga),\n _marked20 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(deleteRangeRequest),\n _marked21 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(singleDelete),\n _marked22 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(multiDelete),\n _marked23 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(clearCustomColorsSaga),\n _marked24 =\n/*#__PURE__*/\n_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(rangeSaga);\n\n\n\n\n\n\n\n\n\n\n\nvar STICKY_BUBBLE_MS = 500;\n\nfunction setIsSavedStatus() {\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function setIsSavedStatus$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_project__WEBPACK_IMPORTED_MODULE_10__[\"setProjectChanged\"])(false));\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _marked);\n}\n\nfunction previousBubble() {\n var previousBubbleTime;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function previousBubble$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getPreviousBubbleStartTime\"]);\n\n case 2:\n previousBubbleTime = _context2.sent;\n\n if (!Number.isFinite(previousBubbleTime)) {\n _context2.next = 8;\n break;\n }\n\n _context2.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(previousBubbleTime));\n\n case 6:\n _context2.next = 10;\n break;\n\n case 8:\n _context2.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(0));\n\n case 10:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _marked2);\n}\n\nfunction nextBubble() {\n var nextBubbleTime;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function nextBubble$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getNextBubbleStartTime\"]);\n\n case 2:\n nextBubbleTime = _context3.sent;\n _context3.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(nextBubbleTime.time));\n\n case 5:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _marked3);\n}\n\nvar getCurrentTime = function getCurrentTime(state) {\n return state.viewState.currentTime;\n};\n/**\n * Can points merge\n *\n * Given a list of points and a start and end time this will\n * return true if the bubbles can be grouped.\n *\n * This is to avoid intersecting bubbles, which is not allowed.\n *\n * @param points\n * @param startTime\n * @param endTime\n * @returns {boolean}\n */\n\n\nfunction canMerge(points, _ref) {\n var startTime = _ref.startTime,\n endTime = _ref.endTime;\n return Object.values(points).filter(function (bubble) {\n return bubble.depth > 1;\n }).filter(function (bubble) {\n return bubble.startTime < startTime && startTime < bubble.endTime && bubble.endTime < endTime || startTime < bubble.startTime && bubble.startTime < endTime && endTime < bubble.endTime || bubble.startTime === startTime && bubble.endTime === endTime;\n }).length === 0;\n}\n/**\n * Get sticky point delta\n *\n * From a list of ranges and a single point in time this will return\n * the largest delta within `sticky` (default: 50ms) so that you can\n * use it to auto-correct inaccuracy of user pointers.\n *\n * @param ranges\n * @param x\n * @param sticky\n * @returns {T | *}\n */\n\n\nfunction getStickyPointDelta(ranges, x, sticky) {\n return ranges.reduce(function (stickyCandidates, range) {\n if (Math.abs(range.startTime - x) <= sticky) {\n stickyCandidates.push(range.startTime);\n }\n\n if (Math.abs(range.endTime - x) <= sticky) {\n stickyCandidates.push(range.endTime);\n }\n\n return stickyCandidates;\n }, []).filter(function (r) {\n return r > 0;\n }).sort(function (a, b) {\n return Math.abs(x - a) - Math.abs(x - b);\n }).pop() || x;\n}\n/**\n * Sort ranges by depth then time.\n *\n * Sort them first by depth, and then by endTime.\n *\n * This will give an order where parents always come before their\n * children AND they are still ordered by time.\n *\n * @param a\n * @param b\n * @returns {number}\n */\n\nfunction sortRangesByDepthThenTime(a, b) {\n // First by depth, if they are different from each other.\n if (b.depth !== a.depth) {\n return b.depth - a.depth;\n } // Then by end time.\n\n\n if (a.endTime < b.endTime) {\n return -1;\n }\n\n if (a.endTime > b.endTime) {\n return 1;\n } // This shouldn't happen, if they share an end time AND depth, its\n // not a valid bubble.\n\n\n return 0;\n}\n/**\n * Get direct children\n *\n * Given a list of all the children of a grouping bubble, this will\n * return only the DIRECT children.\n *\n * @param childrenRanges\n * @returns {*}\n */\n\n\nfunction getDirectChildren(childrenRanges) {\n return childrenRanges.sort(sortRangesByDepthThenTime).reduce(function (ac, n) {\n // Does it start first in range.\n var isMin = n.startTime < ac.min; // Is furthest reaching in range.\n\n var isMax = n.endTime > ac.max; // Record the min and max.\n\n if (isMin) {\n ac.min = n.startTime;\n }\n\n if (isMax) {\n ac.max = n.endTime;\n } // If we've just established a new min or max, push it on our list.\n\n\n if (isMin || isMax) {\n ac.list.push(n);\n } // Return the state.\n\n\n return ac;\n }, {\n min: Infinity,\n max: 0,\n list: []\n }).list;\n}\n/**\n * Calculate redundant sizes\n *\n * Asks the question, in the current state of the application, if I\n * removed X bubbles, which bubbles would have to be removed.\n *\n * @param toRemoveIds\n * @returns {IterableIterator<*>}\n */\n\n\nfunction calculateRedundantSizes(toRemoveIds) {\n var allRanges;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function calculateRedundantSizes$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.t0 = Object;\n _context4.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 3:\n _context4.t1 = _context4.sent;\n allRanges = _context4.t0.values.call(_context4.t0, _context4.t1);\n return _context4.abrupt(\"return\", allRanges.filter(function (range) {\n return toRemoveIds.indexOf(range.id) === -1;\n }).filter(filterOnlyGroupingRanges).sort(function (a, b) {\n return a.depth === b.depth ? 0 : a.depth < b.depth ? -1 : 1;\n }).reduce(function (acc, next) {\n // Filter to only include children inside the current range.\n var filteredChildren = allRanges.filter(function (range) {\n return (// Not already removed\n acc.indexOf(range.id) === -1 && // Is within the parent bubble.\n bubbleIsWithin(next, range)\n );\n }); // From the filtered children, filter out only the DIRECT children.\n\n var directChildren = getDirectChildren(filteredChildren); // If there is only one child, we need to remove it.\n\n if (directChildren.length === 1) {\n acc.push(next.id);\n }\n\n return acc;\n }, toRemoveIds));\n\n case 6:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _marked4);\n}\n/**\n * Filter only grouping ranges\n *\n * This has been split out, it may be expanded later on.\n *\n * @param range\n * @returns {boolean}\n */\n\n\nfunction filterOnlyGroupingRanges(range) {\n return range.depth > 1;\n}\n/**\n * Bubble is withing\n *\n * Filter for two ranges, returns true if `childCandidate` is\n * inside the first range at any level.\n *\n * @param parent\n * @param childCandidate\n * @returns {boolean}\n */\n\n\nfunction bubbleIsWithin(parent, childCandidate) {\n return childCandidate.id !== parent.id && childCandidate.startTime >= parent.startTime && childCandidate.endTime <= parent.endTime;\n}\n/**\n * Fuzzy equal.\n *\n * Compares `a` and `b` and returns if they are within\n * STICK_BUBBLE_MS configuration value (default: 50)\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\n\nfunction fuzzyEqual(a, b) {\n return Math.abs(a - b) <= STICKY_BUBBLE_MS;\n}\n/**\n * Extract times from range list\n *\n * This will take a list of ranges and simply return the smallest start\n * time and the largest end time to get a range.\n *\n * @param ranges\n * @returns {{startTime: *, endTime: *}}\n */\n\n\nfunction extractTimesFromRangeList(ranges) {\n var startTime = ranges.reduce(function (cur, next) {\n return next.startTime <= cur ? next.startTime : cur;\n }, Infinity);\n var endTime = ranges.reduce(function (cur, next) {\n return next.endTime >= cur ? next.endTime : cur;\n }, 0);\n return {\n startTime: startTime,\n endTime: endTime\n };\n}\n\nfunction getDirectParentRange(range) {\n var parentBubbles;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function getDirectParentRange$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getParentBubbles(range));\n\n case 2:\n parentBubbles = _context5.sent;\n return _context5.abrupt(\"return\", parentBubbles.find(function (parentRange) {\n return parentRange.depth === range.depth + 1 && range.startTime >= parentRange.startTime && range.endTime <= parentRange.endTime;\n }));\n\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _marked5);\n}\n\nfunction getSiblingRanges(parentRange, childRange) {\n var rangesBetweenParent;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function getSiblingRanges$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(parentRange.startTime, parentRange.endTime));\n\n case 2:\n rangesBetweenParent = _context6.sent;\n return _context6.abrupt(\"return\", rangesBetweenParent.filter(function (range) {\n return range.id !== childRange.id && range.id !== parentRange.id;\n }));\n\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _marked6);\n}\n\nfunction getRangeToTheLeft(siblingRanges, childRange) {\n return siblingRanges.find(function (range) {\n return range.id !== childRange.id && range.depth === childRange.depth && range.endTime === childRange.startTime;\n });\n}\n\nfunction getRangeToTheRight(siblingRanges, childRange) {\n return siblingRanges.find(function (range) {\n return range.id !== childRange.id && range.depth === childRange.depth && range.startTime === childRange.endTime;\n });\n}\n\nfunction overlapBubbleRight(toCover, toGrow) {\n return toGrow.startTime === toCover.endTime ? Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n startTime: toCover.startTime\n }) : Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n endTime: toCover.startTime\n });\n}\n\nfunction overlapBubbleLeft(toCover, toGrow) {\n return toGrow.endTime === toCover.startTime ? Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n endTime: toCover.endTime\n }) : Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(toGrow.id, {\n startTime: toCover.endTime\n });\n}\n\nvar getParentBubbles = function getParentBubbles(child) {\n return function (state) {\n return Object.values(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"])(state)).filter(function (range) {\n return bubbleIsWithin(range, child);\n }).sort(function (range) {\n return -(range.startTime - range.endTime);\n });\n };\n};\n\nfunction canMoveBubbles(bubbleList, toRemove) {\n return bubbleList.filter(function (range) {\n return range.depth === toRemove.depth;\n }).length > 0;\n}\n\nfunction getMovePointMutations(fromTime, toTime) {\n var ranges, x, toRemoveIds, redundantSizes, toRemove, updateRangeTimes;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function getMovePointMutations$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesAtPoint\"])(fromTime, STICKY_BUBBLE_MS));\n\n case 2:\n ranges = _context7.sent;\n x = getStickyPointDelta(ranges, toTime, STICKY_BUBBLE_MS);\n toRemoveIds = ranges.filter(function (range) {\n if (fuzzyEqual(range.startTime, fromTime)) {\n return fuzzyEqual(range.endTime, x);\n }\n\n return fuzzyEqual(range.startTime, x);\n }).map(function (range) {\n return range.id;\n }); // This should be able to be split out.\n\n _context7.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(calculateRedundantSizes, toRemoveIds);\n\n case 7:\n redundantSizes = _context7.sent;\n toRemove = redundantSizes.map(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deleteRange\"]); // When updating range times, need to consider the STICKY_BUBBLE_MS of stickiness.\n\n updateRangeTimes = ranges.filter(function (range) {\n return redundantSizes.indexOf(range.id) === -1;\n }).map(function (range) {\n return fuzzyEqual(range.startTime, fromTime) ? Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(range.id, {\n startTime: x\n }) : Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(range.id, {\n endTime: x\n });\n }); // Finish the mutation.\n\n return _context7.abrupt(\"return\", [].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(updateRangeTimes), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(toRemove)));\n\n case 11:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _marked7);\n}\n/**\n * Get range by id\n *\n * Returns a selector for easily getting a single range by id\n * @param id\n * @returns {function(*): *}\n */\n\n\nfunction getRangeById(id) {\n return function (state) {\n return state.range.list[id];\n };\n}\n\nfunction saveRangeSaga(_ref2) {\n var payload, startTime, endTime, restPayload, range, mutations, startMutations, endMutations;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function saveRangeSaga$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n payload = _ref2.payload;\n startTime = payload.startTime, endTime = payload.endTime, restPayload = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(payload, [\"startTime\", \"endTime\"]);\n _context8.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getRangeById(restPayload.id));\n\n case 4:\n range = _context8.sent;\n mutations = [{\n type: _constants_range__WEBPACK_IMPORTED_MODULE_8__[\"UPDATE_RANGE\"],\n payload: restPayload\n }];\n\n if (!(typeof startTime !== 'undefined' && startTime !== null)) {\n _context8.next = 11;\n break;\n }\n\n _context8.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getMovePointMutations, range.startTime, startTime);\n\n case 9:\n startMutations = _context8.sent;\n startMutations.forEach(function (mutation) {\n return mutations.push(mutation);\n });\n\n case 11:\n if (!(typeof endTime !== 'undefined' && endTime !== null)) {\n _context8.next = 16;\n break;\n }\n\n _context8.next = 14;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getMovePointMutations, range.endTime, endTime);\n\n case 14:\n endMutations = _context8.sent;\n endMutations.forEach(function (mutation) {\n return mutations.push(mutation);\n });\n\n case 16:\n _context8.next = 18;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])(mutations));\n\n case 18:\n _context8.next = 20;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"editMetadata\"])(null));\n\n case 20:\n _context8.next = 22;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(setIsSavedStatus);\n\n case 22:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _marked8);\n}\n\nfunction movePointSaga(_ref3) {\n var _ref3$payload, originalX, newX, mutations;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function movePointSaga$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _ref3$payload = _ref3.payload, originalX = _ref3$payload.originalX, newX = _ref3$payload.x;\n _context9.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getMovePointMutations, originalX, newX);\n\n case 3:\n mutations = _context9.sent;\n _context9.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])(mutations));\n\n case 6:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _marked9);\n}\n\nfunction playWhenBubbleIsClicked(id, isSelected) {\n var state, ranges, selectedRangeIds, selectedRanges;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function playWhenBubbleIsClicked$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])();\n\n case 2:\n state = _context10.sent;\n _context10.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 5:\n ranges = _context10.sent;\n _context10.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 8:\n selectedRangeIds = _context10.sent;\n _context10.next = 11;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 11:\n selectedRanges = _context10.sent;\n\n if (!isSelected) {\n _context10.next = 21;\n break;\n }\n\n if (!(selectedRanges.length && selectedRanges[0] && selectedRanges[0].startTime === ranges[id].startTime)) {\n _context10.next = 19;\n break;\n }\n\n if (!state.project[_constants_project__WEBPACK_IMPORTED_MODULE_11__[\"PROJECT\"].START_PLAYING_WHEN_BUBBLES_CLICKED]) {\n _context10.next = 17;\n break;\n }\n\n _context10.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"play\"])());\n\n case 17:\n _context10.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(ranges[id].startTime));\n\n case 19:\n _context10.next = 23;\n break;\n\n case 21:\n _context10.next = 23;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"pause\"])());\n\n case 23:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _marked10);\n}\n\nfunction currentTimeSaga() {\n var _ref4,\n type,\n state,\n startPlayingAtEnd,\n stopPlayingAtEnd,\n selectedRangeIds,\n selectedRanges,\n startTime,\n endTime,\n time,\n lastTime,\n clicked,\n _ref5,\n currentTime,\n _args11 = arguments;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function currentTimeSaga$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _ref4 = _args11.length > 0 && _args11[0] !== undefined ? _args11[0] : {}, type = _ref4.type;\n _context11.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(function (s) {\n return s.project;\n });\n\n case 3:\n state = _context11.sent;\n startPlayingAtEnd = state.startPlayingAtEndOfSection;\n stopPlayingAtEnd = state.stopPlayingAtTheEndOfSection;\n _context11.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 8:\n selectedRangeIds = _context11.sent;\n\n if (selectedRangeIds.length) {\n _context11.next = 11;\n break;\n }\n\n return _context11.abrupt(\"return\");\n\n case 11:\n _context11.next = 13;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 13:\n selectedRanges = _context11.sent;\n startTime = selectedRanges[0].startTime;\n endTime = selectedRanges[selectedRanges.length - 1].endTime;\n _context11.next = 18;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getCurrentTime);\n\n case 18:\n time = _context11.sent;\n\n if (!(type === _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"PLAY_MEDIA\"] && time <= startTime || time >= endTime)) {\n _context11.next = 21;\n break;\n }\n\n return _context11.abrupt(\"return\");\n\n case 21:\n // Last time stores previous tick time so that we can compare the gap.\n lastTime = 0; // Click stores if we have made a jump in this code, so we can skip it\n // in our checks when trying to identify user clicks.\n // @todo improvement if we can identify different sources of `SET_CURRENT_TIME` then\n // we can more easily know if the jumps in the time are from human clicks or automated.\n\n clicked = false; // We want to listen for every tick of the time.\n\n case 23:\n if (false) {}\n\n _context11.next = 26;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"take\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"SET_CURRENT_TIME\"]);\n\n case 26:\n _ref5 = _context11.sent;\n currentTime = _ref5.payload.currentTime;\n\n if (!(clicked === false && lastTime && Math.abs(currentTime - lastTime) >= 1000)) {\n _context11.next = 30;\n break;\n }\n\n return _context11.abrupt(\"break\", 44);\n\n case 30:\n // Reset the clicked value if set.\n if (clicked) {\n clicked = false;\n } // Set a new last time, since we're done using it.\n\n\n lastTime = currentTime; // When the time goes past the end of a section\n\n if (!(currentTime >= endTime)) {\n _context11.next = 42;\n break;\n }\n\n if (!startPlayingAtEnd) {\n _context11.next = 39;\n break;\n }\n\n // Set a clicked value so we know to skip the user click check.\n clicked = true; // Either we start playing from the beginning of the section.\n\n _context11.next = 37;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"setCurrentTime\"])(startTime));\n\n case 37:\n _context11.next = 42;\n break;\n\n case 39:\n if (!stopPlayingAtEnd) {\n _context11.next = 42;\n break;\n }\n\n _context11.next = 42;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_5__[\"pause\"])());\n\n case 42:\n _context11.next = 23;\n break;\n\n case 44:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _marked11);\n}\n\nfunction deselectOtherRanges(id) {\n var selected;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deselectOtherRanges$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 2:\n selected = _context12.sent;\n return _context12.delegateYield((selected || []).filter(function (range) {\n return range !== id;\n }).map(function (range) {\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deselectRange\"])(range), {\n meta: {\n fromSaga: true\n }\n }));\n }), \"t0\", 4);\n\n case 4:\n case \"end\":\n return _context12.stop();\n }\n }\n }, _marked12);\n}\n\nfunction deselectAllRangesSaga(_ref6) {\n var payload, selectedRangeIds, selectedRanges, startTime, state;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deselectAllRangesSaga$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n payload = _ref6.payload;\n _context13.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 3:\n selectedRangeIds = _context13.sent;\n\n if (selectedRangeIds.length) {\n _context13.next = 6;\n break;\n }\n\n return _context13.abrupt(\"return\");\n\n case 6:\n _context13.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 8:\n selectedRanges = _context13.sent;\n startTime = selectedRanges[0].startTime;\n _context13.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(function (s) {\n return s;\n });\n\n case 12:\n state = _context13.sent;\n\n if (!(payload.currentTime === startTime && !state.viewState.isPlaying)) {\n _context13.next = 15;\n break;\n }\n\n return _context13.abrupt(\"return\");\n\n case 15:\n _context13.next = 17;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deselectOtherRanges, null);\n\n case 17:\n case \"end\":\n return _context13.stop();\n }\n }\n }, _marked13);\n}\n\nfunction selectRangeSaga(_ref7) {\n var payload;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function selectRangeSaga$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n payload = _ref7.payload;\n\n if (!payload.deselectOthers) {\n _context14.next = 4;\n break;\n }\n\n _context14.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deselectOtherRanges, payload.id);\n\n case 4:\n _context14.next = 6;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(playWhenBubbleIsClicked, payload.id, true);\n\n case 6:\n case \"end\":\n return _context14.stop();\n }\n }\n }, _marked14);\n}\n\nfunction deselectRangeSaga(_ref8) {\n var payload, meta;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deselectRangeSaga$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n payload = _ref8.payload, meta = _ref8.meta;\n\n if (!(meta && meta.fromSaga)) {\n _context15.next = 3;\n break;\n }\n\n return _context15.abrupt(\"return\");\n\n case 3:\n _context15.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(playWhenBubbleIsClicked, payload.id, false);\n\n case 5:\n case \"end\":\n return _context15.stop();\n }\n }\n }, _marked15);\n}\n\nfunction createRangeAction(data) {\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function createRangeAction$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n return _context16.abrupt(\"return\", Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"createRange\"])(data));\n\n case 1:\n case \"end\":\n return _context16.stop();\n }\n }\n }, _marked16);\n}\n/**\n * Resolve parents depths\n *\n * Given an initial target depth of a \"child\" of a set of parents, this will\n * change the parents depth if required, and then recursively to the same\n * to that bubble. It walks all the way up parents parents bumping the size\n * if the parent bubble can no longer fit the child bubble.\n *\n * Return value is an array of depth changes.\n *\n * This is a co-routine that needs the state so it is wrapped in this generator.\n * @param initialDepth\n * @param initialParents\n * @returns {IterableIterator<*>}\n */\n\nfunction resolveParentDepths(initialDepth, initialParents) {\n var state, depthChangeParents;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function resolveParentDepths$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])();\n\n case 2:\n state = _context17.sent;\n\n // Create a recursive function.\n depthChangeParents = function depthChangeParents(childDepth, parents) {\n var mutations = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n // Loop through the parents\n return parents.reduce(function (acc, range) {\n // If we \"bumped\" the child depth by one, would this particular parent still be\n // tall enough to contain this new height.\n if (childDepth + 1 === range.depth) {\n // If not, increase the depth of it\n acc.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"increaseRangeDepth\"])(range.id)); // Now get its direct parents.\n\n var parentsParents = getParentBubbles(range)(state); // And do the same process, using this ranges depth.\n\n return depthChangeParents(range.depth, parentsParents, acc);\n } // Accumulate all of the mutations.\n\n\n return acc;\n }, mutations);\n };\n\n return _context17.abrupt(\"return\", depthChangeParents(initialDepth, initialParents));\n\n case 5:\n case \"end\":\n return _context17.stop();\n }\n }\n }, _marked17);\n}\n\nfunction groupRangeSaga() {\n var selectedRangeIds, selectedRanges, _extractTimesFromRang, startTime, endTime, rangeBubbles, parentBubbles, depth, depthMutations, deselectMutations, newRange;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function groupRangeSaga$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n _context18.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getSelectedRanges\"]);\n\n case 2:\n selectedRangeIds = _context18.sent;\n\n if (!(selectedRangeIds.length < 2)) {\n _context18.next = 5;\n break;\n }\n\n return _context18.abrupt(\"return\");\n\n case 5:\n _context18.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesByIds\"])(selectedRangeIds));\n\n case 7:\n selectedRanges = _context18.sent;\n _extractTimesFromRang = extractTimesFromRangeList(selectedRanges), startTime = _extractTimesFromRang.startTime, endTime = _extractTimesFromRang.endTime;\n _context18.t0 = canMerge;\n _context18.next = 12;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 12:\n _context18.t1 = _context18.sent;\n _context18.t2 = {\n startTime: startTime,\n endTime: endTime\n };\n\n if ((0, _context18.t0)(_context18.t1, _context18.t2)) {\n _context18.next = 17;\n break;\n }\n\n console.log(\"We can't merge these bubbles.\");\n return _context18.abrupt(\"return\");\n\n case 17:\n _context18.next = 19;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(startTime, endTime));\n\n case 19:\n rangeBubbles = _context18.sent;\n _context18.next = 22;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(getParentBubbles({\n startTime: startTime,\n endTime: endTime\n }));\n\n case 22:\n parentBubbles = _context18.sent;\n // Calculate the tallest bubble in the selection\n depth = Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(rangeBubbles.map(function (range) {\n return range.depth;\n }))) || 1; // Calculate any changes to parent bubble depths.\n\n _context18.next = 26;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(resolveParentDepths, depth, parentBubbles);\n\n case 26:\n depthMutations = _context18.sent;\n // Deselect currently selected.\n deselectMutations = selectedRangeIds.map(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deselectRange\"]); // Create the new range.\n\n _context18.next = 30;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(createRangeAction, {\n startTime: startTime,\n endTime: endTime,\n depth: depth + 1\n });\n\n case 30:\n newRange = _context18.sent;\n _context18.next = 33;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])([].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(deselectMutations), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(depthMutations), [newRange, Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"selectRange\"])(newRange.payload.id)])));\n\n case 33:\n case \"end\":\n return _context18.stop();\n }\n }\n }, _marked18);\n}\n\nfunction splitRangeSaga(_ref9) {\n var time, ranges, itemToSplit;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function splitRangeSaga$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n time = _ref9.payload.time;\n _context19.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 3:\n ranges = _context19.sent;\n itemToSplit = Object.values(ranges).filter(function (bubble) {\n return time <= bubble.endTime && time >= bubble.startTime;\n }).sort(function (b1, b2) {\n return b1.depth - b2.depth;\n })[0];\n Object(_utils_invariant__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(function () {\n return itemToSplit && itemToSplit.id && itemToSplit.endTime;\n }, 'Unstable state: There should be a bubble at every point'); // If we wanted to implement split left, so that a new bubble would be created on the left side\n // yield put(updateRangeTime(itemToSplit.id, { startTime }));\n // yield put(createRange({ startTime, endTime: time }));\n\n _context19.next = 8;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])([Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"createRange\"])({\n startTime: time,\n endTime: itemToSplit.endTime\n }), Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(itemToSplit.id, {\n endTime: time\n })]));\n\n case 8:\n _context19.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(setIsSavedStatus);\n\n case 10:\n case \"end\":\n return _context19.stop();\n }\n }\n }, _marked19);\n}\n\nfunction deleteRangeRequest(toRemoveId) {\n var toRemoveIds, redundantSizes, toRemove, rangeList, rangeArray, remainingRanges, depthMutations, newDepthMap, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret, sizeMutations, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop2, _iterator2, _step2, _ret2;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function deleteRangeRequest$(_context22) {\n while (1) {\n switch (_context22.prev = _context22.next) {\n case 0:\n toRemoveIds = [toRemoveId]; // Removing redundant sizes first\n\n _context22.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(calculateRedundantSizes, toRemoveIds);\n\n case 3:\n redundantSizes = _context22.sent;\n // Map these Ids to a delete range action.\n toRemove = redundantSizes.map(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"deleteRange\"]); // Some useful variables.\n\n _context22.next = 7;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 7:\n rangeList = _context22.sent;\n rangeArray = Object.values(rangeList); // Create new list of bubbles\n // Run through a validation step to ensure they are of the correct level.\n\n remainingRanges = rangeArray.filter(function (range) {\n return redundantSizes.indexOf(range.id) === -1 && range.depth > 1;\n }).sort(function (a, b) {\n return a.depth === b.depth ? 0 : a.depth < b.depth ? -1 : 1;\n });\n depthMutations = [];\n newDepthMap = {}; // Loop through the remaining ranges to calculate depth changes.\n\n _iteratorNormalCompletion = true;\n _didIteratorError = false;\n _iteratorError = undefined;\n _context22.prev = 15;\n _loop =\n /*#__PURE__*/\n _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _loop() {\n var parent, rangeChildren, maxDepthOfChildren;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _loop$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n parent = _step.value;\n _context20.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(parent.startTime, parent.endTime));\n\n case 3:\n _context20.t0 = function (range) {\n return range.id !== parent.id && redundantSizes.indexOf(range.id) === -1;\n };\n\n rangeChildren = _context20.sent.filter(_context20.t0);\n\n if (rangeChildren.length) {\n _context20.next = 7;\n break;\n }\n\n return _context20.abrupt(\"return\", \"continue\");\n\n case 7:\n // Calculate the maximum depth, taking into account any changes made in this loop.\n maxDepthOfChildren = Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(rangeChildren.map(function (range) {\n return newDepthMap[range.id] || range.depth;\n }))); // Continue if there are no changes.\n\n if (!(maxDepthOfChildren + 1 === parent.depth)) {\n _context20.next = 10;\n break;\n }\n\n return _context20.abrupt(\"return\", \"continue\");\n\n case 10:\n // This indicates we have an incorrect depth,\n if (maxDepthOfChildren + 1 < parent.depth) {\n // Decrease the range if it is too much higher than children.\n newDepthMap[parent.id] = parent.depth - 1;\n depthMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"decreaseRangeDepth\"])(parent.id));\n } else {\n // Increase the range if it can't fit the children anymore.\n newDepthMap[parent.id] = parent.depth + 1;\n depthMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"increaseRangeDepth\"])(parent.id));\n }\n\n case 11:\n case \"end\":\n return _context20.stop();\n }\n }\n }, _loop);\n });\n _iterator = remainingRanges[Symbol.iterator]();\n\n case 18:\n if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {\n _context22.next = 26;\n break;\n }\n\n return _context22.delegateYield(_loop(), \"t0\", 20);\n\n case 20:\n _ret = _context22.t0;\n\n if (!(_ret === \"continue\")) {\n _context22.next = 23;\n break;\n }\n\n return _context22.abrupt(\"continue\", 23);\n\n case 23:\n _iteratorNormalCompletion = true;\n _context22.next = 18;\n break;\n\n case 26:\n _context22.next = 32;\n break;\n\n case 28:\n _context22.prev = 28;\n _context22.t1 = _context22[\"catch\"](15);\n _didIteratorError = true;\n _iteratorError = _context22.t1;\n\n case 32:\n _context22.prev = 32;\n _context22.prev = 33;\n\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n\n case 35:\n _context22.prev = 35;\n\n if (!_didIteratorError) {\n _context22.next = 38;\n break;\n }\n\n throw _iteratorError;\n\n case 38:\n return _context22.finish(35);\n\n case 39:\n return _context22.finish(32);\n\n case 40:\n // Make remaining ranges grow right (or left if that's not possible)\n sizeMutations = []; // Loop through all of the deleted ranges.\n\n _iteratorNormalCompletion2 = true;\n _didIteratorError2 = false;\n _iteratorError2 = undefined;\n _context22.prev = 44;\n _loop2 =\n /*#__PURE__*/\n _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.mark(function _loop2() {\n var deletedId, rangeToRemove, rangeChildren, parentRange, siblingRanges, lookLeftSibling, lookRightSibling, leftBubbles, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, leftBubble, rightBubbles, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, rightBubble;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function _loop2$(_context21) {\n while (1) {\n switch (_context21.prev = _context21.next) {\n case 0:\n deletedId = _step2.value;\n // Get the full range object.\n rangeToRemove = rangeList[deletedId]; // Need to check if this range has children first, children grow inside so\n // no sibling bubbles will change size in this case.\n\n _context21.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(Object(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangesBetweenTimes\"])(rangeToRemove.startTime, rangeToRemove.endTime));\n\n case 4:\n _context21.t0 = function (range) {\n return range.id !== rangeToRemove.id;\n };\n\n rangeChildren = _context21.sent.filter(_context21.t0);\n\n if (!rangeChildren.length) {\n _context21.next = 8;\n break;\n }\n\n return _context21.abrupt(\"return\", \"continue\");\n\n case 8:\n _context21.next = 10;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getDirectParentRange, rangeToRemove);\n\n case 10:\n parentRange = _context21.sent;\n\n if (!parentRange) {\n _context21.next = 23;\n break;\n }\n\n _context21.next = 14;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(getSiblingRanges, parentRange, rangeToRemove);\n\n case 14:\n siblingRanges = _context21.sent;\n lookLeftSibling = getRangeToTheLeft(siblingRanges, rangeToRemove);\n\n if (!lookLeftSibling) {\n _context21.next = 19;\n break;\n }\n\n sizeMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(lookLeftSibling.id, {\n endTime: rangeToRemove.endTime\n }));\n return _context21.abrupt(\"return\", \"continue\");\n\n case 19:\n lookRightSibling = getRangeToTheRight(siblingRanges, rangeToRemove);\n\n if (!lookRightSibling) {\n _context21.next = 23;\n break;\n }\n\n sizeMutations.push(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"updateRangeTime\"])(lookRightSibling.id, {\n startTime: rangeToRemove.startTime\n }));\n return _context21.abrupt(\"return\", \"continue\");\n\n case 23:\n // At this point we know that bubbles inside the parent won't shift to fill the space.\n // First look left to find all the bubbles that share the startTime.\n leftBubbles = rangeArray.filter(function (range) {\n return range.id !== rangeToRemove.id && (range.endTime === rangeToRemove.startTime || range.startTime === rangeToRemove.startTime);\n }); // And queue them up to be moved.\n\n if (!(canMoveBubbles(leftBubbles, rangeToRemove) && leftBubbles.length)) {\n _context21.next = 45;\n break;\n }\n\n _iteratorNormalCompletion3 = true;\n _didIteratorError3 = false;\n _iteratorError3 = undefined;\n _context21.prev = 28;\n\n for (_iterator3 = leftBubbles[Symbol.iterator](); !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n leftBubble = _step3.value;\n // Overlap bubble growing from the left.\n sizeMutations.push(overlapBubbleLeft(rangeToRemove, leftBubble));\n }\n\n _context21.next = 36;\n break;\n\n case 32:\n _context21.prev = 32;\n _context21.t1 = _context21[\"catch\"](28);\n _didIteratorError3 = true;\n _iteratorError3 = _context21.t1;\n\n case 36:\n _context21.prev = 36;\n _context21.prev = 37;\n\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n\n case 39:\n _context21.prev = 39;\n\n if (!_didIteratorError3) {\n _context21.next = 42;\n break;\n }\n\n throw _iteratorError3;\n\n case 42:\n return _context21.finish(39);\n\n case 43:\n return _context21.finish(36);\n\n case 44:\n return _context21.abrupt(\"return\", \"continue\");\n\n case 45:\n // Now we look to the right of the bubble to find bubbles that share\n // the endTime. This is only applicable when there are no bubbles\n // to the left (i.e. a bubble with startTime = 0)\n rightBubbles = rangeArray.filter(function (range) {\n return range.id !== rangeToRemove.id && (range.startTime === rangeToRemove.endTime || range.endTime === rangeToRemove.startTime);\n }); // And queue these up to be moved.\n\n if (!(canMoveBubbles(rightBubbles, rangeToRemove) && rightBubbles.length)) {\n _context21.next = 66;\n break;\n }\n\n _iteratorNormalCompletion4 = true;\n _didIteratorError4 = false;\n _iteratorError4 = undefined;\n _context21.prev = 50;\n\n for (_iterator4 = rightBubbles[Symbol.iterator](); !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n rightBubble = _step4.value;\n // Overlap bubble growing from the right.\n sizeMutations.push(overlapBubbleRight(rangeToRemove, rightBubble));\n } // continue;\n\n\n _context21.next = 58;\n break;\n\n case 54:\n _context21.prev = 54;\n _context21.t2 = _context21[\"catch\"](50);\n _didIteratorError4 = true;\n _iteratorError4 = _context21.t2;\n\n case 58:\n _context21.prev = 58;\n _context21.prev = 59;\n\n if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n _iterator4.return();\n }\n\n case 61:\n _context21.prev = 61;\n\n if (!_didIteratorError4) {\n _context21.next = 64;\n break;\n }\n\n throw _iteratorError4;\n\n case 64:\n return _context21.finish(61);\n\n case 65:\n return _context21.finish(58);\n\n case 66:\n case \"end\":\n return _context21.stop();\n }\n }\n }, _loop2, null, [[28, 32, 36, 44], [37,, 39, 43], [50, 54, 58, 66], [59,, 61, 65]]);\n });\n _iterator2 = redundantSizes[Symbol.iterator]();\n\n case 47:\n if (_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done) {\n _context22.next = 55;\n break;\n }\n\n return _context22.delegateYield(_loop2(), \"t2\", 49);\n\n case 49:\n _ret2 = _context22.t2;\n\n if (!(_ret2 === \"continue\")) {\n _context22.next = 52;\n break;\n }\n\n return _context22.abrupt(\"continue\", 52);\n\n case 52:\n _iteratorNormalCompletion2 = true;\n _context22.next = 47;\n break;\n\n case 55:\n _context22.next = 61;\n break;\n\n case 57:\n _context22.prev = 57;\n _context22.t3 = _context22[\"catch\"](44);\n _didIteratorError2 = true;\n _iteratorError2 = _context22.t3;\n\n case 61:\n _context22.prev = 61;\n _context22.prev = 62;\n\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n\n case 64:\n _context22.prev = 64;\n\n if (!_didIteratorError2) {\n _context22.next = 67;\n break;\n }\n\n throw _iteratorError2;\n\n case 67:\n return _context22.finish(64);\n\n case 68:\n return _context22.finish(61);\n\n case 69:\n _context22.next = 71;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"rangeMutations\"])([].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(toRemove), depthMutations, sizeMutations)));\n\n case 71:\n case \"end\":\n return _context22.stop();\n }\n }\n }, _marked20, null, [[15, 28, 32, 40], [33,, 35, 39], [44, 57, 61, 69], [62,, 64, 68]]);\n}\n\nfunction singleDelete(_ref10) {\n var id;\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function singleDelete$(_context23) {\n while (1) {\n switch (_context23.prev = _context23.next) {\n case 0:\n id = _ref10.payload.id;\n _context23.next = 3;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deleteRangeRequest, id);\n\n case 3:\n _context23.next = 5;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(setIsSavedStatus);\n\n case 5:\n case \"end\":\n return _context23.stop();\n }\n }\n }, _marked21);\n}\n\nfunction multiDelete(_ref11) {\n var ranges, confirmed, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, range;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function multiDelete$(_context24) {\n while (1) {\n switch (_context24.prev = _context24.next) {\n case 0:\n ranges = _ref11.payload.ranges;\n\n if (!(ranges.length > 1)) {\n _context24.next = 7;\n break;\n }\n\n _context24.next = 4;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(_index__WEBPACK_IMPORTED_MODULE_13__[\"showConfirmation\"], 'Multiple sections will be deleted. Redundant sections will be removed. Do you wish to continue?');\n\n case 4:\n confirmed = _context24.sent;\n\n if (!(confirmed === false)) {\n _context24.next = 7;\n break;\n }\n\n return _context24.abrupt(\"return\");\n\n case 7:\n _iteratorNormalCompletion5 = true;\n _didIteratorError5 = false;\n _iteratorError5 = undefined;\n _context24.prev = 10;\n _iterator5 = ranges[Symbol.iterator]();\n\n case 12:\n if (_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done) {\n _context24.next = 19;\n break;\n }\n\n range = _step5.value;\n _context24.next = 16;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(deleteRangeRequest, range);\n\n case 16:\n _iteratorNormalCompletion5 = true;\n _context24.next = 12;\n break;\n\n case 19:\n _context24.next = 25;\n break;\n\n case 21:\n _context24.prev = 21;\n _context24.t0 = _context24[\"catch\"](10);\n _didIteratorError5 = true;\n _iteratorError5 = _context24.t0;\n\n case 25:\n _context24.prev = 25;\n _context24.prev = 26;\n\n if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n _iterator5.return();\n }\n\n case 28:\n _context24.prev = 28;\n\n if (!_didIteratorError5) {\n _context24.next = 31;\n break;\n }\n\n throw _iteratorError5;\n\n case 31:\n return _context24.finish(28);\n\n case 32:\n return _context24.finish(25);\n\n case 33:\n _context24.next = 35;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(setIsSavedStatus);\n\n case 35:\n case \"end\":\n return _context24.stop();\n }\n }\n }, _marked22, null, [[10, 21, 25, 33], [26,, 28, 32]]);\n}\n\nfunction clearCustomColorsSaga() {\n var rangeList, rangeIds, _i, rangeId;\n\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function clearCustomColorsSaga$(_context25) {\n while (1) {\n switch (_context25.prev = _context25.next) {\n case 0:\n _context25.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"select\"])(_reducers_range__WEBPACK_IMPORTED_MODULE_6__[\"getRangeList\"]);\n\n case 2:\n rangeList = _context25.sent;\n rangeIds = Object.keys(rangeList);\n _i = 0;\n\n case 5:\n if (!(_i < rangeIds.length)) {\n _context25.next = 12;\n break;\n }\n\n rangeId = rangeIds[_i];\n _context25.next = 9;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"put\"])(Object(_actions_range__WEBPACK_IMPORTED_MODULE_9__[\"unsetRangeColor\"])(rangeId));\n\n case 9:\n _i++;\n _context25.next = 5;\n break;\n\n case 12:\n _context25.next = 14;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"call\"])(setIsSavedStatus);\n\n case 14:\n case \"end\":\n return _context25.stop();\n }\n }\n }, _marked23);\n}\n\nfunction rangeSaga() {\n return _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_3___default.a.wrap(function rangeSaga$(_context26) {\n while (1) {\n switch (_context26.prev = _context26.next) {\n case 0:\n _context26.next = 2;\n return Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"all\"])([Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"PREVIOUS_BUBBLE\"], previousBubble), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"NEXT_BUBBLE\"], nextBubble), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"MOVE_POINT\"], movePointSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SCHEDULE_UPDATE_RANGE\"], saveRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SELECT_RANGE\"], selectRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeLatest\"])([_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SELECT_RANGE\"], _constants_range__WEBPACK_IMPORTED_MODULE_8__[\"DESELECT_RANGE\"]], currentTimeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"DESELECT_RANGE\"], deselectRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"GROUP_RANGES\"], groupRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SPLIT_RANGE_AT\"], splitRangeSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SCHEDULE_DELETE_RANGE\"], singleDelete), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_range__WEBPACK_IMPORTED_MODULE_8__[\"SCHEDULE_DELETE_RANGES\"], multiDelete), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"SET_CURRENT_TIME\"], deselectAllRangesSaga), Object(redux_saga_effects__WEBPACK_IMPORTED_MODULE_4__[\"takeEvery\"])(_constants_project__WEBPACK_IMPORTED_MODULE_11__[\"CLEAR_CUSTOM_COLORS\"], clearCustomColorsSaga)]);\n\n case 2:\n case \"end\":\n return _context26.stop();\n }\n }\n }, _marked24);\n}\n\n//# sourceURL=webpack:///./src/sagas/range-saga.js?");
/***/ }),
@@ -11167,7 +11191,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return configureStore; });\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var redux_saga__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux-saga */ \"./node_modules/redux-saga/es/index.js\");\n/* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-persist */ \"./node_modules/redux-persist/es/index.js\");\n/* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-persist/lib/storage */ \"./node_modules/redux-persist/lib/storage/index.js\");\n/* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _undo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./undo */ \"./src/store/undo.js\");\n/* harmony import */ var _reducers_root__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reducers/root */ \"./src/reducers/root.js\");\n/* harmony import */ var _sagas_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../sagas/index */ \"./src/sagas/index.js\");\n/* harmony import */ var _components_AudioImporter_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/AudioImporter/AudioImporter.Utils */ \"./src/components/AudioImporter/AudioImporter.Utils.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../actions/viewState */ \"./src/actions/viewState.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar composeEnhancers = typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n serialize: true,\n trace: true\n}) : redux__WEBPACK_IMPORTED_MODULE_0__[\"compose\"];\nvar monitor = typeof window === 'object' && window.__SAGA_MONITOR_EXTENSION__;\nfunction configureStore(wAudio) {\n var fresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n var sagaMiddleware = Object(redux_saga__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n sagaMonitor: monitor\n });\n var persistedReducer = Object(redux_persist__WEBPACK_IMPORTED_MODULE_2__[\"persistReducer\"])({\n key: 'timeliner-1.1' + wAudio,\n storage: redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default.a\n }, _reducers_root__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n var store = Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"createStore\"])(persistedReducer, {}, composeEnhancers(Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"applyMiddleware\"])(_undo__WEBPACK_IMPORTED_MODULE_4__[\"default\"], sagaMiddleware)));\n\n if (callback) {\n store.dispatch(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_9__[\"setCallback\"])(callback));\n }\n\n var persistor = Object(redux_persist__WEBPACK_IMPORTED_MODULE_2__[\"persistStore\"])(store);\n\n if (fresh) {\n persistor.purge();\n }\n\n window.addEventListener('beforeunload', function (e) {\n if (store.getState().undoHistory.undoQueue.length) {\n var warning = 'You have unsaved changes, that will be lost if you close the window.';\n (e || window.event).returnValue = warning;\n return warning;\n }\n });\n store.runSaga = sagaMiddleware.run;\n\n store.close = function () {\n return store.dispatch(redux_saga__WEBPACK_IMPORTED_MODULE_1__[\"END\"]);\n };\n\n store.runSaga(_sagas_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]); // @todo move this to saga.\n\n if (wAudio) {\n store.dispatch(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_9__[\"setResource\"])(wAudio));\n Object(_components_AudioImporter_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(wAudio).then(function (manifest) {\n store.dispatch(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"importDocument\"])(manifest, wAudio));\n });\n }\n\n return {\n store: store,\n persistor: persistor\n };\n}\n\n//# sourceURL=webpack:///./src/store/main.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return configureStore; });\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var redux_saga__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux-saga */ \"./node_modules/redux-saga/es/index.js\");\n/* harmony import */ var redux_persist__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux-persist */ \"./node_modules/redux-persist/es/index.js\");\n/* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! redux-persist/lib/storage */ \"./node_modules/redux-persist/lib/storage/index.js\");\n/* harmony import */ var redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _undo__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./undo */ \"./src/store/undo.js\");\n/* harmony import */ var _reducers_root__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reducers/root */ \"./src/reducers/root.js\");\n/* harmony import */ var _sagas_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../sagas/index */ \"./src/sagas/index.js\");\n/* harmony import */ var _components_AudioImporter_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/AudioImporter/AudioImporter.Utils */ \"./src/components/AudioImporter/AudioImporter.Utils.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _actions_viewState__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../actions/viewState */ \"./src/actions/viewState.js\");\n\n\n\n\n\n\n\n\n\n\n\nvar composeEnhancers = typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n serialize: true,\n trace: true\n}) : redux__WEBPACK_IMPORTED_MODULE_0__[\"compose\"];\nvar monitor = typeof window === 'object' && window.__SAGA_MONITOR_EXTENSION__;\nfunction configureStore(wAudio) {\n var fresh = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var callback = arguments.length > 2 ? arguments[2] : undefined;\n var sagaMiddleware = Object(redux_saga__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n sagaMonitor: monitor\n });\n var persistedReducer = Object(redux_persist__WEBPACK_IMPORTED_MODULE_2__[\"persistReducer\"])({\n key: 'timeliner-1.1' + wAudio,\n storage: redux_persist_lib_storage__WEBPACK_IMPORTED_MODULE_3___default.a\n }, _reducers_root__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n var store = Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"createStore\"])(persistedReducer, {}, composeEnhancers(Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"applyMiddleware\"])(_undo__WEBPACK_IMPORTED_MODULE_4__[\"default\"], sagaMiddleware)));\n\n if (callback) {\n store.dispatch(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_9__[\"setCallback\"])(callback));\n }\n\n var persistor = Object(redux_persist__WEBPACK_IMPORTED_MODULE_2__[\"persistStore\"])(store);\n\n if (fresh) {\n persistor.purge();\n }\n\n window.addEventListener('beforeunload', function (e) {\n if (store.getState().undoHistory.undoQueue.length > 0 && !store.getState().project.isSaved) {\n var warning = 'You have unsaved changes, that will be lost if you close the window.';\n (e || window.event).returnValue = warning;\n return warning;\n }\n });\n store.runSaga = sagaMiddleware.run;\n\n store.close = function () {\n return store.dispatch(redux_saga__WEBPACK_IMPORTED_MODULE_1__[\"END\"]);\n };\n\n store.runSaga(_sagas_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"]); // @todo move this to saga.\n\n if (wAudio) {\n store.dispatch(Object(_actions_viewState__WEBPACK_IMPORTED_MODULE_9__[\"setResource\"])(wAudio));\n Object(_components_AudioImporter_AudioImporter_Utils__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(wAudio).then(function (manifest) {\n store.dispatch(Object(_actions_project__WEBPACK_IMPORTED_MODULE_8__[\"importDocument\"])(manifest, wAudio));\n });\n }\n\n return {\n store: store,\n persistor: persistor\n };\n}\n\n//# sourceURL=webpack:///./src/store/main.js?");
/***/ }),
@@ -11179,7 +11203,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux-undo-redo */ \"./node_modules/redux-undo-redo/lib/index.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(redux_undo_redo__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _constants_markers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants/markers */ \"./src/constants/markers.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../actions/markers */ \"./src/actions/markers.js\");\n\n\nvar _revertingActions;\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(redux_undo_redo__WEBPACK_IMPORTED_MODULE_1__[\"createUndoMiddleware\"])({\n revertingActions: (_revertingActions = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_TITLE\"], {\n action: function action(_action, title) {\n return Object(_actions_project__WEBPACK_IMPORTED_MODULE_4__[\"setTitle\"])(title);\n },\n createArgs: function createArgs(state) {\n return state.project.title;\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_DESCRIPTION\"], {\n action: function action(_action2, description) {\n return Object(_actions_project__WEBPACK_IMPORTED_MODULE_4__[\"setDescription\"])(description);\n },\n createArgs: function createArgs(state) {\n return state.project.description;\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_LANGUAGE\"], {\n action: function action(_action3, language) {\n return Object(_actions_project__WEBPACK_IMPORTED_MODULE_4__[\"setLanguage\"])(language);\n },\n createArgs: function createArgs(state) {\n return state.project.language;\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_range__WEBPACK_IMPORTED_MODULE_3__[\"UPDATE_RANGE\"], {\n action: function action(_action4, range) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_3__[\"UPDATE_RANGE\"],\n payload: range\n };\n },\n createArgs: function createArgs(state, action) {\n return state.range[action.payload.id];\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_range__WEBPACK_IMPORTED_MODULE_3__[\"RANGE_MUTATION\"], {\n action: function action(_action5, undoAction) {\n return undoAction;\n },\n createArgs: function createArgs(state, action) {\n return Object(_reducers_range__WEBPACK_IMPORTED_MODULE_5__[\"undo\"])(state.range, action);\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"CREATE_MARKER\"], {\n action: function action(_action6) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"deleteMarker\"])(_action6.payload.marker.id);\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"UPDATE_MARKER\"], {\n action: function action(_action7, marker) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"updateMarker\"])(_action7.payload.id, marker);\n },\n createArgs: function createArgs(state, action) {\n return state.markers.list[action.payload.id];\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"DELETE_MARKER\"], {\n action: function action(_action8, marker) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"importMarkers\"])([marker]);\n },\n createArgs: function createArgs(state, action) {\n return state.markers.list[action.payload.id];\n }\n }), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"DELETE_MARKERS\"], {\n action: function action(_action9, markers) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"importMarkers\"])(markers);\n },\n createArgs: function createArgs(state, action) {\n return action.payload.ids.map(function (markerId) {\n return state.markers.list[markerId];\n });\n }\n }), _revertingActions)\n}));\n\n//# sourceURL=webpack:///./src/store/undo.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux-undo-redo */ \"./node_modules/redux-undo-redo/lib/index.js\");\n/* harmony import */ var redux_undo_redo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(redux_undo_redo__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _actions_project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../actions/project */ \"./src/actions/project.js\");\n/* harmony import */ var _reducers_range__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reducers/range */ \"./src/reducers/range.js\");\n/* harmony import */ var _constants_markers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants/markers */ \"./src/constants/markers.js\");\n/* harmony import */ var _actions_markers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../actions/markers */ \"./src/actions/markers.js\");\n\n\nvar _revertingActions;\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(redux_undo_redo__WEBPACK_IMPORTED_MODULE_1__[\"createUndoMiddleware\"])({\n revertingActions: (_revertingActions = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_TITLE\"], {\n action: function action(_action, title) {\n return Object(_actions_project__WEBPACK_IMPORTED_MODULE_4__[\"setTitle\"])(title);\n },\n createArgs: function createArgs(state) {\n return state.project.title;\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_DESCRIPTION\"], {\n action: function action(_action2, description) {\n return Object(_actions_project__WEBPACK_IMPORTED_MODULE_4__[\"setDescription\"])(description);\n },\n createArgs: function createArgs(state) {\n return state.project.description;\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_project__WEBPACK_IMPORTED_MODULE_2__[\"SET_LANGUAGE\"], {\n action: function action(_action3, language) {\n return Object(_actions_project__WEBPACK_IMPORTED_MODULE_4__[\"setLanguage\"])(language);\n },\n createArgs: function createArgs(state) {\n return state.project.language;\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_range__WEBPACK_IMPORTED_MODULE_3__[\"UPDATE_RANGE\"], {\n action: function action(_action4, range) {\n return {\n type: _constants_range__WEBPACK_IMPORTED_MODULE_3__[\"UPDATE_RANGE\"],\n payload: range\n };\n },\n createArgs: function createArgs(state, action) {\n return state.range[action.payload.id];\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_range__WEBPACK_IMPORTED_MODULE_3__[\"RANGE_MUTATION\"], {\n action: function action(_action5, undoAction) {\n return undoAction;\n },\n createArgs: function createArgs(state, action) {\n return Object(_reducers_range__WEBPACK_IMPORTED_MODULE_5__[\"undo\"])(state.range, action);\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"CREATE_MARKER\"], {\n action: function action(_action6) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"deleteMarker\"])(_action6.payload.marker.id);\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"UPDATE_MARKER\"], {\n action: function action(_action7, marker) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"updateMarker\"])(_action7.payload.id, marker);\n },\n createArgs: function createArgs(state, action) {\n return state.markers.list[action.payload.id];\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"DELETE_MARKER\"], {\n action: function action(_action8, marker) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"importMarkers\"])([marker]);\n },\n createArgs: function createArgs(state, action) {\n return state.markers.list[action.payload.id];\n }\n }), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_revertingActions, _constants_markers__WEBPACK_IMPORTED_MODULE_6__[\"DELETE_MARKERS\"], {\n action: function action(_action9, markers) {\n return Object(_actions_markers__WEBPACK_IMPORTED_MODULE_7__[\"importMarkers\"])(markers);\n },\n createArgs: function createArgs(state, action) {\n return action.payload.ids.map(function (markerId) {\n return state.markers.list[markerId];\n });\n }\n }), _revertingActions)\n}));\n\n//# sourceURL=webpack:///./src/store/undo.js?");
/***/ }),
@@ -11227,7 +11251,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseMarkers\", function() { return parseMarkers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadProjectState\", function() { return loadProjectState; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _containers_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../containers/AuthResource/AuthResource */ \"./src/containers/AuthResource/AuthResource.js\");\n/* harmony import */ var _generateId__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./generateId */ \"./src/utils/generateId.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! query-string */ \"./node_modules/query-string/index.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\n\n // Constants\n\nvar BACKGROUND_COLOUR_PROPERTY = 'tl:backgroundColour';\nvar TEXT_COLOUR_PROPERTY = 'tl:textColour'; // Helpers\n\n/**\n * seconds to microseconds\n * @param {String|Number} s seconds to convert\n * @return {Number} milliseconds\n */\n\nvar sToMs = function sToMs(s) {\n return parseFloat(s) * 1000;\n};\n/**\n * returns localised property\n * @param {Object} resource\n * @param {String} locale default en\n */\n\n\nvar getLocalisedResource = function getLocalisedResource(resource) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';\n\n if (!resource) {\n return '';\n } else {\n return (resource[locale] || resource['@none'] || ['']).join('');\n }\n};\n/**\n * get custom bubble colour\n * @param {Object} range the range may has the background property\n */\n\n\nvar getColour = function getColour(range) {\n return range ? range[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].COLOUR] || '' : '';\n};\n/**\n * converts url hash parameters to an object\n * @param {String} url input url\n * @returns {Object} the key-value pairs converted to object property-values.\n */\n\n\nvar hashParamsToObj = function hashParamsToObj(url) {\n return (url.split('#')[1] || '').split('&').reduce(function (params, item) {\n var _item$split = item.split('='),\n _item$split2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_item$split, 2),\n k = _item$split2[0],\n v = _item$split2[1];\n\n if (v !== undefined) {\n params[decodeURIComponent(k)] = decodeURIComponent(v);\n }\n\n return params;\n }, {});\n};\n/**\n * convert a comma separated time range to ms\n * @param {String} rangeStr\n */\n\n\nvar parseTimeRange = function parseTimeRange(rangeStr) {\n var _ref;\n\n var _rangeStr$split = rangeStr.split(','),\n _rangeStr$split2 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_rangeStr$split, 2),\n startString = _rangeStr$split2[0],\n endString = _rangeStr$split2[1];\n\n return _ref = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME, sToMs(startString)), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME, endString ? sToMs(endString) : sToMs(startString) + 1), _ref;\n};\n\nvar getLabel = function getLabel(t, defaultValue) {\n var value = Object.values(t)[0];\n\n if (value && value.length) {\n return value[0] || defaultValue;\n }\n\n return defaultValue;\n};\n\nvar parseMarkers = function parseMarkers(manifest) {\n var annotationPages = manifest.annotations;\n var annotations = annotationPages && annotationPages[0] && annotationPages[0].items ? annotationPages[0].items : null;\n\n if (!annotations) {\n return [];\n }\n\n return annotations.map(function (annotation) {\n return {\n id: annotation.id,\n time: annotation.target && annotation.target.selector && annotation.target.selector.t ? annotation.target.selector.t * 1000 : null,\n label: getLabel(annotation.label, 'Untitled marker'),\n summary: annotation.body && annotation.body.value ? annotation.body.value : annotation.body[0] && annotation.body[0].value ? annotation.body[0].value : ''\n };\n }).filter(function (annotation) {\n return annotation.time;\n });\n};\n/**\n * @param {Object} canvas - IIIFCanvas javascript object\n * @returns array all audio annotations url, start and end time\n */\n\nvar getAudioAnnotations = function getAudioAnnotations(canvas) {\n if (!canvas) {\n return [];\n }\n\n var annotations = canvas.items ? canvas.items.reduce(function (acc, annotationPage) {\n if (annotationPage.items) {\n return acc.concat(annotationPage.items);\n } else {\n return acc;\n }\n }, []) : [];\n return annotations.filter(function (annotation) {\n return annotation.motivation === 'painting' && annotation.body && (annotation.body.type === 'Audio' || annotation.body.type === 'Sound' || annotation.body.type === 'Video') || annotation.body && annotation.body.type === 'Choice';\n }).map(function (annotation) {\n var hashParams = hashParamsToObj(annotation.target);\n var audioDescriptor = {};\n\n if (hashParams.t) {\n Object.assign(audioDescriptor, parseTimeRange(hashParams.t));\n }\n\n var body = Object(_containers_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_8__[\"resolveAvResource\"])(annotation);\n audioDescriptor.url = body.id || body['@id'];\n\n if (body && body.service) {\n audioDescriptor.service = body.service;\n }\n\n return audioDescriptor;\n });\n};\n/**\n * Simplified version of the canvas processor:\n * - does not deal with multiple audio annotation on a canvas;\n * - does not handle choices with for different audio file formats;\n * - does not load av service documents;\n * @param {Object} canvas -\n */\n\n\nvar processCanvas = function processCanvas(canvas) {\n var _ref2;\n\n var audioAnnotations = getAudioAnnotations(canvas);\n return audioAnnotations.length > 0 ? (_ref2 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref2, _constants_canvas__WEBPACK_IMPORTED_MODULE_5__[\"CANVAS\"].URL, audioAnnotations[0].url), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref2, \"service\", audioAnnotations[0].service), _ref2) : Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _constants_canvas__WEBPACK_IMPORTED_MODULE_5__[\"CANVAS\"].ERROR, {\n code: 6,\n description: 'Manifest does not contain audio annotations'\n });\n};\n\nvar extendRange = function extendRange(parentRange, child) {\n parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME] = Math.min(parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME], child[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME]);\n parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME] = Math.max(parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME], child[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME]);\n parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH] = Math.max(child[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH] + 1, parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH] || 1);\n};\n\nvar processLevel = function processLevel(structure) {\n if (structure.type === 'Canvas') {\n var hashParams = hashParamsToObj(structure.id);\n return Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, parseTimeRange(hashParams.t), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH, 0));\n } else if (structure.type === 'Range') {\n var _range;\n\n var range = (_range = {\n id: structure.id\n }, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].LABEL, getLocalisedResource(structure.label) || ''), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].SUMMARY, getLocalisedResource(structure.summary) || ''), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME, Number.MAX_SAFE_INTEGER), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME, Number.MIN_SAFE_INTEGER), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH, 1), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].COLOUR, structure[BACKGROUND_COLOUR_PROPERTY]), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].WHITE_TEXT, ['#fff', '#fffff', 'white', 'rgb(255, 255, 255)', 'rgba(255, 255, 255, 1)'].indexOf(structure[TEXT_COLOUR_PROPERTY]) !== -1), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].IS_SELECTED, false), _range);\n var ranges = [];\n structure.items.forEach(function (struct) {\n var result = processLevel(struct);\n\n if (struct.type === 'Canvas') {\n extendRange(range, result);\n } else if (struct.type === 'Range') {\n result.forEach(function (childRange) {\n if (childRange) {\n extendRange(range, childRange);\n }\n });\n ranges.push.apply(ranges, result);\n }\n });\n return [range].concat(ranges);\n }\n};\n\nvar processStructures = function processStructures(manifest) {\n var allStructures = (manifest.structures || []).map(function (structure) {\n return processLevel(structure);\n });\n\n if (manifest.items.length > 1) {\n console.warn('Timeliner does not have full support for multi-canvas elements');\n }\n\n var finalRanges = Array.prototype.concat.apply([], allStructures);\n var startMin = Math.min.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(finalRanges.map(function (range) {\n return range.startTime;\n })));\n var endMax = Math.max.apply(Math, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(finalRanges.map(function (range) {\n return range.endTime;\n })));\n var canvas = manifest.items[0];\n\n if (canvas.duration && (startMin !== 0 || endMax !== canvas.duration * 1000)) {\n console.log('Unstable state, sections/ranges must go from start to finish', {\n startMin: startMin,\n endMax: endMax,\n canvasDuration: canvas.duration\n });\n return [Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"DEFAULT_RANGE\"], {\n id: Object(_generateId__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(),\n startTime: 0,\n endTime: canvas.duration * 1000\n })];\n }\n\n return finalRanges.reduce(function (ranges, range) {\n if (range) {\n var colour = getColour(range);\n\n if (colour) {\n range[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].COLOUR] = colour;\n }\n\n ranges[range.id] = range;\n }\n\n return ranges;\n }, {});\n};\n\nvar mapSettings = function mapSettings(iiifSettings) {\n return Object.entries(iiifSettings || {}).reduce(function (settings, _ref4) {\n var _ref5 = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_ref4, 2),\n rdfKey = _ref5[0],\n value = _ref5[1];\n\n var key = rdfKey.split(':')[1];\n settings[key] = value;\n return settings;\n }, {});\n};\n\nvar manifestToProject = function manifestToProject(manifest) {\n var _objectSpread3;\n\n return Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((_objectSpread3 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].DESCRIPTION, getLocalisedResource(manifest.summary) || ''), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].TITLE, getLocalisedResource(manifest.label) || ''), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].HOMEPAGE, getHomepage(manifest)), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].HOMEPAGE_LABEL, getHomepageLabel(manifest)), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].LOADED_JSON, manifest), _objectSpread3), mapSettings(manifest[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_4__[\"RDF_NAMESPACE\"], \":settings\")]));\n};\n\nfunction getHomepage(manifest) {\n return manifest && manifest.homepage && manifest.homepage.id ? manifest.homepage.id : null;\n}\n\nfunction getHomepageLabel(manifest) {\n return manifest && manifest.homepage && manifest.homepage.label ? getLocalisedResource(manifest.homepage.label) : null;\n}\n\nfunction getDuration(manifest) {\n if (manifest.items && manifest.items[0] && manifest.items[0].duration) {\n return sToMs(manifest.items[0].duration);\n }\n\n return manifest && manifest.items && manifest.items[0] && manifest.items[0].items && manifest.items[0].items[0] && manifest.items[0].items[0].items && manifest.items[0].items[0].items[0] && manifest.items[0].items[0].items[0].body && manifest.items[0].items[0].items[0].body.duration ? sToMs(manifest.items[0].items[0].items[0].body.duration) : 0;\n}\n\nfunction getStartTime(manifest) {\n var selector = manifest && manifest.items && manifest.items[0] && manifest.items[0].items && manifest.items[0].items[0] && manifest.items[0].items[0].items && manifest.items[0].items[0].items[0] && manifest.items[0].items[0].items[0].body && manifest.items[0].items[0].items[0].body.id;\n\n if (selector && selector.indexOf('#') !== -1) {\n var _qs$parse = query_string__WEBPACK_IMPORTED_MODULE_10__[\"parse\"](selector.split('#')[1]),\n t = _qs$parse.t;\n\n if (!t) {\n return 0;\n }\n\n if (t.indexOf(',') === -1) {\n console.warn('Time points cannot be used as a range for a resource');\n return 0;\n }\n\n return sToMs(parseFloat(t.split(',')[0]) || 0);\n }\n\n return 0;\n}\n\nvar manifestToViewState = function manifestToViewState(manifest) {\n var _ref6;\n\n var startTime = getStartTime(manifest);\n return _ref6 = {}, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].RUNTIME, getDuration(manifest)), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].IS_IMPORT_OPEN, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].IS_SETTINGS_OPEN, false), Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].START_TIME, startTime), _ref6;\n};\n\nvar loadProjectState = function loadProjectState(manifest, source) {\n return {\n project: manifestToProject(manifest),\n canvas: processCanvas(manifest.items ? manifest.items[0] : null),\n range: processStructures(manifest),\n viewState: manifestToViewState(manifest),\n source: source\n };\n};\n\n//# sourceURL=webpack:///./src/utils/iiifLoader.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseMarkers\", function() { return parseMarkers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"loadProjectState\", function() { return loadProjectState; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n/* harmony import */ var _constants_canvas__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../constants/canvas */ \"./src/constants/canvas.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_viewState__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../constants/viewState */ \"./src/constants/viewState.js\");\n/* harmony import */ var _containers_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../containers/AuthResource/AuthResource */ \"./src/containers/AuthResource/AuthResource.js\");\n/* harmony import */ var _generateId__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./generateId */ \"./src/utils/generateId.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! query-string */ \"./node_modules/query-string/index.js\");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\n\n // Constants\n\nvar BACKGROUND_COLOUR_PROPERTY = 'tl:backgroundColour';\nvar TEXT_COLOUR_PROPERTY = 'tl:textColour'; // Helpers\n\n/**\n * seconds to microseconds\n * @param {String|Number} s seconds to convert\n * @return {Number} milliseconds\n */\n\nvar sToMs = function sToMs(s) {\n return parseFloat(s) * 1000;\n};\n/**\n * returns localised property\n * @param {Object} resource\n * @param {String} locale default en\n */\n\n\nvar getLocalisedResource = function getLocalisedResource(resource) {\n var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';\n\n if (!resource) {\n return '';\n } else {\n return (resource[locale] || resource['@none'] || ['']).join('');\n }\n};\n/**\n * get custom bubble colour\n * @param {Object} range the range may has the background property\n */\n\n\nvar getColour = function getColour(range) {\n return range ? range[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].COLOUR] || '' : '';\n};\n/**\n * converts url hash parameters to an object\n * @param {String} url input url\n * @returns {Object} the key-value pairs converted to object property-values.\n */\n\n\nvar hashParamsToObj = function hashParamsToObj(url) {\n return (url.split('#')[1] || '').split('&').reduce(function (params, item) {\n var _item$split = item.split('='),\n _item$split2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_item$split, 2),\n k = _item$split2[0],\n v = _item$split2[1];\n\n if (v !== undefined) {\n params[decodeURIComponent(k)] = decodeURIComponent(v);\n }\n\n return params;\n }, {});\n};\n/**\n * convert a comma separated time range to ms\n * @param {String} rangeStr\n */\n\n\nvar parseTimeRange = function parseTimeRange(rangeStr) {\n var _ref;\n\n var _rangeStr$split = rangeStr.split(','),\n _rangeStr$split2 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_rangeStr$split, 2),\n startString = _rangeStr$split2[0],\n endString = _rangeStr$split2[1];\n\n return _ref = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME, sToMs(startString)), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME, endString ? sToMs(endString) : sToMs(startString) + 1), _ref;\n};\n\nvar getLabel = function getLabel(t, defaultValue) {\n var value = Object.values(t)[0];\n\n if (value && value.length) {\n return value[0] || defaultValue;\n }\n\n return defaultValue;\n};\n\nvar parseMarkers = function parseMarkers(manifest) {\n var annotationPages = manifest.annotations;\n var annotations = annotationPages && annotationPages[0] && annotationPages[0].items ? annotationPages[0].items : null;\n\n if (!annotations) {\n return [];\n }\n\n return annotations.map(function (annotation) {\n return {\n id: annotation.id,\n time: annotation.target && annotation.target.selector && annotation.target.selector.t ? annotation.target.selector.t * 1000 : null,\n label: getLabel(annotation.label, 'Untitled marker'),\n summary: annotation.body && annotation.body.value ? annotation.body.value : annotation.body[0] && annotation.body[0].value ? annotation.body[0].value : ''\n };\n }).filter(function (annotation) {\n return annotation.time;\n });\n};\n/**\n * @param {Object} canvas - IIIFCanvas javascript object\n * @returns array all resource annotations url, start and end time\n */\n\nvar getResourceAnnotations = function getResourceAnnotations(canvas) {\n if (!canvas) {\n return [];\n }\n\n var annotations = canvas.items ? canvas.items.reduce(function (acc, annotationPage) {\n if (annotationPage.items) {\n return acc.concat(annotationPage.items);\n } else {\n return acc;\n }\n }, []) : [];\n return annotations.filter(function (annotation) {\n return annotation.motivation === 'painting' && annotation.body && (annotation.body.type === 'Audio' || annotation.body.type === 'Sound' || annotation.body.type === 'Video') || annotation.body && annotation.body.type === 'Choice';\n }).map(function (annotation) {\n var hashParams = hashParamsToObj(annotation.target);\n var mediaDescriptor = {};\n\n if (hashParams.t) {\n Object.assign(mediaDescriptor, parseTimeRange(hashParams.t));\n }\n\n var body = Object(_containers_AuthResource_AuthResource__WEBPACK_IMPORTED_MODULE_8__[\"resolveAvResource\"])(annotation);\n mediaDescriptor.url = body.id || body['@id'];\n mediaDescriptor.isVideo = body.type === 'Video' ? true : false;\n\n if (body && body.service) {\n mediaDescriptor.service = body.service;\n }\n\n return mediaDescriptor;\n });\n};\n/**\n * Simplified version of the canvas processor:\n * - does not deal with multiple resource annotation on a canvas;\n * - does not handle choices with for different audio/video file formats;\n * - does not load av service documents;\n * @param {Object} canvas -\n */\n\n\nvar processCanvas = function processCanvas(canvas) {\n var _ref2;\n\n var resourceAnnotations = getResourceAnnotations(canvas);\n return resourceAnnotations.length > 0 ? (_ref2 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref2, _constants_canvas__WEBPACK_IMPORTED_MODULE_5__[\"CANVAS\"].URL, resourceAnnotations[0].url), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref2, _constants_canvas__WEBPACK_IMPORTED_MODULE_5__[\"CANVAS\"].IS_VIDEO, resourceAnnotations[0].isVideo), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref2, \"service\", resourceAnnotations[0].service), _ref2) : Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _constants_canvas__WEBPACK_IMPORTED_MODULE_5__[\"CANVAS\"].ERROR, {\n code: 6,\n description: 'Manifest does not contain audio/video annotations'\n });\n};\n\nvar extendRange = function extendRange(parentRange, child) {\n parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME] = Math.min(parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME], child[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME]);\n parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME] = Math.max(parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME], child[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME]);\n parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH] = Math.max(child[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH] + 1, parentRange[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH] || 1);\n};\n\nvar processLevel = function processLevel(structure) {\n if (structure.type === 'Canvas') {\n var hashParams = hashParamsToObj(structure.id);\n return Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, parseTimeRange(hashParams.t), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH, 0));\n } else if (structure.type === 'Range') {\n var _range;\n\n var range = (_range = {\n id: structure.id\n }, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].LABEL, getLocalisedResource(structure.label) || ''), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].SUMMARY, getLocalisedResource(structure.summary) || ''), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].START_TIME, Number.MAX_SAFE_INTEGER), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].END_TIME, Number.MIN_SAFE_INTEGER), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].DEPTH, 1), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].COLOUR, structure[BACKGROUND_COLOUR_PROPERTY]), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].WHITE_TEXT, ['#fff', '#fffff', 'white', 'rgb(255, 255, 255)', 'rgba(255, 255, 255, 1)'].indexOf(structure[TEXT_COLOUR_PROPERTY]) !== -1), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_range, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].IS_SELECTED, false), _range);\n var ranges = [];\n structure.items.forEach(function (struct) {\n var result = processLevel(struct);\n\n if (struct.type === 'Canvas') {\n extendRange(range, result);\n } else if (struct.type === 'Range') {\n result.forEach(function (childRange) {\n if (childRange) {\n extendRange(range, childRange);\n }\n });\n ranges.push.apply(ranges, result);\n }\n });\n return [range].concat(ranges);\n }\n};\n\nvar processStructures = function processStructures(manifest) {\n var allStructures = (manifest.structures || []).map(function (structure) {\n return processLevel(structure);\n });\n\n if (manifest.items.length > 1) {\n console.warn('Timeliner does not have full support for multi-canvas elements');\n }\n\n var finalRanges = Array.prototype.concat.apply([], allStructures);\n var startMin = Math.min.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(finalRanges.map(function (range) {\n return range.startTime;\n })));\n var endMax = Math.max.apply(Math, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(finalRanges.map(function (range) {\n return range.endTime;\n })));\n var canvas = manifest.items[0];\n\n if (canvas.duration && (startMin !== 0 || endMax !== canvas.duration * 1000)) {\n console.log('Unstable state, sections/ranges must go from start to finish', {\n startMin: startMin,\n endMax: endMax,\n canvasDuration: canvas.duration\n });\n return [Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, _constants_range__WEBPACK_IMPORTED_MODULE_6__[\"DEFAULT_RANGE\"], {\n id: Object(_generateId__WEBPACK_IMPORTED_MODULE_9__[\"default\"])(),\n startTime: 0,\n endTime: canvas.duration * 1000\n })];\n }\n\n return finalRanges.reduce(function (ranges, range) {\n if (range) {\n var colour = getColour(range);\n\n if (colour) {\n range[_constants_range__WEBPACK_IMPORTED_MODULE_6__[\"RANGE\"].COLOUR] = colour;\n }\n\n ranges[range.id] = range;\n }\n\n return ranges;\n }, {});\n};\n\nvar processPoster = function processPoster(manifest) {\n return manifest.thumbnail ? manifest.thumbnail[0].id : '';\n};\n\nvar mapSettings = function mapSettings(iiifSettings) {\n return Object.entries(iiifSettings || {}).reduce(function (settings, _ref4) {\n var _ref5 = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(_ref4, 2),\n rdfKey = _ref5[0],\n value = _ref5[1];\n\n var key = rdfKey.split(':')[1];\n settings[key] = value;\n return settings;\n }, {});\n};\n\nvar manifestToProject = function manifestToProject(manifest) {\n var _objectSpread3;\n\n return Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])((_objectSpread3 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].DESCRIPTION, getLocalisedResource(manifest.summary) || ''), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].TITLE, getLocalisedResource(manifest.label) || ''), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].HOMEPAGE, getHomepage(manifest)), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].HOMEPAGE_LABEL, getHomepageLabel(manifest)), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].LOADED_JSON, manifest), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_objectSpread3, _constants_project__WEBPACK_IMPORTED_MODULE_4__[\"PROJECT\"].IS_CHANGED, true), _objectSpread3), mapSettings(manifest[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_4__[\"RDF_NAMESPACE\"], \":settings\")]));\n};\n\nfunction getHomepage(manifest) {\n return manifest && manifest.homepage && manifest.homepage.id ? manifest.homepage.id : null;\n}\n\nfunction getHomepageLabel(manifest) {\n return manifest && manifest.homepage && manifest.homepage.label ? getLocalisedResource(manifest.homepage.label) : null;\n}\n\nfunction getDuration(manifest) {\n if (manifest.items && manifest.items[0] && manifest.items[0].duration) {\n return sToMs(manifest.items[0].duration);\n }\n\n return manifest && manifest.items && manifest.items[0] && manifest.items[0].items && manifest.items[0].items[0] && manifest.items[0].items[0].items && manifest.items[0].items[0].items[0] && manifest.items[0].items[0].items[0].body && manifest.items[0].items[0].items[0].body.duration ? sToMs(manifest.items[0].items[0].items[0].body.duration) : 0;\n}\n\nfunction getStartTime(manifest) {\n var selector = manifest && manifest.items && manifest.items[0] && manifest.items[0].items && manifest.items[0].items[0] && manifest.items[0].items[0].items && manifest.items[0].items[0].items[0] && manifest.items[0].items[0].items[0].body && manifest.items[0].items[0].items[0].body.id;\n\n if (selector && selector.indexOf('#') !== -1) {\n var _qs$parse = query_string__WEBPACK_IMPORTED_MODULE_10__[\"parse\"](selector.split('#')[1]),\n t = _qs$parse.t;\n\n if (!t) {\n return 0;\n }\n\n if (t.indexOf(',') === -1) {\n console.warn('Time points cannot be used as a range for a resource');\n return 0;\n }\n\n return sToMs(parseFloat(t.split(',')[0]) || 0);\n }\n\n return 0;\n}\n\nvar manifestToViewState = function manifestToViewState(manifest) {\n var _ref6;\n\n var startTime = getStartTime(manifest);\n return _ref6 = {}, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].RUNTIME, getDuration(manifest)), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].IS_IMPORT_OPEN, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].IS_SETTINGS_OPEN, false), Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_ref6, _constants_viewState__WEBPACK_IMPORTED_MODULE_7__[\"VIEWSTATE\"].START_TIME, startTime), _ref6;\n};\n\nvar loadProjectState = function loadProjectState(manifest, source) {\n return {\n project: manifestToProject(manifest),\n canvas: processCanvas(manifest.items ? manifest.items[0] : null),\n poster: processPoster(manifest),\n range: processStructures(manifest),\n viewState: manifestToViewState(manifest),\n source: source\n };\n};\n\n//# sourceURL=webpack:///./src/utils/iiifLoader.js?");
/***/ }),
@@ -11239,7 +11263,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getProjectSettings\", function() { return getProjectSettings; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\n\n\n\n\nvar toSeconds = function toSeconds(msValue) {\n return msValue / 1000;\n};\n\nvar exportLevel = function exportLevel(bubble, parentChildren, canvasId, languageCode) {\n var range = {\n id: bubble.id,\n type: 'Range',\n label: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, languageCode, [bubble.label])\n };\n\n if (bubble.summary !== '') {\n range.summary = Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, languageCode, [bubble.summary]);\n }\n\n if (bubble.hasOwnProperty(_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].COLOUR) && bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].COLOUR]) {\n range[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"RDF_NAMESPACE\"], \":backgroundColour\")] = bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].COLOUR];\n }\n\n if (bubble.hasOwnProperty(_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].WHITE_TEXT) && bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].WHITE_TEXT]) {\n range[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"RDF_NAMESPACE\"], \":textColour\")] = '#fff';\n }\n\n if (bubble.hasOwnProperty('children')) {\n range.items = [];\n bubble.children.forEach(function (child) {\n return exportLevel(child, range.items, canvasId, languageCode);\n });\n } else {\n var canvasStartTime = toSeconds(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME]);\n var canvasEndTime = toSeconds(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME]);\n range.items = [{\n type: 'Canvas',\n id: \"\".concat(canvasId, \"#t=\").concat(canvasStartTime, \",\").concat(canvasEndTime)\n }];\n }\n\n parentChildren.push(range);\n};\n\nvar exportMarkers = function exportMarkers(markers, id, lang) {\n return Object.keys(markers.list).length ? [{\n type: 'AnnotationPage',\n items: Object.values(markers.list).sort(function (a, b) {\n return a.time - b.time;\n }).map(function (marker) {\n return {\n id: marker.id,\n type: 'Annotation',\n label: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, lang, [marker.label]),\n body: {\n type: 'TextualBody',\n value: marker.summary || '',\n format: 'text/plain',\n language: lang\n },\n target: {\n type: 'SpecificResource',\n source: id,\n selector: {\n type: 'PointSelector',\n t: toSeconds(marker.time)\n }\n }\n };\n })\n }] : [];\n};\n\nvar exportRanges = function exportRanges(range, canvasId, languageCode) {\n var bubbles = JSON.parse(JSON.stringify(Object.values(range.list))) // making sure the big\n .sort(function (a, b) {\n return b[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] - b[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME] - (a[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] - a[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME]);\n });\n bubbles.forEach(function (bubble, idx) {\n var possibleParents = bubbles.slice(0, idx).reverse();\n possibleParents.some(function (parentBubble) {\n if (parentBubble.id !== bubble.id && parentBubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] >= bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] && parentBubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME] <= bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME]) {\n bubble.parent = parentBubble;\n\n if (parentBubble.hasOwnProperty('children')) {\n parentBubble.children.push(bubble);\n } else {\n parentBubble.children = [bubble];\n }\n\n return true;\n }\n });\n });\n var ranges = [];\n bubbles.forEach(function (bubble) {\n if (!bubble.parent) {\n exportLevel(bubble, ranges, canvasId, languageCode);\n }\n });\n return ranges;\n};\n\nvar getProjectSettings = function getProjectSettings(project) {\n return _constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT_SETTINGS_KEYS\"].reduce(function (settings, key) {\n settings[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"RDF_NAMESPACE\"], \":\").concat(key)] = project[key];\n return settings;\n }, {});\n};\n\nvar getProjectMetadata = function getProjectMetadata(project) {\n return {\n label: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE], [project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].TITLE]]),\n summary: Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE], [project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].DESCRIPTION]])\n };\n};\n\nvar exporter = function exporter(state) {\n return Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.project.loadedJson, Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n structures: exportRanges(state.range, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LOADED_JSON].items[0].id, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE]),\n annotations: exportMarkers(state.markers, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LOADED_JSON].items[0].id, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE])\n }, _constants_project__WEBPACK_IMPORTED_MODULE_3__[\"SETTINGS_ATTRIBUTE\"], getProjectSettings(state.project)), getProjectMetadata(state.project));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (exporter);\n\n//# sourceURL=webpack:///./src/utils/iiifSaver.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getProjectSettings\", function() { return getProjectSettings; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _constants_range__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/range */ \"./src/constants/range.js\");\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\n\n\n\n\nvar toSeconds = function toSeconds(msValue) {\n return msValue / 1000;\n};\n\nvar exportLevel = function exportLevel(bubble, parentChildren, canvasId, languageCode) {\n var range = {\n id: bubble.id,\n type: 'Range',\n label: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, languageCode, [bubble.label])\n };\n\n if (bubble.summary !== '') {\n range.summary = Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, languageCode, [bubble.summary]);\n }\n\n if (bubble.hasOwnProperty(_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].COLOUR) && bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].COLOUR]) {\n range[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"RDF_NAMESPACE\"], \":backgroundColour\")] = bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].COLOUR];\n }\n\n if (bubble.hasOwnProperty(_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].WHITE_TEXT) && bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].WHITE_TEXT]) {\n range[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"RDF_NAMESPACE\"], \":textColour\")] = '#fff';\n }\n\n if (bubble.hasOwnProperty('children')) {\n range.items = [];\n bubble.children.forEach(function (child) {\n return exportLevel(child, range.items, canvasId, languageCode);\n });\n } else {\n var canvasStartTime = toSeconds(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME]);\n var canvasEndTime = toSeconds(bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME]);\n range.items = [{\n type: 'Canvas',\n id: \"\".concat(canvasId, \"#t=\").concat(canvasStartTime, \",\").concat(canvasEndTime)\n }];\n }\n\n parentChildren.push(range);\n};\n\nvar exportMarkers = function exportMarkers(markers, id, lang) {\n return Object.keys(markers.list).length ? [{\n type: 'AnnotationPage',\n items: Object.values(markers.list).sort(function (a, b) {\n return a.time - b.time;\n }).map(function (marker) {\n return {\n id: marker.id,\n type: 'Annotation',\n label: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, lang, [marker.label]),\n body: {\n type: 'TextualBody',\n value: marker.summary || '',\n format: 'text/plain',\n language: lang\n },\n target: {\n type: 'SpecificResource',\n source: id,\n selector: {\n type: 'PointSelector',\n t: toSeconds(marker.time)\n }\n }\n };\n })\n }] : [];\n};\n\nvar exportRanges = function exportRanges(range, canvasId, languageCode) {\n var bubbles = JSON.parse(JSON.stringify(Object.values(range.list))) // making sure the big\n .sort(function (a, b) {\n return b[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] - b[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME] - (a[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] - a[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME]);\n });\n bubbles.forEach(function (bubble, idx) {\n var possibleParents = bubbles.slice(0, idx).reverse();\n possibleParents.some(function (parentBubble) {\n if (parentBubble.id !== bubble.id && parentBubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] >= bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].END_TIME] && parentBubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME] <= bubble[_constants_range__WEBPACK_IMPORTED_MODULE_2__[\"RANGE\"].START_TIME]) {\n bubble.parent = parentBubble;\n\n if (parentBubble.hasOwnProperty('children')) {\n parentBubble.children.push(bubble);\n } else {\n parentBubble.children = [bubble];\n }\n\n return true;\n }\n });\n });\n var ranges = [];\n bubbles.forEach(function (bubble) {\n if (!bubble.parent) {\n exportLevel(bubble, ranges, canvasId, languageCode);\n }\n });\n return ranges;\n};\n\nvar getProjectSettings = function getProjectSettings(project) {\n return _constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT_SETTINGS_KEYS\"].reduce(function (settings, key) {\n settings[\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"RDF_NAMESPACE\"], \":\").concat(key)] = project[key];\n return settings;\n }, {});\n};\n\nvar getProjectMetadata = function getProjectMetadata(project) {\n return {\n label: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE], [project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].TITLE]]),\n summary: Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE], [project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].DESCRIPTION]])\n };\n};\n\nvar exporter = function exporter(state) {\n return Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.project.loadedJson, Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n structures: exportRanges(state.range, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LOADED_JSON].items[0].id, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE]),\n annotations: exportMarkers(state.markers, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LOADED_JSON].items[0].id, state.project[_constants_project__WEBPACK_IMPORTED_MODULE_3__[\"PROJECT\"].LANGUAGE])\n }, _constants_project__WEBPACK_IMPORTED_MODULE_3__[\"SETTINGS_ATTRIBUTE\"], getProjectSettings(state.project)), getProjectMetadata(state.project));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (exporter);\n\n//# sourceURL=webpack:///./src/utils/iiifSaver.js?");
/***/ }),
@@ -11251,7 +11275,7 @@ import "../iiif-timeliner-styles.css"
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"serialize\", function() { return serialize; });\n/* harmony import */ var _home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var langs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! langs */ \"./node_modules/langs/index.js\");\n/* harmony import */ var langs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(langs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\n\n\nvar IIIF_KEY_ORDER = ['@context', '@none', 'id', '@id', 'type', '@type', 'motivation', 'label', 'profile', 'format', 'language', 'value', 'metadata', 'summary', 'requiredStatement', 'thumbnail', 'homepage', 'logo', 'rights', 'logo', 'height', 'width', 'start', 'viewingDirection', 'behavior', 'navDate', 'rendering', 'seeAlso', 'partOf', 'includes', 'items', 'structures', 'annotations', 'source', 'selector', 't'];\nvar W3C_ANNOTATION_KEYS = ['body', 'target', 'duration'];\nvar TIMELINE_PROPERTIES = [\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":backgroundColour\"), \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":textColour\"), \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":settings\")].concat(Object(_home_dananji_avalonmediasystem_original_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT_SETTINGS_KEYS\"].map(function (key) {\n return \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":\").concat(key);\n})));\nvar LANGUAGES = langs__WEBPACK_IMPORTED_MODULE_1___default.a.codes('1');\nvar KEY_ORDER = IIIF_KEY_ORDER.concat(W3C_ANNOTATION_KEYS, TIMELINE_PROPERTIES, LANGUAGES);\nvar serialize = function serialize(item) {\n return JSON.stringify(item, KEY_ORDER, 2);\n};\n\n//# sourceURL=webpack:///./src/utils/iiifSerializer.js?");
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"serialize\", function() { return serialize; });\n/* harmony import */ var _home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js\");\n/* harmony import */ var langs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! langs */ \"./node_modules/langs/index.js\");\n/* harmony import */ var langs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(langs__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _constants_project__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../constants/project */ \"./src/constants/project.js\");\n\n\n\nvar IIIF_KEY_ORDER = ['@context', '@none', 'id', '@id', 'type', '@type', 'motivation', 'label', 'profile', 'format', 'language', 'value', 'metadata', 'summary', 'requiredStatement', 'thumbnail', 'homepage', 'logo', 'rights', 'logo', 'height', 'width', 'start', 'viewingDirection', 'behavior', 'navDate', 'rendering', 'seeAlso', 'partOf', 'includes', 'items', 'structures', 'annotations', 'source', 'selector', 't'];\nvar W3C_ANNOTATION_KEYS = ['body', 'target', 'duration'];\nvar TIMELINE_PROPERTIES = [\"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":backgroundColour\"), \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":textColour\"), \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":settings\")].concat(Object(_home_dwithana_github_iu_timeliner_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"PROJECT_SETTINGS_KEYS\"].map(function (key) {\n return \"\".concat(_constants_project__WEBPACK_IMPORTED_MODULE_2__[\"RDF_NAMESPACE\"], \":\").concat(key);\n})));\nvar LANGUAGES = langs__WEBPACK_IMPORTED_MODULE_1___default.a.codes('1');\nvar KEY_ORDER = IIIF_KEY_ORDER.concat(W3C_ANNOTATION_KEYS, TIMELINE_PROPERTIES, LANGUAGES);\nvar serialize = function serialize(item) {\n return JSON.stringify(item, KEY_ORDER, 2);\n};\n\n//# sourceURL=webpack:///./src/utils/iiifSerializer.js?");
/***/ }),
diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb
new file mode 100644
index 0000000000..a009ace51c
--- /dev/null
+++ b/app/jobs/application_job.rb
@@ -0,0 +1,2 @@
+class ApplicationJob < ActiveJob::Base
+end
diff --git a/app/jobs/bulk_action_jobs.rb b/app/jobs/bulk_action_jobs.rb
index 8c0e2f32db..43e25fa8f5 100644
--- a/app/jobs/bulk_action_jobs.rb
+++ b/app/jobs/bulk_action_jobs.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -205,6 +205,9 @@ def perform(collection_id, overwrite = true)
media_object = MediaObject.find(id)
media_object.hidden = collection.default_hidden
media_object.visibility = collection.default_visibility
+ if collection.cdl_enabled?
+ media_object.lending_period = collection.default_lending_period
+ end
# Special access
if overwrite
diff --git a/app/mailers/comments_mailer.rb b/app/mailers/comments_mailer.rb
index 1087897b06..f6fe545923 100644
--- a/app/mailers/comments_mailer.rb
+++ b/app/mailers/comments_mailer.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -17,6 +17,6 @@ class CommentsMailer < ActionMailer::Base
def contact_email(comment)
@comment = OpenStruct.new(comment)
- mail(from: Settings.email.comments, reply_to: @comment.email, subject: @comment.subject)
+ mail(from: Settings.email.comments, reply_to: @comment.email, subject: "#{Settings.name}: #{@comment.subject}")
end
end
diff --git a/app/models/ability.rb b/app/models/ability.rb
index 9262659028..e07a2fb60b 100644
--- a/app/models/ability.rb
+++ b/app/models/ability.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -17,8 +17,12 @@ class Ability
include Hydra::Ability
include Hydra::MultiplePolicyAwareAbility
- self.ability_logic += [ :playlist_permissions, :playlist_item_permissions, :marker_permissions, :encode_dashboard_permissions ]
- self.ability_logic += [ :timeline_permissions ]
+ self.ability_logic += [:playlist_permissions,
+ :playlist_item_permissions,
+ :marker_permissions,
+ :encode_dashboard_permissions,
+ :timeline_permissions,
+ :checkout_permissions]
def encode_dashboard_permissions
can :read, :encode_dashboard if is_administrator?
@@ -75,7 +79,7 @@ def custom_permissions(user=nil, session=nil)
cannot :read, Admin::Collection unless (full_login? || is_api_request?)
if full_login? || is_api_request?
- can :read, Admin::Collection do |collection|
+ can [:read, :items], Admin::Collection do |collection|
is_member_of?(collection)
end
@@ -217,6 +221,19 @@ def timeline_permissions
end
end
+ def checkout_permissions
+ if @user.id.present?
+ can :create, Checkout do |checkout|
+ checkout.user == @user && can?(:read, checkout.media_object)
+ end
+ can :return, Checkout, user: @user
+ can :return_all, Checkout, user: @user
+ can :read, Checkout, user: @user
+ can :update, Checkout, user: @user
+ can :destroy, Checkout, user: @user
+ end
+ end
+
def is_administrator?
@user_groups.include?("administrator")
end
@@ -228,7 +245,7 @@ def is_member_of?(collection)
def is_editor_of?(collection)
is_administrator? ||
- @user.in?(collection.managers, collection.editors)
+ @user.in?(collection.editors_and_managers)
end
def is_member_of_any_collection?
diff --git a/app/models/access_control_step.rb b/app/models/access_control_step.rb
index cd47daa719..b62e8e0ede 100644
--- a/app/models/access_control_step.rb
+++ b/app/models/access_control_step.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -94,10 +94,20 @@ def execute context
media_object.governing_policies.delete( lease )
lease.destroy
end
+
unless limited_access_submit
media_object.visibility = context[:visibility] unless context[:visibility].blank?
media_object.hidden = context[:hidden] == "1"
+ if media_object.cdl_enabled?
+ lending_period = build_lending_period(context)
+ if lending_period.positive?
+ media_object.lending_period = lending_period
+ elsif lending_period.zero?
+ context[:error] = "Lending period must be greater than 0."
+ end
+ end
end
+
media_object.save!
#Setup these values in the context because the edit partial is being rendered without running the controller's #edit (VOV-2978)
@@ -112,6 +122,23 @@ def execute context
context[:ip_leases] = media_object.leases('ip')
context[:addable_groups] = Admin::Group.non_system_groups.reject { |g| context[:groups].include? g.name }
context[:addable_courses] = Course.all.reject { |c| context[:virtual_groups].include? c.context_id }
+ context[:lending_period] = media_object.lending_period
context
end
+
+ private
+
+ def build_lending_period(context)
+ lending_period = 0
+ errors = []
+ d = context["add_lending_period_days"].to_i
+ h = context["add_lending_period_hours"].to_i
+ d.negative? ? errors.append("Lending period days needs to be a positive integer.") : lending_period += d.days
+ h.negative? ? errors.append("Lending period hours needs to be a positive integer.") : lending_period += h.hours
+
+ context[:error] = errors.join(' ') if errors.present?
+ lending_period.to_i
+ rescue
+ 0
+ end
end
diff --git a/app/models/admin/collection.rb b/app/models/admin/collection.rb
index 32636ca1ec..9deac6daf8 100644
--- a/app/models/admin/collection.rb
+++ b/app/models/admin/collection.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -64,6 +64,12 @@ class Admin::Collection < ActiveFedora::Base
property :identifier, predicate: ::RDF::Vocab::Identifiers.local, multiple: true do |index|
index.as :symbol
end
+ property :default_lending_period, predicate: ::RDF::Vocab::SCHEMA.eligibleDuration, multiple: false do |index|
+ index.as :stored_sortable
+ end
+ property :cdl_enabled, predicate: Avalon::RDFVocab::Collection.cdl_enabled, multiple: false do |index|
+ index.as :symbol
+ end
has_subresource 'poster', class_name: 'IndexedFile'
@@ -125,6 +131,10 @@ def remove_editor user
self.inherited_edit_users -= [user]
end
+ def editors_and_managers
+ edit_users
+ end
+
def depositors
read_users
end
@@ -265,6 +275,21 @@ def default_visibility_changed?
!!@default_visibility_will_change
end
+ alias_method :'_default_lending_period', :'default_lending_period'
+ def default_lending_period
+ self._default_lending_period || ActiveSupport::Duration.parse(Settings.controlled_digital_lending.default_lending_period).to_i
+ end
+
+ def cdl_enabled?
+ if cdl_enabled.nil?
+ Settings.controlled_digital_lending.collections_enabled
+ elsif cdl_enabled != Settings.controlled_digital_lending.collections_enabled
+ cdl_enabled
+ else
+ Settings.controlled_digital_lending.collections_enabled
+ end
+ end
+
private
def remove_edit_user(name)
diff --git a/app/models/avalon/rdf_vocab.rb b/app/models/avalon/rdf_vocab.rb
index 04f217aeb1..408fe2b79d 100644
--- a/app/models/avalon/rdf_vocab.rb
+++ b/app/models/avalon/rdf_vocab.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -64,6 +64,7 @@ class Collection < RDF::StrictVocabulary("http://avalonmediasystem.org/rdf/vocab
property :default_read_groups, "rdfs:isDefinedBy" => %(avr-collection:).freeze, type: "rdfs:Class".freeze
property :default_visibility, "rdfs:isDefinedBy" => %(avr-collection:).freeze, type: "rdfs:Class".freeze
property :default_hidden, "rdfs:isDefinedBy" => %(avr-collection:).freeze, type: "rdfs:Class".freeze
+ property :cdl_enabled, "rdfs:isDefinedBy" => %(avr-collection:).freeze, type: "rdfs:Class".freeze
end
end
end
diff --git a/app/models/checkout.rb b/app/models/checkout.rb
new file mode 100644
index 0000000000..34bbf08fd0
--- /dev/null
+++ b/app/models/checkout.rb
@@ -0,0 +1,29 @@
+class Checkout < ApplicationRecord
+ belongs_to :user
+
+ validates :user, :media_object_id, :checkout_time, :return_time, presence: true
+
+ after_initialize :set_checkout_return_times!
+
+ scope :active_for_media_object, ->(media_object_id) { where(media_object_id: media_object_id).where("return_time > now()") }
+ scope :active_for_user, ->(user_id) { where(user_id: user_id).where("return_time > now()") }
+ scope :returned_for_user, ->(user_id) { where(user_id: user_id).where("return_time < now()") }
+ scope :checked_out_to_user, ->(media_object_id, user_id) { where("media_object_id = ? AND user_id = ? AND return_time > now()", media_object_id, user_id) }
+
+ def media_object
+ MediaObject.find(media_object_id)
+ end
+
+ private
+
+ def set_checkout_return_times!
+ self.checkout_time ||= DateTime.current
+ self.return_time ||= checkout_time + duration
+ end
+
+ def duration
+ duration = media_object.lending_period if media_object_id.present?
+ duration ||= ActiveSupport::Duration.parse(Settings.controlled_digital_lending.default_lending_period)
+ duration
+ end
+end
diff --git a/app/models/comment.rb b/app/models/comment.rb
index 5c5268c147..2d0a731828 100644
--- a/app/models/comment.rb
+++ b/app/models/comment.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
diff --git a/app/models/master_file.rb b/app/models/master_file.rb
index fec7574a48..f47faf746f 100644
--- a/app/models/master_file.rb
+++ b/app/models/master_file.rb
@@ -270,7 +270,7 @@ def process_pass_through(file)
options[:outputs] = [{ label: 'high', url: input }]
end
- ActiveEncodeJobs::CreateEncodeJob.perform_now(input, id, options)
+ ActiveEncodeJobs::CreateEncodeJob.perform_later(input, id, options)
end
def input_path
@@ -512,7 +512,7 @@ def has_structuralMetadata?
def to_solr *args
super.tap do |solr_doc|
- solr_doc['file_size_ltsi'] = file_size
+ solr_doc['file_size_ltsi'] = file_size if file_size.present?
solr_doc['has_captions?_bs'] = has_captions?
solr_doc['has_waveform?_bs'] = has_waveform?
solr_doc['has_poster?_bs'] = has_poster?
@@ -559,32 +559,35 @@ def find_frame_source(options={})
options[:offset] ||= 2000
source = FileLocator.new(working_file_path&.first || file_location)
- options[:master] = true
- if source.source.nil? or (source.uri.scheme == 's3' and not source.exist?)
+ options[:non_temp_file] = true
+ if source.source.blank? or (source.uri.scheme == 's3' and not source.exist?)
source = FileLocator.new(self.derivatives.where(quality_ssi: 'high').first.absolute_location)
- options[:master] = false
+ options[:non_temp_file] = true
end
response = { source: source&.location }.merge(options)
return response if response[:source].to_s =~ %r(^https?://)
unless File.exists?(response[:source])
Rails.logger.warn("Masterfile `#{file_location}` not found. Extracting via HLS.")
- begin
- playlist_url = self.stream_details[:stream_hls].find { |d| d[:quality] == 'high' }[:url]
- secure_url = SecurityHandler.secure_url(playlist_url, target: self.id)
- playlist = Avalon::M3U8Reader.read(secure_url)
- details = playlist.at(options[:offset])
-
- # Fixes https://github.com/avalonmediasystem/avalon/issues/3474
- target_location = File.basename(details[:location]).split('?')[0]
- target = File.join(Dir.tmpdir, target_location)
- File.open(target,'wb') { |f| open(details[:location]) { |io| f.write(io.read) } }
- response = { source: target, offset: details[:offset], master: false }
- end
+ hls_temp_file, new_offset = create_frame_source_hls_temp_file
+ response = { source: hls_temp_file, offset: new_offset, non_temp_file: false }
end
return response
end
+ def create_frame_source_hls_temp_file
+ playlist_url = self.stream_details[:stream_hls].find { |d| d[:quality] == 'high' }[:url]
+ secure_url = SecurityHandler.secure_url(playlist_url, target: self.id)
+ playlist = Avalon::M3U8Reader.read(secure_url)
+ details = playlist.at(options[:offset])
+
+ # Fixes https://github.com/avalonmediasystem/avalon/issues/3474
+ target_location = File.basename(details[:location]).split('?')[0]
+ target = File.join(Dir.tmpdir, target_location)
+ File.open(target,'wb') { |f| open(details[:location]) { |io| f.write(io.read) } }
+ return target, details[:offset]
+ end
+
def extract_frame(options={})
return unless is_video?
@@ -616,12 +619,12 @@ def get_ffmpeg_frame_data(frame_source, new_width, new_height, headers)
File.symlink(frame_source[:source],file_source)
end
begin
- options = ffmpeg_frame_options(file_source, jpeg.path, frame_source[:offset], new_width, new_height, frame_source[:master], headers)
+ options = ffmpeg_frame_options(file_source, jpeg.path, frame_source[:offset], new_width, new_height, frame_source[:non_temp_file], headers)
Kernel.system(ffmpeg, *options)
jpeg.rewind
data = jpeg.read
Rails.logger.debug("Generated #{data.length} bytes of data")
- if (!frame_source[:master]) and data.length == 0
+ if (!frame_source[:non_temp_file]) and data.length == 0
# -ss before -i is faster, but fails on some files.
Rails.logger.warn("No data received. Swapping -ss and -i options")
options[0..3] = options.values_at(2,3,0,1)
@@ -633,7 +636,7 @@ def get_ffmpeg_frame_data(frame_source, new_width, new_height, headers)
data
ensure
File.unlink file_source unless file_source.match? %r{https?://}
- File.unlink frame_source[:source] unless frame_source[:master] or frame_source[:source].match? %r{https?://}
+ File.unlink frame_source[:source] unless frame_source[:non_temp_file] or frame_source[:source].match? %r{https?://}
File.unlink jpeg
end
end
diff --git a/app/models/media_object.rb b/app/models/media_object.rb
index 437438826e..44828314b2 100644
--- a/app/models/media_object.rb
+++ b/app/models/media_object.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -111,6 +111,9 @@ def validate_date(date_field)
property :comment, predicate: ::RDF::Vocab::EBUCore.comments, multiple: true do |index|
index.as :stored_searchable
end
+ property :lending_period, predicate: ::RDF::Vocab::SCHEMA.eligibleDuration, multiple: false do |index|
+ index.as :stored_sortable
+ end
ordered_aggregation :master_files, class_name: 'MasterFile', through: :list_source
# ordered_aggregation gives you accessors media_obj.master_files and media_obj.ordered_master_files
@@ -145,6 +148,7 @@ def collection= co
self.visibility = co.default_visibility
self.read_users = co.default_read_users.to_a
self.read_groups = co.default_read_groups.to_a + self.read_groups #Make sure to include any groups added by visibility
+ self.lending_period = co.default_lending_period
end
end
@@ -279,7 +283,9 @@ def as_json(options={})
published: published?,
summary: abstract,
visibility: visibility,
- read_groups: read_groups
+ read_groups: read_groups,
+ lending_period: lending_period,
+ lending_status: lending_status,
}.merge(to_ingest_api_hash(options.fetch(:include_structure, false)))
end
@@ -366,6 +372,28 @@ def access_text
"This item is accessible by: #{actors.join(', ')}."
end
+ def lending_status
+ Checkout.active_for_media_object(id).any? ? "checked_out" : "available"
+ end
+
+ def return_time
+ Checkout.active_for_media_object(id).first&.return_time
+ end
+
+ alias_method :'_lending_period', :'lending_period'
+ def lending_period
+ self._lending_period || collection&.default_lending_period
+ end
+
+ def cdl_enabled?
+ collection&.cdl_enabled?
+ end
+
+ def current_checkout(user_id)
+ checkouts = Checkout.active_for_media_object(id)
+ checkouts.select{ |ch| ch.user_id == user_id }.first
+ end
+
private
def calculate_duration
@@ -379,5 +407,4 @@ def collect_ips_for_index ip_strings
end
ips.flatten.compact.uniq || []
end
-
end
diff --git a/app/models/search_builder.rb b/app/models/search_builder.rb
index 83700a2756..ceca0e6915 100644
--- a/app/models/search_builder.rb
+++ b/app/models/search_builder.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -18,31 +18,32 @@ class SearchBuilder < Blacklight::SearchBuilder
include Hydra::AccessControlsEnforcement
include Hydra::MultiplePolicyAwareAccessControlsEnforcement
- self.default_processor_chain -= [:add_access_controls_to_solr_params]
- self.default_processor_chain += [:add_access_controls_to_solr_params_if_not_admin, :only_wanted_models, :only_published_items, :limit_to_non_hidden_items]#, :apply_sticky_settings]
+ class_attribute :avalon_solr_access_filters_logic
+ self.avalon_solr_access_filters_logic = [:only_published_items, :limit_to_non_hidden_items]
+ self.default_processor_chain += [:only_wanted_models]
def only_wanted_models(solr_parameters)
solr_parameters[:fq] ||= []
solr_parameters[:fq] << 'has_model_ssim:"MediaObject"'
end
- def only_published_items(solr_parameters)
- if current_ability.cannot? :discover_everything, MediaObject
- solr_parameters[:fq] ||= []
- solr_parameters[:fq] << [policy_clauses, 'workflow_published_sim:"Published"'].compact.join(" OR ")
- end
+ def only_published_items(_permission_types = discovery_permissions, _ability = current_ability)
+ [policy_clauses, 'workflow_published_sim:"Published"'].compact.join(" OR ")
end
- def limit_to_non_hidden_items(solr_parameters)
- if current_ability.cannot? :discover_everything, MediaObject
- solr_parameters[:fq] ||= []
- solr_parameters[:fq] << [policy_clauses,"(*:* NOT hidden_bsi:true)"].compact.join(" OR ")
- end
+ def limit_to_non_hidden_items(_permission_types = discovery_permissions, _ability = current_ability)
+ [policy_clauses,"(*:* NOT hidden_bsi:true)"].compact.join(" OR ")
end
- def add_access_controls_to_solr_params_if_not_admin(solr_parameters)
+ # Overridden to skip for admin users
+ def add_access_controls_to_solr_params(solr_parameters)
if current_ability.cannot? :discover_everything, MediaObject
- add_access_controls_to_solr_params(solr_parameters)
+ solr_parameters[:fq] ||= []
+ solr_parameters[:fq] << gated_discovery_filters.reject(&:blank?).join(' OR ')
+ avalon_solr_access_filters_logic.each do |filter|
+ solr_parameters[:fq] << send(filter, discovery_permissions, current_ability)
+ end
+ Rails.logger.debug("Solr parameters: #{solr_parameters.inspect}")
end
end
end
diff --git a/app/models/stream_token.rb b/app/models/stream_token.rb
index b97ce267d9..99f95e120f 100644
--- a/app/models/stream_token.rb
+++ b/app/models/stream_token.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -24,7 +24,7 @@ def self.media_token(session)
end
def self.find_or_create_session_token(session, target)
- purge_expired!
+ purge_expired!(session)
hash_token = Digest::SHA1.new
hash_token << media_token(session) << target
result = find_or_create_by!(token: hash_token.to_s, target: target)
@@ -40,15 +40,17 @@ def self.logout!(session)
end unless session[:hash_tokens].nil?
end
- def self.purge_expired!
- expired.each(&:delete)
+ def self.purge_expired!(session)
+ purged = expired.each(&:delete)
+ Array(session[:hash_tokens]).reject! { |token| !StreamToken.exists?(token: token) }
+ purged
end
def self.validate_token(value)
raise Unauthorized, 'Unauthorized' if value.nil?
token = find_by_token(value)
- if token.present? && token.expires > Time.now.utc
+ if token&.expires.present? && token.expires > Time.now.utc
token.renew!
valid_streams = ActiveFedora::SolrService.query(%(isDerivationOf_ssim:"#{token.target}"), fl: 'stream_path_ssi', rows: 10)
return valid_streams.collect { |d| d['stream_path_ssi'] }
diff --git a/app/models/timeline.rb b/app/models/timeline.rb
index beb8246aac..4447fc4293 100644
--- a/app/models/timeline.rb
+++ b/app/models/timeline.rb
@@ -190,7 +190,7 @@ def manifest_builder
"motivation": "painting",
"body": {
"id": source_stream,
- "type": "Audio",
+ "type": master_file.is_video? ? "Video" : "Audio",
"duration": duration,
"service": [auth_service]
},
diff --git a/app/models/user.rb b/app/models/user.rb
index e0d5f1a838..895b7b36ab 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -13,6 +13,7 @@
# --- END LICENSE_HEADER BLOCK ---
class User < ActiveRecord::Base
+ has_many :checkouts, dependent: :destroy
attr_writer :login
# Connects this user object to Hydra behaviors.
include Hydra::User
@@ -146,7 +147,7 @@ def ldap_groups
def self.ldap_member_of(cn)
return [] unless defined? Avalon::GROUP_LDAP
- entry = Avalon::GROUP_LDAP.search(:base => Avalon::GROUP_LDAP_TREE, :filter => Net::LDAP::Filter.eq("cn", cn), :attributes => ["memberof"]).first
+ entry = Avalon::GROUP_LDAP.search(:base => Avalon::GROUP_LDAP_TREE, :filter => Net::LDAP::Filter.eq("cn", cn), :attributes => ["memberof"])&.first
entry.nil? ? [] : entry["memberof"].collect {|mo| mo.split(',').first.split('=').second}
end
diff --git a/app/services/master_file_builder.rb b/app/services/master_file_builder.rb
index fbc8f5c430..e1fc94bbf2 100644
--- a/app/services/master_file_builder.rb
+++ b/app/services/master_file_builder.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -34,8 +34,8 @@ def self.build(media_object, params)
def self.from_specs(media_object, specs)
response = { flash: { error: [] }, master_files: [] }
specs.each do |spec|
- unless spec.original_filename.valid_encoding? && spec.original_filename.ascii_only?
- raise BuildError, 'The file you have uploaded has non-ASCII characters in its name.'
+ unless spec.original_filename.valid_encoding?
+ raise BuildError, 'The file you have uploaded has invalid characters in its name.'
end
master_file = MasterFile.new()
diff --git a/app/services/security_service.rb b/app/services/security_service.rb
index 290bc74a79..c512a45118 100644
--- a/app/services/security_service.rb
+++ b/app/services/security_service.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
diff --git a/app/views/_user_util_links.html.erb b/app/views/_user_util_links.html.erb
index 3d3e7786ad..b22abeaf2f 100644
--- a/app/views/_user_util_links.html.erb
+++ b/app/views/_user_util_links.html.erb
@@ -32,6 +32,16 @@ Unless required by applicable law or agreed to in writing, software distributed
<%= link_to 'Timelines', main_app.timelines_path, id:'timelines_nav', class: 'nav-link' %>
<% end %>
+ <% if Avalon::Configuration.controlled_digital_lending_enabled? %>
+ <% if current_ability.can? :create, Checkout %>
+
+ <%= link_to main_app.checkouts_path, id:'checkouts_nav', class: 'nav-link' do %>
+ Checkouts
+ (<%= Checkout.active_for_user(current_or_guest_user.id).count %>)
+ <% end %>
+
+ <% end %>
+ <% end %>
<% if render_bookmarks_control? %>
<%= link_to main_app.bookmarks_path, id:'bookmarks_nav', class: 'nav-link' do %>
diff --git a/app/views/admin/collections/_form.html.erb b/app/views/admin/collections/_form.html.erb
index ba2b9eb754..5f8a56344c 100644
--- a/app/views/admin/collections/_form.html.erb
+++ b/app/views/admin/collections/_form.html.erb
@@ -13,6 +13,9 @@ Unless required by applicable law or agreed to in writing, software distributed
specific language governing permissions and limitations under the License.
--- END LICENSE_HEADER BLOCK ---
%>
+<% unless Avalon::ControlledVocabulary.vocabulary[:units] %>
+ <% raise Avalon::VocabularyNotFound.new "Units vocabulary not found." %>
+<% end %>
diff --git a/app/views/admin/collections/show.html.erb b/app/views/admin/collections/show.html.erb
index 2c29e1d2bb..de015cbc4d 100644
--- a/app/views/admin/collections/show.html.erb
+++ b/app/views/admin/collections/show.html.erb
@@ -125,9 +125,11 @@ Unless required by applicable law or agreed to in writing, software distributed
Set Default Access Control for New Items
- <%= render "modules/access_control", { object: @collection,
- visibility: @collection.default_visibility,
- hidden: @collection.default_hidden,
+ <%= render "modules/access_control", { object: @collection,
+ visibility: @collection.default_visibility,
+ hidden: @collection.default_hidden,
+ lending_period: @collection.default_lending_period,
+ cdl: @collection.cdl_enabled,
modal: { partial: "apply_access_control", title: "Apply current Default Access settings to all existing Items" } } %>
<% if can? :update_access_control, @collection %>
diff --git a/app/views/bookmarks/_document_action.html.erb b/app/views/bookmarks/_document_action.html.erb
index 4a5fba6aa9..f96591867f 100644
--- a/app/views/bookmarks/_document_action.html.erb
+++ b/app/views/bookmarks/_document_action.html.erb
@@ -16,5 +16,5 @@ Unless required by applicable law or agreed to in writing, software distributed
<%= link_to document_action_label(document_action_config.key, document_action_config),
document_action_path(document_action_config, (local_assigns.has_key?(:url_opts) ? url_opts : {}).merge(({id: document} if document) || {})),
id: document_action_config.fetch(:id, "#{document_action_config.key}Link"),
- class: "btn",
+ class: "btn btn-outline",
data: {}.merge(({blacklight_modal: "trigger"} if document_action_config.modal != false) || {}) %>
diff --git a/app/views/bookmarks/_formless_document_action.html.erb b/app/views/bookmarks/_formless_document_action.html.erb
index cc5166599c..da78dcc72e 100644
--- a/app/views/bookmarks/_formless_document_action.html.erb
+++ b/app/views/bookmarks/_formless_document_action.html.erb
@@ -17,6 +17,6 @@ Unless required by applicable law or agreed to in writing, software distributed
<%= link_to document_action_label(document_action_config.key, document_action_config),
document_action_path(document_action_config, (local_assigns.has_key?(:url_opts) ? url_opts : {}).merge(({id: document} if document) || {})),
id: document_action_config.fetch(:id, "#{document_action_config.key}Link"),
- class: "btn btn-default",
+ class: "btn btn-default btn-outline",
method: :post,
data: {}.merge(({blacklight_modal: "trigger"} if document_action_config.modal != false) || {}) %>
diff --git a/app/views/catalog/_facet_pagination.html.erb b/app/views/catalog/_facet_pagination.html.erb
index 6444448f9d..733294cf7a 100644
--- a/app/views/catalog/_facet_pagination.html.erb
+++ b/app/views/catalog/_facet_pagination.html.erb
@@ -14,21 +14,21 @@ Unless required by applicable law or agreed to in writing, software distributed
--- END LICENSE_HEADER BLOCK ---
%>
diff --git a/app/views/catalog/_index_media_object.html.erb b/app/views/catalog/_index_media_object.html.erb
index cb4fa059fc..e689592c67 100644
--- a/app/views/catalog/_index_media_object.html.erb
+++ b/app/views/catalog/_index_media_object.html.erb
@@ -16,7 +16,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<%# TODO: Use new Blacklight::DocumentMetadataComponent instead of overriding this view %>
<% doc_presenter = document_presenter(document) %>
<%# default partial to display solr document fields in catalog index view %>
-
+
<% doc_presenter.field_presenters.each do |field_presenter| %>
<% if field_presenter.render_field? %>
<%= field_presenter.label %>:
diff --git a/app/views/catalog/_thumbnail_media_object.html.erb b/app/views/catalog/_thumbnail_media_object.html.erb
index 528c97939e..ee30cf801c 100644
--- a/app/views/catalog/_thumbnail_media_object.html.erb
+++ b/app/views/catalog/_thumbnail_media_object.html.erb
@@ -14,7 +14,7 @@ Unless required by applicable law or agreed to in writing, software distributed
--- END LICENSE_HEADER BLOCK ---
%>
-
+
<% if image_url = image_for(document) %>
<%= link_to(media_object_path(document[:id]), {class: 'result-thumbnail'}) do %>
<%= image_tag( image_url ) %>
diff --git a/app/views/checkouts/_checkout.json.jbuilder b/app/views/checkouts/_checkout.json.jbuilder
new file mode 100644
index 0000000000..3378265676
--- /dev/null
+++ b/app/views/checkouts/_checkout.json.jbuilder
@@ -0,0 +1,2 @@
+json.extract! checkout, :id, :user_id, :media_object_id, :checkout_time, :return_time, :created_at, :updated_at
+json.url checkout_url(checkout, format: :json)
diff --git a/app/views/checkouts/_inactive_checkout.html.erb b/app/views/checkouts/_inactive_checkout.html.erb
new file mode 100644
index 0000000000..bd5f2add61
--- /dev/null
+++ b/app/views/checkouts/_inactive_checkout.html.erb
@@ -0,0 +1,20 @@
+<%#
+Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+ University. Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software distributed
+ under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ CONDITIONS OF ANY KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations under the License.
+--- END LICENSE_HEADER BLOCK ---
+%>
+<% # container for display inactive checkouts checkbox -%>
+
diff --git a/app/views/comments_mailer/contact_email.text.erb b/app/views/comments_mailer/contact_email.text.erb
index 8be8a25a7a..b87e63f0ce 100644
--- a/app/views/comments_mailer/contact_email.text.erb
+++ b/app/views/comments_mailer/contact_email.text.erb
@@ -20,6 +20,9 @@ A @comment has been received from the system
FROM
<%= @comment.name %> (<<%= @comment.email %>>)
+SITE
+<%= Settings.name %>
+
SUBJECT
<%= @comment.subject %>
diff --git a/app/views/devise/passwords/edit.html.erb b/app/views/devise/passwords/edit.html.erb
index 79e78ef756..a6816a610a 100644
--- a/app/views/devise/passwords/edit.html.erb
+++ b/app/views/devise/passwords/edit.html.erb
@@ -13,29 +13,24 @@ Unless required by applicable law or agreed to in writing, software distributed
specific language governing permissions and limitations under the License.
--- END LICENSE_HEADER BLOCK ---
%>
+
+<%= render "devise/shared/error_messages", resource: resource %>
+
+ <%= f.submit "Send me reset password instructions", class: 'btn btn-primary' %>
<% end %>
<%= render "devise/shared/links" %>
diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb
index 6ab246d948..1920f3ff6e 100644
--- a/app/views/devise/registrations/edit.html.erb
+++ b/app/views/devise/registrations/edit.html.erb
@@ -13,44 +13,31 @@ Unless required by applicable law or agreed to in writing, software distributed
specific language governing permissions and limitations under the License.
--- END LICENSE_HEADER BLOCK ---
%>
+
+<%= render "devise/shared/error_messages", resource: resource %>
+
- <%= f.label :current_password %> (we need your current password to confirm your changes)
- <%= f.password_field :current_password, autocomplete: "off" %>
-
+ <% if @minimum_password_length %>
+ <%= f.password_field :password, label: "Password (leave blank if you don't want to change it)".html_safe, help: "#{@minimum_password_length} characters minimum", autocomplete: 'off' %>
+ <% else %>
+ <%= f.password_field :password, label: "Password (leave blank if you don't want to change it)".html_safe, autocomplete: 'off' %>
+ <% end %>
+
+ <%= f.password_field :password_confirmation, autocomplete: "off" %>
+
+ <%= f.password_field :current_password, autocomplete: "off", label: "Current password (we need your current password to confirm your changes)".html_safe %>
+
+ <%= f.submit "Update", class: 'btn btn-primary' %>
<% end %>
<%= link_to "Back", :back %>
diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb
index 6e88497f15..ecdbcc6860 100644
--- a/app/views/devise/registrations/new.html.erb
+++ b/app/views/devise/registrations/new.html.erb
@@ -13,38 +13,24 @@ Unless required by applicable law or agreed to in writing, software distributed
specific language governing permissions and limitations under the License.
--- END LICENSE_HEADER BLOCK ---
%>
+
+<%= render "devise/shared/error_messages", resource: resource %>
+
@@ -56,4 +65,22 @@ Unless required by applicable law or agreed to in writing, software distributed
<% if @currentStream.present? and @currentStream.derivatives.present? %>
<%= render partial: "mejs4_player_js", locals: {section: @currentStream, section_info: @currentStreamInfo} %>
<% end %>
+
+
+
<% end %>
diff --git a/app/views/media_objects/_lti_url.html.erb b/app/views/media_objects/_lti_url.html.erb
index ac4c57cff7..4967a07e8e 100644
--- a/app/views/media_objects/_lti_url.html.erb
+++ b/app/views/media_objects/_lti_url.html.erb
@@ -35,6 +35,6 @@ Unless required by applicable law or agreed to in writing, software distributed
<% elsif section=='share-tabs' %>
-
<% end %>
diff --git a/app/views/media_objects/_metadata_display.html.erb b/app/views/media_objects/_metadata_display.html.erb
index da357960d5..02ee1c5e66 100644
--- a/app/views/media_objects/_metadata_display.html.erb
+++ b/app/views/media_objects/_metadata_display.html.erb
@@ -13,6 +13,10 @@ Unless required by applicable law or agreed to in writing, software distributed
specific language governing permissions and limitations under the License.
--- END LICENSE_HEADER BLOCK ---
%>
+<% unless ModsDocument::IDENTIFIER_TYPES && ModsDocument::NOTE_TYPES && ModsDocument::RIGHTS_STATEMENTS %>
+ <% raise Avalon::VocabularyNotFound.new "Rights statements, Identifier types, or Note types vocabulary not found." %>
+<% end %>
+
@@ -87,4 +94,4 @@ Unless required by applicable law or agreed to in writing, software distributed
<% end %>
-
\ No newline at end of file
+
diff --git a/app/views/media_objects/_multipart_dropdown_field.html.erb b/app/views/media_objects/_multipart_dropdown_field.html.erb
index 1e37b2dba9..c14af9df58 100644
--- a/app/views/media_objects/_multipart_dropdown_field.html.erb
+++ b/app/views/media_objects/_multipart_dropdown_field.html.erb
@@ -18,7 +18,6 @@ Unless required by applicable law or agreed to in writing, software distributed
diff --git a/app/views/media_objects/_resource_description.html.erb b/app/views/media_objects/_resource_description.html.erb
index b070a900ea..0073ac363c 100644
--- a/app/views/media_objects/_resource_description.html.erb
+++ b/app/views/media_objects/_resource_description.html.erb
@@ -13,6 +13,10 @@ Unless required by applicable law or agreed to in writing, software distributed
specific language governing permissions and limitations under the License.
--- END LICENSE_HEADER BLOCK ---
%>
+<% unless ModsDocument::IDENTIFIER_TYPES && ModsDocument::NOTE_TYPES && ModsDocument::RIGHTS_STATEMENTS %>
+ <% raise Avalon::VocabularyNotFound.new "Rights statements, Identifier types, or Note types vocabulary not found." %>
+<% end %>
+
Fields followed by an asterisk (*) are required.
<%= form_for @media_object, html: { class: 'form-vertical', id: 'resource-description' } do |form| %>
diff --git a/app/views/media_objects/_supplemental_files_list.html.erb b/app/views/media_objects/_supplemental_files_list.html.erb
index 8b33090514..e1742a778b 100644
--- a/app/views/media_objects/_supplemental_files_list.html.erb
+++ b/app/views/media_objects/_supplemental_files_list.html.erb
@@ -44,7 +44,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<%= button_tag name: 'edit_label', class:'btn btn-outline btn-sm edit_label display-item', type: 'button' do %>
Edit
<% end %>
- <%= link_to("Remove", object_supplemental_file_path(section, file), title: 'Remove', method: :delete, class: "btn btn-danger btn-sm file-remove") %>
+ <%= link_to("Remove", object_supplemental_file_path(section, file), title: 'Remove', method: :delete, class: "btn btn-danger btn-sm file-remove btn-confirmation") %>
diff --git a/app/views/modules/_access_control.html.erb b/app/views/modules/_access_control.html.erb
index 7156e66585..bd414f7cc2 100644
--- a/app/views/modules/_access_control.html.erb
+++ b/app/views/modules/_access_control.html.erb
@@ -64,6 +64,52 @@ Unless required by applicable law or agreed to in writing, software distributed
+<% if Avalon::Configuration.controlled_digital_lending_enabled? && object.is_a?(Admin::Collection) %>
+
+
+
Controlled Digital Lending
+
+
+
+
+ <%= label_tag :cdl do %>
+ <%= check_box_tag :cdl, '1', (cdl) %>
+ Enable controlled digital lending for this collection
+ <% end %>
+
+
+ <%= text_field_tag "add_lending_period_days", d ? d : 0, class: 'form-control' %>
+
+
+
+ <%= text_field_tag "add_lending_period_hours", h ? h : 0, class: 'form-control' %>
+
+
+
+
+
+<% end %>
+
<%= render modal[:partial], modal_title: modal[:title] if defined? modal %>
<% end #form_for %>
@@ -104,6 +150,20 @@ Unless required by applicable law or agreed to in writing, software distributed
+<% if lending_enabled?(object) %>
+
+
+
Item lending period
+
+
+
+ Item is available to be checked out for
+ <%= ActiveSupport::Duration.build(lending_period).to_day_hour_s %>
+
+
+
+<% end %>
+
<% end #form_for %>
<% end %>
diff --git a/app/views/modules/player/_video_element.html.erb b/app/views/modules/player/_video_element.html.erb
index f3c7db491a..ebbc74966d 100644
--- a/app/views/modules/player/_video_element.html.erb
+++ b/app/views/modules/player/_video_element.html.erb
@@ -18,8 +18,8 @@ Unless required by applicable law or agreed to in writing, software distributed
class="mejs-avalon <%= is_mejs_2? ? '' : 'invisible' %>"
controls
style="width: 100%; height: 100%"
- width="<%= @player_width || 450 %>"
- height="<%= @player_height || 309 %>"
+ width="<%= @player_width || 480 %>"
+ height="<%= @player_height || 270 %>"
data-canvasindex=0
poster="<%= section_info[:poster_image] if f_start == 0 %>"
preload="auto">
diff --git a/app/views/playlists/_copy_playlist_modal.html.erb b/app/views/playlists/_copy_playlist_modal.html.erb
index 8622e99c8d..57f37ece80 100644
--- a/app/views/playlists/_copy_playlist_modal.html.erb
+++ b/app/views/playlists/_copy_playlist_modal.html.erb
@@ -76,18 +76,3 @@ Unless required by applicable law or agreed to in writing, software distributed
-
-<% content_for :page_scripts do %>
-
-<% end %>
diff --git a/app/views/playlists/_player.html.erb b/app/views/playlists/_player.html.erb
index c07c39da37..6dbba4ee63 100644
--- a/app/views/playlists/_player.html.erb
+++ b/app/views/playlists/_player.html.erb
@@ -17,7 +17,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<% f_start = @current_clip.start_time / 1000.0 %>
<% f_end = @current_clip.end_time / 1000.0 %>
<% @currentStream = @current_masterfile %>
-<% @currentStreamInfo = secure_streams(@currentStream.stream_details) %>
+<% @currentStreamInfo = secure_streams(@currentStream.stream_details, @current_masterfile.media_object_id) %>
<% @currentStreamInfo['t'] = [f_start,f_end] %>
<% if can? :read, @current_masterfile %>
diff --git a/app/views/samvera/persona/users/index.html.erb b/app/views/samvera/persona/users/index.html.erb
index a08c684820..be42c89edc 100644
--- a/app/views/samvera/persona/users/index.html.erb
+++ b/app/views/samvera/persona/users/index.html.erb
@@ -45,7 +45,7 @@ Unless required by applicable law or agreed to in writing, software distributed
<%= t('.id_label') %>
<%= t('.email_label') %>
-
<%= t('.role_label') %>
+
<%= t('.role_label') %>
<%= t('.access_label') %>
<%= t('.status_label') %>
<% if User.column_names.include? 'provider' %>
diff --git a/config/application.rb b/config/application.rb
index 56156cf0f2..78ea2e1a7c 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -8,7 +8,7 @@
Bundler.require(*Rails.groups)
module Avalon
- VERSION = '7.4.0'
+ VERSION = '7.5.0'
class Application < Rails::Application
require 'avalon/configuration'
@@ -38,13 +38,13 @@ class Application < Rails::Application
config.middleware.insert_before 0, Rack::Cors do
allow do
- origins '*'
+ origins { |source| true }
resource '/media_objects/*/manifest*', headers: :any, methods: [:get]
resource '/master_files/*/thumbnail', headers: :any, methods: [:get]
resource '/master_files/*/transcript/*/*', headers: :any, methods: [:get]
resource '/master_files/*/structure.json', headers: :any, methods: [:get, :post, :delete]
resource '/master_files/*/waveform.json', headers: :any, methods: [:get]
- resource '/master_files/*/*.m3u8', headers: :any, methods: [:get, :head]
+ resource '/master_files/*/*.m3u8', headers: :any, credentials: true, methods: [:get, :head]
resource '/timelines/*/manifest.json', headers: :any, methods: [:get, :post]
end
end
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 66df51f6fc..d4290e00ce 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -36,6 +36,8 @@
config.action_mailer.perform_caching = false
+ config.action_mailer.show_previews = true
+
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
@@ -56,7 +58,8 @@
# Raises error for missing translations.
# config.action_view.raise_on_missing_translations = true
- # Use an evented file watcher to asynchronously detect changes in source code,
- # routes, locales, etc. This feature depends on the listen gem.
- config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+ # Do NOT use an evented file watcher to asynchronously detect changes in source code,
+ # routes, locales, etc because this feature depends on the listen gem.
+ # ActiveSupport::EventedFileUpdateChecker does not work with M1 Macs
+ config.file_watcher = ActiveSupport::FileUpdateChecker
end
diff --git a/config/initializers/active_encode.rb b/config/initializers/active_encode.rb
index 777eb5a440..1a688a5466 100644
--- a/config/initializers/active_encode.rb
+++ b/config/initializers/active_encode.rb
@@ -3,6 +3,7 @@
case Settings.encoding.engine_adapter.to_sym
when :ffmpeg
MasterFile.default_encoder_class = FfmpegEncode
+ ActiveEncode::EngineAdapters::FfmpegAdapter.completeness_threshold = 95
when :matterhorn
Rubyhorn.init
when :elastic_transcoder
diff --git a/config/initializers/active_fedora_request_options.rb b/config/initializers/active_fedora_request_options.rb
deleted file mode 100644
index 3bb0a901e2..0000000000
--- a/config/initializers/active_fedora_request_options.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-class ActiveFedora::Fedora
- def request_options
- @config[:request]
- end
-
- def authorized_connection
- options = {}
- options[:request] = request_options if request_options
- connection = Faraday.new(host, options)
- connection.basic_auth(user, password)
- connection
- end
-end
-
diff --git a/config/initializers/avalon.rb b/config/initializers/avalon.rb
index 9892b90f98..d565fffa9d 100644
--- a/config/initializers/avalon.rb
+++ b/config/initializers/avalon.rb
@@ -1,5 +1,6 @@
require 'string_additions'
require 'avalon/errors'
+require 'day_hour_string'
# Loads configuration information from the YAML file and then sets up the
# dropbox
#
diff --git a/config/initializers/hydra_config.rb b/config/initializers/hydra_config.rb
index 2af50bcdf2..73a4be2197 100644
--- a/config/initializers/hydra_config.rb
+++ b/config/initializers/hydra_config.rb
@@ -58,3 +58,23 @@ def byname
# Clear the role map out of the Rails cache so it initializes from the DB
Rails.cache.delete("RoleMapHash")
+
+ActiveFedora::QueryMethods.module_eval do
+ extend ActiveSupport::Concern
+
+ def accessible_by(ability, action = :index)
+ return spawn if ability.can?(:discover_everything, MediaObject) # Administrator
+
+ permission_types = case action
+ when :index then [:discover, :read, :edit]
+ when :show then [:read, :edit]
+ when :update, :edit, :create, :new, :destroy then [:edit]
+ end
+
+ builder = ::SearchBuilder.new(nil).with_ability(ability).with_discovery_permissions(permission_types)
+ filters = builder.send(:gated_discovery_filters).join(' OR ')
+ rel = spawn.where(filters)
+ builder.avalon_solr_access_filters_logic.map {|filter| rel = rel.where(builder.send(filter)) }
+ rel
+ end
+end
diff --git a/config/initializers/ldp_solr_duration_logger.rb b/config/initializers/ldp_solr_duration_logger.rb
new file mode 100644
index 0000000000..d029cd0ef2
--- /dev/null
+++ b/config/initializers/ldp_solr_duration_logger.rb
@@ -0,0 +1,89 @@
+# This module enables tracking the sum duration that LDP and solr requests take
+# and report it back alongside the view and DB times in the rails log for each request.
+
+module AvalonInstrumentation
+ extend ActiveSupport::Concern
+
+ module ClassMethods
+ def log_process_action(payload)
+ messages, ldp_runtime, solr_runtime = super, payload[:ldp_runtime], payload[:solr_runtime]
+ messages << ("LDP: %.1fms" % ldp_runtime.to_f) if ldp_runtime
+ messages << ("Solr: %.1fms" % solr_runtime.to_f) if solr_runtime
+ messages
+ end
+ end
+
+ private
+ attr_internal :ldp_runtime, :solr_runtime
+
+ def process_action(action, *args)
+ # We also need to reset the runtime before each action
+ # because of queries in middleware or in cases we are streaming
+ # and it won't be cleaned up by the method below.
+ HttpLogSubscriber.reset_ldp_runtime
+ HttpLogSubscriber.reset_solr_runtime
+ super
+ end
+
+ def cleanup_view_runtime
+ if logger && logger.info?
+ ldp_rt_before_render = HttpLogSubscriber.reset_ldp_runtime
+ solr_rt_before_render = HttpLogSubscriber.reset_solr_runtime
+ self.ldp_runtime = (ldp_runtime || 0) + ldp_rt_before_render
+ self.solr_runtime = (solr_runtime || 0) + solr_rt_before_render
+
+ runtime = super
+
+ ldp_rt_after_render = HttpLogSubscriber.reset_ldp_runtime
+ solr_rt_after_render = HttpLogSubscriber.reset_solr_runtime
+ self.ldp_runtime += ldp_rt_after_render
+ self.solr_runtime += solr_rt_after_render
+ runtime - ldp_rt_after_render - solr_rt_after_render
+ else
+ super
+ end
+ end
+
+ def append_info_to_payload(payload)
+ super
+ payload[:ldp_runtime] = (self.ldp_runtime || 0) + HttpLogSubscriber.reset_ldp_runtime
+ payload[:solr_runtime] = (self.solr_runtime || 0) + HttpLogSubscriber.reset_solr_runtime
+ end
+
+ class HttpLogSubscriber < ActiveSupport::LogSubscriber
+ class_attribute :ldp_runtime, :solr_runtime
+ self.ldp_runtime ||= 0
+ self.solr_runtime ||= 0
+
+ ActiveSupport::Notifications.subscribe('request.faraday') do |name, starts, ends, _, env|
+ url = env[:url].to_s
+ duration = (ends - starts) * 1000
+ self.ldp_runtime += duration if url.start_with?(ActiveFedora.fedora.base_uri)
+ self.solr_runtime += duration if url.start_with?(ActiveFedora.solr.options[:url])
+ end
+
+ def self.reset_ldp_runtime
+ rt, self.ldp_runtime = self.ldp_runtime, 0
+ rt
+ end
+
+ def self.reset_solr_runtime
+ rt, self.solr_runtime = self.solr_runtime, 0
+ rt
+ end
+ end
+end
+
+ActiveSupport.on_load(:action_controller) do
+ ActionController::Base.include(AvalonInstrumentation)
+end
+
+# Enable Faraday instrumentation in all Faraday clients
+module FaradayConnectionOptions
+ def new_builder(block)
+ super.tap do |builder|
+ builder.request :instrumentation
+ end
+ end
+end
+Faraday::ConnectionOptions.prepend(FaradayConnectionOptions)
diff --git a/config/initializers/time_formats.rb b/config/initializers/time_formats.rb
new file mode 100644
index 0000000000..b3c37fc91e
--- /dev/null
+++ b/config/initializers/time_formats.rb
@@ -0,0 +1 @@
+Time::DATE_FORMATS[:long_ordinal_12h] = lambda { |time| time.strftime("%B #{time.day.ordinalize}, %Y %l:%M %p") }
diff --git a/config/locales/devise.en.yml b/config/locales/devise.en.yml
index 8d31732b7d..aea197d59a 100644
--- a/config/locales/devise.en.yml
+++ b/config/locales/devise.en.yml
@@ -8,8 +8,8 @@ en:
already_confirmed: "was already confirmed, please try signing in"
not_locked: "was not locked"
not_saved:
- one: "An error prohibited this %{resource} from being saved"
- other: "%{count} errors prohibited this %{resource} from being saved"
+ one: "An error prohibited this %{resource} from being saved:"
+ other: "%{count} errors prohibited this %{resource} from being saved:"
devise:
failure:
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 348e0f11b2..feccd5af8f 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -14,6 +14,10 @@ en:
If you are an instructor, you cannot view these items in student mode.
Please switch back to instructor mode to view. If you are a student and
receiving this message, please contact us at %s.
+ general_auth_error: You are not authorized to access this content.
+ general_500_error: There was an error with this request.
+ controlled_vocabulary_error: |
+ %s Please contact support to report this error: %s.
messages:
blank: "field is required."
taken: "is taken."
@@ -22,6 +26,14 @@ en:
empty_share_link: ""
empty_share_link_notice: "After processing has started the embedded link will be available."
empty_share_section_permalink_notice: "After processing has started the section link will be available."
+ cdl:
+ checkout_message: "
Borrow this item to access media resources.
"
+ not_available_message: "
This resource is currently checked out by another user. This item is due to be returned on .
"
+ time_remaining: "
Time remaining:
"
+ unauthenticated_message: "
You are not signed in. You may be able to borrow this item after signing in.
")
+ expect(parsed_response['data'][0][0]).to eq("zzzebra")
+ expect(parsed_response['data'][11][0]).to eq("aardvark")
end
end
end
diff --git a/spec/controllers/timelines_controller_spec.rb b/spec/controllers/timelines_controller_spec.rb
index 0f15a6ef03..e0b5795e03 100644
--- a/spec/controllers/timelines_controller_spec.rb
+++ b/spec/controllers/timelines_controller_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -81,6 +81,12 @@
expect(get :show, params: { id: timeline.id }).to be_successful
expect(get :manifest, params: { id: timeline.id, format: :json }).to be_successful
end
+ it "should return timeline manifest as id" do
+ expect(get :manifest, params: { id: timeline.id }).to be_successful
+ end
+ it "should return timeline manifest as URI" do
+ expect(get :manifest, params: { id: timeline.id }, format: :json).to be_successful
+ end
end
context 'with a private timeline' do
it "should NOT return the timeline view page" do
@@ -144,8 +150,8 @@
before :each do
FactoryBot.reload
FactoryBot.create(:timeline, title: 'aardvark', description: 'Aardvark lorem ipsum.', user: user)
- FactoryBot.create(:timeline, title: 'zzzebra', description: 'Zzzebra lorem ipsum.', user: user)
FactoryBot.create_list(:timeline, 9, user: user)
+ FactoryBot.create(:timeline, title: 'zzzebra', description: 'Zzzebra lorem ipsum.', user: user)
end
context 'paging' do
@@ -192,12 +198,24 @@
post :paged_index, format: 'json', params: common_params.merge(order: { '0': { column: 0, dir: 'asc' } }), session: valid_session
parsed_response = JSON.parse(response.body)
expect(parsed_response['data'][0][0]).to eq("aardvark")
- expect(parsed_response['data'][10][0]).to eq("zzzebra")
+ expect(parsed_response['data'][10][0]).to eq("zzzebra")
end
it "returns results sorted by title descending" do
post :paged_index, format: 'json', params: common_params.merge(order: { '0': { column: 0, dir: 'desc' } }), session: valid_session
parsed_response = JSON.parse(response.body)
- expect(parsed_response['data'][0][0]).to eq("zzzebra")
+ expect(parsed_response['data'][0][0]).to eq("zzzebra")
+ expect(parsed_response['data'][10][0]).to eq("aardvark")
+ end
+ it "returns results sorted by Updated ascending" do
+ post :paged_index, format: 'json', params: common_params.merge(order: { '0': { column: 3, dir: 'asc' } }), session: valid_session
+ parsed_response = JSON.parse(response.body)
+ expect(parsed_response['data'][0][0]).to eq("aardvark")
+ expect(parsed_response['data'][10][0]).to eq("zzzebra")
+ end
+ it "returns results sorted by Updated descending" do
+ post :paged_index, format: 'json', params: common_params.merge(order: { '0': { column: 3, dir: 'desc' } }), session: valid_session
+ parsed_response = JSON.parse(response.body)
+ expect(parsed_response['data'][0][0]).to eq("zzzebra")
expect(parsed_response['data'][10][0]).to eq("aardvark")
end
end
@@ -210,6 +228,30 @@
expect(response).to be_successful
end
+ context 'with token auth' do
+ let(:timeline) { FactoryBot.create(:timeline, :with_access_token) }
+ let(:encoded_manifest_url) do
+ [controller.default_url_options[:protocol],
+ "%3A%2F%2F",
+ controller.default_url_options[:host],
+ "%2Ftimelines%2F",
+ timeline.id,
+ "%2Fmanifest.json%3Ftoken%3D",
+ timeline.access_token].join
+ end
+
+ before do
+ user
+ end
+
+ render_views
+
+ it "correctly encodes tokenized timeline urls" do
+ get :show, params: {id: timeline.to_param, token: timeline.access_token}
+ expect(response.body).to include "resource=#{encoded_manifest_url}"
+ end
+ end
+
context "with format json" do
let(:manifest) do
{
diff --git a/spec/controllers/vocabulary_controller_spec.rb b/spec/controllers/vocabulary_controller_spec.rb
index f7a14afbd4..df0c6f8ad8 100644
--- a/spec/controllers/vocabulary_controller_spec.rb
+++ b/spec/controllers/vocabulary_controller_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -87,9 +87,17 @@
end
end
describe "#update" do
- it "should add unit to controlled vocabulary" do
- put 'update', params: { format:'json', id: :units, entry: 'New Unit' }
- expect(Avalon::ControlledVocabulary.vocabulary[:units]).to include("New Unit")
+ context "new unit is a string" do
+ it "should add unit to controlled vocabulary" do
+ put 'update', params: { format:'json', id: :units, entry: 'New Unit' }
+ expect(Avalon::ControlledVocabulary.vocabulary[:units]).to include("New Unit")
+ end
+ end
+ context "new entry is a key value pair" do
+ it "should add to controlled vocabulary" do
+ put 'update', params: { format:'json', id: :identifier_types, entry: { key: 'value' } }
+ expect(Avalon::ControlledVocabulary.vocabulary[:identifier_types]).to include({ 'key' => 'value' })
+ end
end
it "should return 404 if requested vocabulary not present" do
put 'update', params: { format:'json', id: :doesnt_exist, entry: 'test' }
@@ -110,6 +118,18 @@
expect(JSON.parse(response.body)["errors"].class).to eq Array
expect(JSON.parse(response.body)["errors"].first.class).to eq String
end
+ it "should return 422 if update is a key/value when the vocab uses single values" do
+ put 'update', params: { format:'json', id: :units, entry: { key: 'value' } }
+ expect(response.status).to eq(422)
+ expect(JSON.parse(response.body)["errors"].class).to eq Array
+ expect(JSON.parse(response.body)["errors"].first.class).to eq String
+ end
+ it "should return 422 if update is a value when the vocab uses key/value pairs" do
+ put 'update', params: { format:'json', id: :identifier_types, entry: "New Unit" }
+ expect(response.status).to eq(422)
+ expect(JSON.parse(response.body)["errors"].class).to eq Array
+ expect(JSON.parse(response.body)["errors"].first.class).to eq String
+ end
end
end
diff --git a/app/assets/javascripts/dropdown_text_fields.js.coffee b/spec/factories/checkouts.rb
similarity index 66%
rename from app/assets/javascripts/dropdown_text_fields.js.coffee
rename to spec/factories/checkouts.rb
index 1f4c254579..c18deb9713 100644
--- a/app/assets/javascripts/dropdown_text_fields.js.coffee
+++ b/spec/factories/checkouts.rb
@@ -1,23 +1,23 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
# specific language governing permissions and limitations under the License.
# --- END LICENSE_HEADER BLOCK ---
+FactoryBot.define do
+ factory :checkout do
+ user { FactoryBot.create(:user) }
+ media_object_id { FactoryBot.create(:published_media_object, visibility: 'public').id }
+ checkout_time { DateTime.now }
+ return_time { DateTime.now + 2.weeks }
+ end
+end
-$ ->
- $(document).on 'click', '.dropdown-menu li a.dropdown-field', (event) ->
- event.preventDefault()
- d = $(this).parent()
- group = d.closest('.input-group-btn')
- group.find('.dropdown-toggle span').first().text(d.find('a').text())
- group.find('input[type="hidden"]').val(d.find('span.hidden').text())
-
diff --git a/spec/factories/users.rb b/spec/factories/users.rb
index 00bd3e42e9..bc6f50fb22 100644
--- a/spec/factories/users.rb
+++ b/spec/factories/users.rb
@@ -44,6 +44,12 @@
end
factory :user_lti do
end
+
+ trait :with_identity do
+ after(:create) do |user|
+ Identity.create!(email: user.email, password: user.password)
+ end
+ end
end
factory :cataloger, class: User do
diff --git a/spec/features/capybara_checkouts_spec.rb b/spec/features/capybara_checkouts_spec.rb
new file mode 100644
index 0000000000..6734a21e78
--- /dev/null
+++ b/spec/features/capybara_checkouts_spec.rb
@@ -0,0 +1,44 @@
+# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+# University. Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+#
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# --- END LICENSE_HEADER BLOCK ---
+
+require 'rails_helper'
+
+describe "Checkouts", skip: "Datatables fails to load only in test" do
+ after { Warden.test_reset! }
+ before :each do
+ @user = FactoryBot.create(:user)
+ login_as @user, scope: :user
+ end
+ let(:active_checkout) { FactoryBot.create(:checkout, user: @user) }
+ let(:returned_checkout) { FactoryBot.create(:checkout, user: @user, return_time: DateTime.current - 1.day) }
+
+ it "displays a table of active checkouts" do
+ visit('/checkouts')
+ expect(page).to have_content('Media object')
+ expect(page).to have_content('Checkout time')
+ expect(page).to have_content('Return time')
+ expect(page).to have_content('Time remaining')
+ expect(page).to have_link('Return All')
+ expect(page).to have_link('Return')
+ expect(page).to have_link(active_checkout.media_object.title)
+ expect(page).not_to have_link(returned_checkout.media_object.title)
+ end
+
+ it "displays active and inactive checkouts when checkbox is checked", js: true do
+ visit('/checkouts')
+ check('inactive_checkouts')
+ expect(page).to have_link(active_checkout.media_object.title)
+ expect(page).to have_link(returned_checkout.media_object.title)
+ end
+end
diff --git a/spec/features/login_redirect_spec.rb b/spec/features/login_redirect_spec.rb
new file mode 100644
index 0000000000..88027f1dab
--- /dev/null
+++ b/spec/features/login_redirect_spec.rb
@@ -0,0 +1,52 @@
+# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+# University. Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+#
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# --- END LICENSE_HEADER BLOCK ---
+
+require 'rails_helper'
+
+describe 'Login Redirects' do
+ let(:user) { FactoryBot.create(:user, :with_identity) }
+
+ describe '/media_objects/:id' do
+ let(:media_object) { FactoryBot.create(:fully_searchable_media_object, master_files: [master_file]) }
+ let(:master_file) { FactoryBot.create(:master_file, :with_derivative) }
+
+ it 'redirects to item page' do
+ visit media_object_path(media_object)
+ visit hls_manifest_master_file_path(media_object.master_files.first, "high")
+ sign_in user
+ expect(page.current_path).to eq media_object_path(media_object)
+ end
+
+ context 'visiting item after accessing restricted page' do
+ it 'redirects to item page' do
+ visit playlists_path
+ visit media_object_path(media_object)
+ sign_in user
+ expect(page.current_path).to eq media_object_path(media_object)
+ end
+ end
+ end
+
+ describe '/collection/:id' do
+ let(:collection) { FactoryBot.create(:collection) }
+ let(:media_object) { FactoryBot.create(:fully_searchable_media_object, collection: collection) }
+
+ it 'redirects to collection page' do
+ visit collections_path(collection, format: :html)
+ visit poster_collection_path(collection)
+ sign_in user
+ expect(page.current_path).to eq collections_path(collection, format: :html)
+ end
+ end
+end
diff --git a/spec/features/media_object_spec.rb b/spec/features/media_object_spec.rb
index 65057eddd3..a9595ea513 100644
--- a/spec/features/media_object_spec.rb
+++ b/spec/features/media_object_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -17,9 +17,11 @@
describe 'MediaObject' do
after { Warden.test_reset! }
let(:media_object) { FactoryBot.build(:media_object).tap {|mo| mo.workflow.last_completed_step = "resource-description"} }
+ let!(:master_file) { FactoryBot.create(:master_file, media_object: media_object) }
before :each do
@user = FactoryBot.create(:administrator)
login_as @user, scope: :user
+ FactoryBot.create(:checkout, media_object_id: media_object.id, user_id: @user.id).save
end
it 'can visit a media object' do
media_object.save
@@ -55,12 +57,106 @@
visit media_object_path(media_object)
expect(page.has_content?(summary)).to be_truthy
end
- it 'displays the contriburs properly' do
+ it 'displays the contributors properly' do
contributor = 'Jamie Lannister'
media_object.contributor = [contributor]
media_object.save
visit media_object_path(media_object)
expect(page.has_content?(contributor)).to be_truthy
end
+ context 'cdl is enabled' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(true) }
+ it 'displays the lending period properly' do
+ lending_period = 90000
+ media_object.lending_period = lending_period
+ media_object.save
+ visit media_object_path(media_object)
+ expect(page.has_content?('1 day 1 hour')).to be_truthy
+ end
+ end
+ context 'cdl is disabled' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(false) }
+ it 'does not display the lending period' do
+ lending_period = 90000
+ media_object.lending_period = lending_period
+ media_object.save
+ visit media_object_path(media_object)
+ expect(page.has_content?('1 day 1 hour')).to be_falsey
+ end
+ end
+ end
+ describe 'displays cdl controls' do
+ context 'enabled at application level' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(true) }
+ let(:available_media_object) { FactoryBot.build(:media_object) }
+ let!(:mf) { FactoryBot.create(:master_file, media_object: available_media_object) }
+
+ context 'displays embedded player' do
+ it 'with proper text when available' do
+ visit media_object_path(available_media_object)
+ expect(page).to have_content('Borrow this item to access media resources.')
+ expect(page).to have_selector(:link_or_button, 'Borrow for 14 days')
+ end
+ it 'with proper text when not available' do
+ # Checkout the available media object with a different user
+ normal_user = FactoryBot.create(:user)
+ FactoryBot.create(:checkout, media_object_id: available_media_object.id, user_id: normal_user.id).save
+
+ visit media_object_path(available_media_object)
+ expect(page.has_content?('This resource is currently checked out by another user.')).to be_truthy
+ expect(page.has_content?('This item is due to be returned on')).to be_truthy
+ end
+ end
+
+ it 'displays countdown timer when checked out' do
+ visit media_object_path(media_object)
+ expect(page.has_content?('Time remaining:')).to be_truthy
+ expect(page).to have_selector(:link_or_button, 'Return now')
+ end
+ end
+
+ context 'when cdl is turned off at collection level' do
+ let(:collection) { FactoryBot.create(:collection, cdl_enabled: false) }
+ let(:available_media_object) { FactoryBot.create(:media_object, collection_id: collection.id) }
+ it 'does not display cdl text' do
+ visit media_object_path(available_media_object)
+ expect(page).not_to have_content('Borrow this item to access media resources.')
+ expect(page).not_to have_selector(:link_or_button, 'Borrow for 14 days')
+ end
+ end
+
+ context 'disabled for application, enabled for collection' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(false) }
+ let(:collection) { FactoryBot.create(:collection, cdl_enabled: true) }
+ let(:available_media_object) { FactoryBot.create(:media_object, collection_id: collection.id) }
+ let!(:mf) { FactoryBot.create(:master_file, media_object: available_media_object) }
+
+ context 'displays embedded player' do
+ it 'with proper text when available' do
+ visit media_object_path(available_media_object)
+ expect(page).to have_content('Borrow this item to access media resources.')
+ expect(page).to have_selector(:link_or_button, 'Borrow for 14 days')
+ end
+ it 'with proper text when not available' do
+ # Checkout the available media object with a different user
+ normal_user = FactoryBot.create(:user)
+ FactoryBot.create(:checkout, media_object_id: available_media_object.id, user_id: normal_user.id).save
+
+ visit media_object_path(available_media_object)
+ expect(page.has_content?('This resource is currently checked out by another user.')).to be_truthy
+ expect(page.has_content?('This item is due to be returned on')).to be_truthy
+ end
+ it 'displays countdown timer when checked out' do
+ FactoryBot.create(:checkout, media_object_id: available_media_object.id, user_id: @user.id).save
+
+ visit media_object_path(available_media_object)
+ expect(page.has_content?('Time remaining:')).to be_truthy
+ expect(page).to have_selector(:link_or_button, 'Return now')
+ end
+ end
+ end
end
end
diff --git a/spec/helpers/security_helper_spec.rb b/spec/helpers/security_helper_spec.rb
index 41e81461a0..75975b9e91 100644
--- a/spec/helpers/security_helper_spec.rb
+++ b/spec/helpers/security_helper_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -19,9 +19,12 @@
{:id=>"bk1289888", :label=>nil, :is_video=>true, :poster_image=>nil, :embed_code=>"", :stream_hls=>[{:quality=>nil, :mimetype=>nil, :format=>"other", :url=>"http://localhost:3000/6f69c008-06a4-4bad-bb60-26297f0b4c06/35bddaa0-fbb4-404f-ab76-58f22921529c/warning.mp4.m3u8"}], :captions_path=>nil, :captions_format=>nil, :duration=>200.0, :embed_title=>"Fugit veniam numquam harum et adipisci est est. - video.mp4"}
}
let(:secure_url) { "http://example.com/secure/id" }
+ let(:media_object) { FactoryBot.create(:media_object) }
+ let(:user) { FactoryBot.create(:user) }
before do
allow(SecurityHandler).to receive(:secure_url).and_return(secure_url)
+ allow(helper).to receive(:current_user).and_return(user)
end
context 'when AWS streaming server' do
@@ -38,25 +41,63 @@
describe '#add_stream_cookies' do
it 'adds security tokens to cookies' do
- expect { helper.add_stream_cookies(stream_info) }.to change { controller.cookies.sum {|k,v| 1} }.by(1)
- expect(controller.cookies[secure_cookies.first[0]]).to eq secure_cookies.first[1][:value]
+ expect { helper.add_stream_cookies(stream_info) }.to change { controller.cookies.sum {|k,v| 1} }.by(1)
+ expect(controller.cookies[secure_cookies.first[0]]).to eq secure_cookies.first[1][:value]
end
end
describe '#secure_streams' do
- it 'sets secure cookies' do
- expect { helper.secure_streams(stream_info) }.to change { controller.cookies.sum {|k,v| 1} }.by(1)
- expect(controller.cookies[secure_cookies.first[0]]).to eq secure_cookies.first[1][:value]
+ context 'controlled digital lending is disabled' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(false) }
+ it 'sets secure cookies' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.to change { controller.cookies.sum {|k,v| 1} }.by(1)
+ expect(controller.cookies[secure_cookies.first[0]]).to eq secure_cookies.first[1][:value]
+ end
+
+ it 'rewrites urls in the stream_info' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
+ [:stream_hls].each do |protocol|
+ stream_info[protocol].each do |quality|
+ expect(quality[:url]).to eq secure_url
+ end
+ end
+ end
end
+ context 'controlled digital lending is enabled' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(true) }
+ context 'the user has the item checked out' do
+ before { FactoryBot.create(:checkout, media_object_id: media_object.id, user_id: user.id)}
+ it 'sets secure cookies' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.to change { controller.cookies.sum {|k,v| 1} }.by(1)
+ expect(controller.cookies[secure_cookies.first[0]]).to eq secure_cookies.first[1][:value]
+ end
- it 'rewrites urls in the stream_info' do
- expect { helper.secure_streams(stream_info) }.to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
- [:stream_hls].each do |protocol|
- stream_info[protocol].each do |quality|
- expect(quality[:url]).to eq secure_url
- end
- end
- end
+ it 'rewrites urls in the stream_info' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
+ [:stream_hls].each do |protocol|
+ stream_info[protocol].each do |quality|
+ expect(quality[:url]).to eq secure_url
+ end
+ end
+ end
+ end
+ context 'the user does not have the item checked out' do
+ it 'does not set secure cookies' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.not_to change { controller.cookies.sum {|k,v| 1} }
+ expect(controller.cookies[secure_cookies.first[0]]).not_to eq secure_cookies.first[1][:value]
+ end
+
+ it 'does not rewrite urls in the stream_info' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.not_to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
+ [:stream_hls].each do |protocol|
+ stream_info[protocol].each do |quality|
+ expect(quality[:url]).not_to eq secure_url
+ end
+ end
+ end
+ end
+ end
end
end
@@ -68,15 +109,51 @@
end
describe '#secure_streams' do
- it 'sets secure cookies' do
- expect { helper.secure_streams(stream_info) }.not_to change { controller.cookies.sum {|k,v| 1} }
+ context 'controlled digital lending is disabled' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(false) }
+ it 'sets secure cookies' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.not_to change { controller.cookies.sum {|k,v| 1} }
+ end
+
+ it 'rewrites urls in the stream_info' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
+ [:stream_hls].each do |protocol|
+ stream_info[protocol].each do |quality|
+ expect(quality[:url]).to eq secure_url
+ end
+ end
+ end
end
+ context 'controlled digital lending is enabled' do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(true) }
+ context 'the user has the item checked out' do
+ before { FactoryBot.create(:checkout, media_object_id: media_object.id, user_id: user.id)}
+ it 'sets secure cookies' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.not_to change { controller.cookies.sum {|k,v| 1} }
+ end
+
+ it 'rewrites urls in the stream_info' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
+ [:stream_hls].each do |protocol|
+ stream_info[protocol].each do |quality|
+ expect(quality[:url]).to eq secure_url
+ end
+ end
+ end
+ end
+ context 'the user does not have the item checked out' do
+ it 'sets secure cookies' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.not_to change { controller.cookies.sum {|k,v| 1} }
+ end
- it 'rewrites urls in the stream_info' do
- expect { helper.secure_streams(stream_info) }.to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
- [:stream_hls].each do |protocol|
- stream_info[protocol].each do |quality|
- expect(quality[:url]).to eq secure_url
+ it 'does not rewrite urls in the stream_info' do
+ expect { helper.secure_streams(stream_info, media_object.id) }.not_to change { stream_info.slice(:stream_flash, :stream_hls).values.flatten.collect {|v| v[:url]} }
+ [:stream_hls].each do |protocol|
+ stream_info[protocol].each do |quality|
+ expect(quality[:url]).not_to eq secure_url
+ end
+ end
end
end
end
diff --git a/spec/jobs/bulk_action_job_spec.rb b/spec/jobs/bulk_action_job_spec.rb
index 1e12823e46..9d57bdc6a4 100644
--- a/spec/jobs/bulk_action_job_spec.rb
+++ b/spec/jobs/bulk_action_job_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -79,12 +79,14 @@ def check_push(result)
co.default_read_groups = ["co_group"]
co.default_hidden = true
co.default_visibility = 'public'
+ co.default_lending_period = 129600
co.save!
mo.read_users = ["mo_user"]
mo.read_groups = ["mo_group"]
mo.hidden = false
mo.visibility = 'restricted'
+ mo.lending_period = 1209600
mo.save!
end
@@ -95,6 +97,25 @@ def check_push(result)
expect(mo.visibility).to eq('public')
end
+ context "with cdl enabled" do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(true) }
+ it "changes item lending period" do
+ BulkActionJobs::ApplyCollectionAccessControl.perform_now co.id, true
+ mo.reload
+ expect(mo.lending_period).to eq(co.default_lending_period)
+ end
+ end
+
+ context "with cdl disabled" do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(false) }
+ it "does not change item lending period" do
+ BulkActionJobs::ApplyCollectionAccessControl.perform_now co.id, true
+ mo.reload
+ expect(mo.lending_period).not_to eq(co.default_lending_period)
+ end
+ end
+
context "overwrite is true" do
it "replaces existing Special Access" do
BulkActionJobs::ApplyCollectionAccessControl.perform_now co.id, true
diff --git a/spec/lib/day_hour_string_spec.rb b/spec/lib/day_hour_string_spec.rb
new file mode 100644
index 0000000000..fb2ed7c7d2
--- /dev/null
+++ b/spec/lib/day_hour_string_spec.rb
@@ -0,0 +1,52 @@
+# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+# University. Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+#
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# --- END LICENSE_HEADER BLOCK ---
+
+require 'rails_helper'
+
+describe 'DayHourString' do
+ describe 'to_day_hour_s' do
+ context 'when lending period is measured in days' do
+ let(:media_object) { instance_double("MediaObject", lending_period: 172800) }
+
+ it 'returns the lending period as a human readable string' do
+ expect(ActiveSupport::Duration.build(media_object.lending_period).to_day_hour_s).to eq("2 days")
+ end
+ end
+ context 'when lending period is measured in hours' do
+ let(:collection) { instance_double("Admin::Collection", default_lending_period: 7200) }
+
+ it 'returns the lending period as a human readable string' do
+ expect(ActiveSupport::Duration.build(collection.default_lending_period).to_day_hour_s).to eq("2 hours")
+ end
+ end
+ context 'when lending period is measured in days and hours' do
+ let(:media_object) { instance_double("MediaObject", lending_period: 129600) }
+
+ it 'returns the lending period as a human readable string' do
+ expect(ActiveSupport::Duration.build(media_object.lending_period).to_day_hour_s).to eq("1 day 12 hours")
+ end
+ end
+ context 'when lending period includes 1 day and/or 1 hour' do
+ let(:day) { instance_double("MediaObject", lending_period: 86400) }
+ let(:hour) { instance_double("MediaObject", lending_period: 3600) }
+ let(:day_hour) { instance_double("Admin::Collection", default_lending_period: 90000) }
+
+ it 'returns the lending period as a human readable string with singular day and/or hour' do
+ expect(ActiveSupport::Duration.build(day.lending_period).to_day_hour_s).to eq("1 day")
+ expect(ActiveSupport::Duration.build(hour.lending_period).to_day_hour_s).to eq("1 hour")
+ expect(ActiveSupport::Duration.build(day_hour.default_lending_period).to_day_hour_s).to eq("1 day 1 hour")
+ end
+ end
+ end
+end
diff --git a/spec/mailers/comments_mailer_spec.rb b/spec/mailers/comments_mailer_spec.rb
new file mode 100644
index 0000000000..3540364ffa
--- /dev/null
+++ b/spec/mailers/comments_mailer_spec.rb
@@ -0,0 +1,64 @@
+# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+# University. Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+#
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# --- END LICENSE_HEADER BLOCK ---
+
+require 'rails_helper'
+
+describe 'CommentsMailer' do
+
+ include EmailSpec::Helpers
+ include EmailSpec::Matchers
+
+ describe 'contact_email' do
+ let(:email) { Faker::Internet.email }
+ let(:comment) {
+ {
+ name: Faker::Name.name,
+ subject: 'General feedback',
+ email: email,
+ email_confirmation: email,
+ nickname: '',
+ comment: Faker::Lorem.sentence
+ }
+ }
+
+ let(:mail) { CommentsMailer.contact_email(comment.to_h) }
+
+ it 'has correct e-mail address' do
+ expect(mail).to deliver_to(Settings.email.comments)
+ end
+
+ it 'has correct subject' do
+ expect(mail).to have_subject("#{Settings.name}: #{comment[:subject]}")
+ end
+
+ context 'body' do
+ it 'has commenter\'s information' do
+ expect(mail).to have_body_text(comment[:name])
+ expect(mail).to have_body_text(comment[:email])
+ end
+ it 'has instance information' do
+ expect(mail).to have_body_text(Settings.name)
+ end
+ it 'has the subject' do
+ expect(mail).to have_body_text(comment[:subject])
+ end
+ it 'has the comment' do
+ expect(mail).to have_body_text(comment[:comment])
+ end
+ it 'has the date received' do
+ expect(mail).to have_body_text(DateTime.now.to_s)
+ end
+ end
+ end
+end
diff --git a/spec/mailers/previews/comments_mailer_preview.rb b/spec/mailers/previews/comments_mailer_preview.rb
new file mode 100644
index 0000000000..6295d4f42d
--- /dev/null
+++ b/spec/mailers/previews/comments_mailer_preview.rb
@@ -0,0 +1,13 @@
+class CommentsMailerPreview < ActionMailer::Preview
+ def contact_email
+ @comment = Comment.new
+ @comment.name = 'Eddie Munson'
+ @comment.nickname = ''
+ @comment.email = 'emunson@archive.edu'
+ @comment.email_confirmation = 'emunson@archive.edu'
+ @comment.subject = "General feedback"
+ @comment.comment = 'Testing, testing, testing'
+
+ CommentsMailer.contact_email(@comment.to_h)
+ end
+end
diff --git a/spec/models/checkout_spec.rb b/spec/models/checkout_spec.rb
new file mode 100644
index 0000000000..01e0a7b07b
--- /dev/null
+++ b/spec/models/checkout_spec.rb
@@ -0,0 +1,115 @@
+require 'rails_helper'
+require 'cancan/matchers'
+
+RSpec.describe Checkout, type: :model do
+ let(:checkout) { FactoryBot.create(:checkout) }
+
+ describe 'validations' do
+ let(:checkout) { FactoryBot.build(:checkout) }
+
+ it { is_expected.to validate_presence_of(:user) }
+ it { is_expected.to validate_presence_of(:media_object_id) }
+ it { is_expected.to validate_presence_of(:checkout_time) }
+ it { is_expected.to validate_presence_of(:return_time) }
+ end
+
+ describe 'abilities' do
+ let(:user) { checkout.user }
+ subject(:ability) { Ability.new(user, {}) }
+
+ it { is_expected.to be_able_to(:create, checkout) }
+ it { is_expected.to be_able_to(:read, checkout) }
+ it { is_expected.to be_able_to(:update, checkout) }
+ it { is_expected.to be_able_to(:destroy, checkout) }
+
+ context 'when unable to read media object' do
+ let(:private_media_object) { FactoryBot.create(:media_object) }
+ let(:checkout) { FactoryBot.create(:checkout, media_object_id: private_media_object.id) }
+
+ it { is_expected.not_to be_able_to(:create, checkout) }
+ end
+
+ context 'when checkout is owned by a different user' do
+ let(:user) { FactoryBot.create(:user) }
+
+ it { is_expected.not_to be_able_to(:create, checkout) }
+ it { is_expected.not_to be_able_to(:read, checkout) }
+ it { is_expected.not_to be_able_to(:update, checkout) }
+ it { is_expected.not_to be_able_to(:destroy, checkout) }
+ end
+ end
+
+ describe 'scopes' do
+ let(:user) { FactoryBot.create(:user) }
+ let(:media_object) { FactoryBot.create(:media_object) }
+ let!(:checkout) { FactoryBot.create(:checkout, user: user, media_object_id: media_object.id) }
+ let!(:user_checkout) { FactoryBot.create(:checkout, user: user) }
+ let!(:other_checkout) { FactoryBot.create(:checkout) }
+ let!(:expired_checkout) { FactoryBot.create(:checkout, user: user, media_object_id: media_object.id) }
+
+ before do
+ expired_checkout.update(return_time: DateTime.current - 1.day)
+ end
+
+ describe 'active_for_media_object' do
+ it 'returns active checkouts for the given media object' do
+ expect(Checkout.active_for_media_object(media_object.id)).to include(checkout)
+ end
+
+ it 'does not return inactive checkouts' do
+ expect(Checkout.active_for_media_object(media_object.id)).not_to include(expired_checkout)
+ end
+
+ it 'does not return other checkouts' do
+ expect(Checkout.active_for_media_object(media_object.id)).not_to include(other_checkout)
+ end
+ end
+
+ describe 'active_for_user' do
+ it 'returns active checkouts for the given user' do
+ expect(Checkout.active_for_user(user.id)).to include(checkout)
+ end
+
+ it 'does not return inactive checkouts' do
+ expect(Checkout.active_for_user(user.id)).not_to include(expired_checkout)
+ end
+
+ it 'does not return other checkouts' do
+ expect(Checkout.active_for_media_object(media_object.id)).not_to include(other_checkout)
+ end
+ end
+
+ describe 'returned_for_user' do
+ it 'does not return active checkouts for the given user' do
+ expect(Checkout.returned_for_user(user.id)).not_to include(checkout)
+ end
+
+ it 'does return inactive checkouts' do
+ expect(Checkout.returned_for_user(user.id)).to include(expired_checkout)
+ end
+
+ it 'does not return other checkouts' do
+ expect(Checkout.active_for_media_object(media_object.id)).not_to include(other_checkout)
+ end
+ end
+
+ describe 'checked_out_to_user' do
+ it 'returns the specified checkout' do
+ expect(Checkout.checked_out_to_user(media_object.id, user.id)).to include(checkout)
+ end
+
+ it "does not return the user's other checkouts" do
+ expect(Checkout.checked_out_to_user(media_object.id, user.id)).not_to include(user_checkout)
+ end
+ end
+ end
+
+ describe 'media_object' do
+ let(:media_object) { FactoryBot.create(:media_object) }
+ let(:checkout) { FactoryBot.create(:checkout, media_object_id: media_object.id) }
+
+ it 'returns the checked out MediaObject' do
+ expect(checkout.media_object).to eq media_object
+ end
+ end
+end
diff --git a/spec/models/collection_spec.rb b/spec/models/collection_spec.rb
index 494f08744a..f6fd682b27 100644
--- a/spec/models/collection_spec.rb
+++ b/spec/models/collection_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -341,6 +341,16 @@
expect(collection.inherited_edit_users).not_to include(user.user_key)
end
end
+ describe "#editors_and_managers" do
+ it "should return all collection editors and managers" do
+ collection.edit_users = [user.user_key, "pdinh"]
+ allow(Avalon::RoleControls).to receive("users").with("manager").and_return([user.user_key, "atomical"])
+ allow(Avalon::RoleControls).to receive("users").with("administrator").and_return([])
+ expect(collection.editors_and_managers).to include(collection.editors.first)
+ expect(collection.editors_and_managers).to include(collection.managers.first)
+ expect(collection.editors_and_managers).not_to include("atomical")
+ end
+ end
end
describe "depositors" do
@@ -587,7 +597,7 @@
Settings.dropbox.path = "s3://#{bucket}/dropbox"
end
- it "should be able to handle special S3 avoidable characters and create object" do
+ it "should be able to handle special S3 avoidable characters and create object" do
remote_object = double(key: corrected_collection_name, bucket_name: bucket, exists?: false)
allow(Aws::S3::Client).to receive(:new).and_return(my_client)
allow(Aws::S3::Object).to receive(:new).and_return(remote_object)
@@ -601,4 +611,49 @@
Settings.dropbox.path = old_path
end
end
+
+ describe 'default_lending_period' do
+ context 'a custom lending period has not been set' do
+ it 'sets the lending period equal to the system default' do
+ expect(collection.default_lending_period).to eq ActiveSupport::Duration.parse(Settings.controlled_digital_lending.default_lending_period).to_i
+ end
+ end
+ context 'a custom lending period has been set' do
+ let(:collection) { FactoryBot.create(:collection, default_lending_period: 86400) }
+ it 'leaves the lending period equal to the custom value' do
+ expect(collection.default_lending_period).to eq 86400
+ end
+ end
+ end
+
+ describe 'cdl_enabled' do
+ context 'collections disabled at the application level' do
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(false) }
+ it 'sets collection cdl to be disabled by default' do
+ expect(collection.cdl_enabled?).to be false
+ end
+ context 'turned on for collection' do
+ let(:collection2) { FactoryBot.create(:collection) }
+ it 'does not affect other collections' do
+ collection.cdl_enabled = true
+ expect(collection.cdl_enabled?).to be true
+ expect(collection2.cdl_enabled?).to be false
+ end
+ end
+ end
+ context 'collections enabled at the application level' do
+ before { allow(Settings.controlled_digital_lending).to receive(:collections_enabled).and_return(true) }
+ it 'sets collection cdl to be enabled by default' do
+ expect(collection.cdl_enabled?).to be true
+ end
+ context 'turned off for collection' do
+ let(:collection2) { FactoryBot.create(:collection) }
+ it 'does not affect other collections' do
+ collection.cdl_enabled = false
+ expect(collection.cdl_enabled?).to be false
+ expect(collection2.cdl_enabled?).to be true
+ end
+ end
+ end
+ end
end
diff --git a/spec/models/master_file_spec.rb b/spec/models/master_file_spec.rb
index 28570f22c6..611f832bb4 100644
--- a/spec/models/master_file_spec.rb
+++ b/spec/models/master_file_spec.rb
@@ -615,6 +615,35 @@
end
end
+ describe 'find_frame_source' do
+ context 'when master_file has been deleted' do
+ subject(:video_master_file) { FactoryBot.create(:master_file, :with_media_object, :with_derivative, display_aspect_ratio: '1', file_location: '') }
+ let(:source) { video_master_file.send(:find_frame_source) }
+
+ context 'when derivatives are accessible' do
+ let(:high_derivative_locator) { FileLocator.new(video_master_file.derivatives.where(quality_ssi: 'high').first.absolute_location) }
+
+ it 'uses high derivative' do
+ expect(File).to receive(:exists?).with(high_derivative_locator.location).and_return(true)
+ expect(source[:source]).to eq high_derivative_locator.location
+ expect(source[:non_temp_file]).to eq true
+ end
+ end
+
+ context 'when derivatives are not accessible' do
+ let(:high_derivative_locator) { FileLocator.new(video_master_file.derivatives.where(quality_ssi: 'high').first.absolute_location) }
+ let(:hls_temp_file) { "/tmp/temp_segment.ts" }
+
+ it 'falls back to HLS' do
+ expect(video_master_file).to receive(:create_frame_source_hls_temp_file).and_return(hls_temp_file)
+ expect(File).to receive(:exists?).with(high_derivative_locator.location).and_return(false)
+ expect(source[:source]).to eq '/tmp/temp_segment.ts'
+ expect(source[:non_temp_file]).to eq false
+ end
+ end
+ end
+ end
+
describe '#ffmpeg_frame_options' do
subject { FactoryBot.create(:master_file, :with_media_object, :with_derivative, display_aspect_ratio: '1') }
diff --git a/spec/models/media_object_spec.rb b/spec/models/media_object_spec.rb
index 3d9d6acfc7..0dbc52cb0b 100644
--- a/spec/models/media_object_spec.rb
+++ b/spec/models/media_object_spec.rb
@@ -17,7 +17,7 @@
describe MediaObject do
let(:media_object) { FactoryBot.create(:media_object) }
-
+
it 'assigns a noid id' do
media_object = MediaObject.new
expect { media_object.assign_id! }.to change { media_object.id }.from(nil).to(String)
@@ -770,7 +770,7 @@
describe '#collection=' do
let(:new_media_object) { MediaObject.new }
- let(:collection) { FactoryBot.create(:collection, default_hidden: true, default_read_users: ['archivist1@example.com'], default_read_groups: ['TestGroup', 'public'])}
+ let(:collection) { FactoryBot.create(:collection, default_hidden: true, default_read_users: ['archivist1@example.com'], default_read_groups: ['TestGroup', 'public'], default_lending_period: 86400)}
it 'sets hidden based upon collection for new media objects' do
expect {new_media_object.collection = collection}.to change {new_media_object.hidden?}.to(true).from(false)
@@ -785,11 +785,15 @@
expect(new_media_object.read_groups).not_to include "TestGroup"
expect {new_media_object.collection = collection}.to change {new_media_object.read_groups}.to include 'TestGroup'
end
+ it 'sets lending_period based upon collection for new media objects' do
+ expect {new_media_object.collection = collection}.to change {new_media_object.lending_period}.to(86400).from(nil)
+ end
it 'does not change access control fields if not new media object' do
expect {media_object.collection = collection}.not_to change {new_media_object.hidden?}
expect {media_object.collection = collection}.not_to change {new_media_object.visibility}
expect {media_object.collection = collection}.not_to change {new_media_object.read_users}
expect {media_object.collection = collection}.not_to change {new_media_object.read_users}
+ expect {media_object.collection = collection}.not_to change {new_media_object.lending_period}
end
end
@@ -929,7 +933,7 @@
describe '#merge!' do
let(:media_objects) { [] }
-
+
before do
2.times { media_objects << FactoryBot.create(:media_object, :with_master_file) }
end
@@ -1006,4 +1010,39 @@
end
it_behaves_like "an object that has supplemental files"
+
+ describe 'lending_status' do
+ it 'is available when no active checkouts' do
+ expect(media_object.lending_status).to eq "available"
+ end
+
+ context 'with an active checkout' do
+ before { FactoryBot.create(:checkout, media_object_id: media_object.id) }
+
+ it 'is checked_out' do
+ expect(media_object.lending_status).to eq "checked_out"
+ end
+ end
+ end
+
+ describe 'lending_period' do
+ context 'there is not a custom lending period' do
+ it 'sets the lending period to the system default' do
+ expect(media_object.lending_period).to eq ActiveSupport::Duration.parse(Settings.controlled_digital_lending.default_lending_period).to_i
+ end
+ end
+ context 'the parent collection has a custom lending period' do
+ let(:collection) { FactoryBot.create(:collection, default_lending_period: 86400) }
+ let(:media_object) { FactoryBot.create(:media_object, collection_id: collection.id) }
+ it "sets the lending period to equal the collection's default lending period" do
+ expect(media_object.lending_period).to eq collection.default_lending_period
+ end
+ context 'the media object has a custom lending period' do
+ let(:media_object) { FactoryBot.create(:media_object, collection_id: collection.id, lending_period: 172800)}
+ it "leaves the lending period equal to the custom value" do
+ expect(media_object.lending_period).to eq 172800
+ end
+ end
+ end
+ end
end
diff --git a/spec/models/search_builder_spec.rb b/spec/models/search_builder_spec.rb
index 10dcf1ab02..db4c9ed5eb 100644
--- a/spec/models/search_builder_spec.rb
+++ b/spec/models/search_builder_spec.rb
@@ -26,7 +26,7 @@
it "should include policy clauses when user is manager" do
allow(subject).to receive(:current_ability).and_return(ability)
allow(subject).to receive(:policy_clauses).and_return("test:clause")
- expect(subject.only_published_items({})).to eq ["test:clause OR workflow_published_sim:\"Published\""]
+ expect(subject.only_published_items({})).to eq "test:clause OR workflow_published_sim:\"Published\""
end
end
end
diff --git a/spec/models/stream_token_spec.rb b/spec/models/stream_token_spec.rb
index 306b3dc5d6..0a148aa4ee 100644
--- a/spec/models/stream_token_spec.rb
+++ b/spec/models/stream_token_spec.rb
@@ -15,6 +15,8 @@
require 'rails_helper'
describe StreamToken do
+ include ActiveSupport::Testing::TimeHelpers
+
let(:target) { '232A9B17-CCA8-4368-9599-117D2AF1D2EC' }
describe 'existing session' do
@@ -81,4 +83,16 @@
end
end
end
+
+ describe 'purge_expired!' do
+ let(:session) { { session_id: '00112233445566778899aabbccddeeff' } }
+ let!(:token) { StreamToken.find_or_create_session_token(session, target) }
+
+ it 'removes purged tokens from session' do
+ travel_to StreamToken.find_by(token: token).expires + 1.minute do
+ StreamToken.purge_expired!(session)
+ expect(session[:hash_tokens]).not_to include(token)
+ end
+ end
+ end
end
diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb
index 5523ec5c37..a7f68d6b76 100644
--- a/spec/models/user_spec.rb
+++ b/spec/models/user_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -121,6 +121,10 @@
allow_any_instance_of(Net::LDAP).to receive(:search).and_return([entry])
expect(user.send(:ldap_groups)).to eq(['Group1','Group2'])
end
+ it "should return [] when ldap search returns nil" do
+ allow_any_instance_of(Net::LDAP).to receive(:search).and_return(nil)
+ expect(user.send(:ldap_groups)).to eq([])
+ end
end
describe "#autocomplete" do
@@ -136,6 +140,12 @@
bookmark = Bookmark.create(document_id: Faker::Number.digit, user: user)
expect { user.destroy }.to change { Bookmark.exists? bookmark.id }.from( true ).to( false )
end
+ it 'removes checkouts for user' do
+ user = FactoryBot.create(:public)
+ active_checkout = FactoryBot.create(:checkout, user_id: user.id)
+ returned_checkout = FactoryBot.create(:checkout, user_id: user.id, return_time: DateTime.current - 1.day)
+ expect { user.destroy }.to change { Checkout.all.count }.from(2).to(0)
+ end
end
describe '#timeline_tags' do
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index a643870474..73f8c4048f 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -115,7 +115,7 @@
config.before :suite do
WebMock.disable_net_connect!(allow: ['localhost', '127.0.0.1', 'fedora', 'fedora-test', 'solr', 'solr-test', 'matterhorn', 'https://chromedriver.storage.googleapis.com'])
DatabaseCleaner.allow_remote_database_url = true
- DatabaseCleaner.url_allowlist = ['postgres://postgres:password@db/avalon', 'postgresql://postgres@localhost:5432/postgres']
+ DatabaseCleaner.url_allowlist = ['postgres://postgres:password@db/avalon', 'postgresql://postgres@localhost:5432/postgres', 'postgresql://postgres:password@db-test/avalon']
DatabaseCleaner.clean_with(:truncation)
ActiveFedora::Cleaner.clean!
disable_production_minter!
@@ -187,9 +187,11 @@
# config.include FactoryBot::Syntax::Methods
config.include Devise::Test::ControllerHelpers, type: :controller
config.include ControllerMacros, type: :controller
+ config.include Devise::Test::IntegrationHelpers, type: :request
config.include Warden::Test::Helpers,type: :feature
config.include FixtureMacros, type: :controller
config.include OptionalExample
+ config.include Features::SessionHelpers, type: :feature
end
FactoryBot::SyntaxRunner.class_eval do
diff --git a/spec/requests/api_authentication_spec.rb b/spec/requests/api_authentication_spec.rb
new file mode 100644
index 0000000000..e50792b131
--- /dev/null
+++ b/spec/requests/api_authentication_spec.rb
@@ -0,0 +1,54 @@
+# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+# University. Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+#
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# --- END LICENSE_HEADER BLOCK ---
+
+require 'rails_helper.rb'
+
+# These tests are for the #handle_api_request method in the ApplicationController
+describe "API authentication", type: :request do
+ let(:user) { FactoryBot.create(:user) }
+ let!(:media_object) { FactoryBot.create(:published_media_object, visibility: 'private', read_groups: ['ldap_group_2']) }
+ let!(:unauthorized_media_object) { FactoryBot.create(:published_media_object, visibility: 'private') }
+ let(:ldap_groups) { ['ldap_group_1'] }
+ before do
+ ApiToken.create token: 'secret_token', username: user.username, email: user.email
+ allow_any_instance_of(User).to receive(:ldap_groups).and_return(ldap_groups)
+ end
+ it "sets the session information properly" do
+ get "/media_objects/#{media_object.id}.json", headers: { 'Avalon-Api-Key': 'secret_token' }
+ expect(@controller.user_session[:json_api_login]).to eq true
+ expect(@controller.user_session[:full_login]).to be false
+ expect(@controller.user_session[:virtual_groups]).to eq(['ldap_group_1'])
+ end
+ context 'without external groups' do
+ let(:ldap_groups) { [] }
+ it "does not allow user to access unauthorized media object" do
+ get "/media_objects/#{media_object.id}.json", headers: { 'Avalon-Api-Key': 'secret_token' }
+ expect(response.status).to be 401
+ end
+ end
+ context 'with external groups' do
+ let(:ldap_groups) { ['ldap_group_2'] }
+ context '/media_objects/:id.json endpoint' do
+ it 'allows the user to access authorized media objects' do
+ get "/media_objects/#{media_object.id}.json", headers: { 'Avalon-Api-Key': 'secret_token' }
+ expect(response.status).to be 200
+ expect(response.body).to include(media_object.id)
+ end
+ it 'does not allow user to access unauthorized media objects' do
+ get "/media_objects/#{unauthorized_media_object.id}.json", headers: { 'Avalon-Api-Key': 'secret_token' }
+ expect(response.status).to be 401
+ end
+ end
+ end
+end
diff --git a/spec/requests/atom_feed_spec.rb b/spec/requests/atom_feed_spec.rb
index 01491beb53..2275190417 100644
--- a/spec/requests/atom_feed_spec.rb
+++ b/spec/requests/atom_feed_spec.rb
@@ -38,4 +38,28 @@
expect(entry.at("link[@type='application/json']/@href").to_s).to eq media_object_url(media_object, format: :json)
end
end
+
+ describe 'sort' do
+ let!(:media_object1) { FactoryBot.create(:fully_searchable_media_object) }
+ let!(:media_object2) { FactoryBot.create(:fully_searchable_media_object) }
+ let(:updated_date1) do
+ query = ActiveFedora::SolrQueryBuilder.construct_query(ActiveFedora.id_field => media_object1.id)
+ doc = ActiveFedora::SolrService.get(query)['response']['docs'].first
+ doc["timestamp"]
+ end
+ let(:updated_date2) do
+ query = ActiveFedora::SolrQueryBuilder.construct_query(ActiveFedora.id_field => media_object2.id)
+ doc = ActiveFedora::SolrService.get(query)['response']['docs'].first
+ doc["timestamp"]
+ end
+
+ it 'sorts based upon solr timestamp' do
+ get '/catalog.atom?sort=timestamp+desc'
+ atom = Nokogiri::XML(response.body)
+ atom.remove_namespaces!
+ ids = atom.xpath('//entry/id/text()').map { |url| url.to_s.split('/').last }
+ expect(updated_date2 > updated_date1).to eq true
+ expect(ids).to eq [media_object2.id, media_object1.id]
+ end
+ end
end
diff --git a/spec/requests/checkouts_spec.rb b/spec/requests/checkouts_spec.rb
new file mode 100644
index 0000000000..4eb89ba690
--- /dev/null
+++ b/spec/requests/checkouts_spec.rb
@@ -0,0 +1,298 @@
+require 'rails_helper'
+
+# This spec was generated by rspec-rails when you ran the scaffold generator.
+# It demonstrates how one might use RSpec to test the controller code that
+# was generated by Rails when you ran the scaffold generator.
+#
+# It assumes that the implementation code is generated by the rails scaffold
+# generator. If you are using any extension libraries to generate different
+# controller code, this generated spec may or may not pass.
+#
+# It only uses APIs available in rails and/or rspec-rails. There are a number
+# of tools you can use to make these specs even more expressive, but we're
+# sticking to rails and rspec-rails APIs to keep things simple and stable.
+
+RSpec.describe "/checkouts", type: :request do
+ include ActiveSupport::Testing::TimeHelpers
+
+ let(:user) { FactoryBot.create(:user) }
+ let(:media_object) { FactoryBot.create(:published_media_object, visibility: 'public') }
+ let(:checkout) { FactoryBot.create(:checkout, user: user, media_object_id: media_object.id) }
+
+ # This should return the minimal set of attributes required to create a valid
+ # Checkout. As you add validations to Checkout, be sure to
+ # adjust the attributes here as well.
+ let(:valid_attributes) {
+ { media_object_id: media_object.id }
+ }
+
+ let(:invalid_attributes) {
+ { media_object_id: 'fake-id' }
+ }
+
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+
+ describe "GET /index" do
+ before { checkout }
+
+ context "unauthenticated user" do
+ it "renders the restricted content page" do
+ get checkouts_url
+ expect(response).to render_template(:restricted_pid)
+ get checkouts_url, params: { display_returned: true }
+ expect(response).to render_template(:restricted_pid)
+ end
+ end
+
+ context "html request" do
+ before { sign_in(user) }
+ it "renders a successful response" do
+ get checkouts_url
+ expect(response).to be_successful
+ end
+ it "renders the index partial" do
+ get checkouts_url
+ expect(response).to render_template(:index)
+ end
+ end
+
+ context "json request" do
+ before { sign_in(user) }
+ it "renders a successful JSON response" do
+ get checkouts_url(format: :json)
+ expect(response).to be_successful
+ expect(response.content_type).to eq("application/json; charset=utf-8")
+ end
+ context "as a regular user" do
+ before { FactoryBot.create(:checkout) }
+ it "returns only the active user's checkouts" do
+ get checkouts_url(format: :json)
+ parsed_body = JSON.parse(response.body)
+ expect(parsed_body['data'].count).to eq(1)
+ end
+ end
+ context "as an admin user" do
+ let(:user) { FactoryBot.create(:admin) }
+ before { FactoryBot.create(:checkout) }
+ it "returns all checkouts" do
+ get checkouts_url(format: :json)
+ parsed_body = JSON.parse(response.body)
+ expect(parsed_body['data'].count).to eq(2)
+ end
+ end
+ context "with display_returned param" do
+ before :each do
+ FactoryBot.create_list(:checkout, 2)
+ FactoryBot.create(:checkout, user: user, return_time: DateTime.current - 1.day)
+ end
+ context "as a regular user" do
+ it "renders a successful JSON response" do
+ get checkouts_url(format: :json, params: { display_returned: true } )
+ expect(response).to be_successful
+ expect(response.content_type).to eq("application/json; charset=utf-8")
+ end
+ it "returns user's active and inactive checkouts" do
+ get checkouts_url(format: :json, params: { display_returned: true } )
+ parsed_body = JSON.parse(response.body)
+ expect(parsed_body['data'].count).to eq(2)
+ end
+ end
+
+ context "as an admin user" do
+ let (:user) { FactoryBot.create(:admin) }
+ it "renders a successful JSON response" do
+ get checkouts_url(format: :json, params: { display_returned: true } )
+ expect(response).to be_successful
+ expect(response.content_type).to eq("application/json; charset=utf-8")
+ end
+ it "returns all checkouts" do
+ get checkouts_url(format: :json, params: { display_returned: true } )
+ parsed_body = JSON.parse(response.body)
+ expect(parsed_body['data'].count).to eq(4)
+ end
+ end
+ end
+ end
+ end
+
+ describe "GET /show" do
+ before { sign_in(user) }
+
+ it "renders a successful response" do
+ get checkout_url(checkout, format: :json)
+ expect(response).to be_successful
+ end
+ end
+
+ describe "POST /create" do
+ before { sign_in(user) }
+
+ context "json request" do
+ context "with valid parameters" do
+ it "creates a new Checkout" do
+ expect {
+ post checkouts_url, params: { checkout: valid_attributes, format: :json }
+ }.to change(Checkout, :count).by(1)
+ end
+
+ it "returns created status" do
+ post checkouts_url, params: { checkout: valid_attributes, format: :json }
+ expect(response).to be_created
+ end
+ end
+
+ context "with invalid parameters" do
+ it "does not create a new Checkout" do
+ expect {
+ post checkouts_url, params: { checkout: invalid_attributes, format: :json }
+ }.to change(Checkout, :count).by(0)
+ end
+
+ it "returns 404 because the media object cannot be found" do
+ post checkouts_url, params: { checkout: invalid_attributes, format: :json }
+ expect(response).to be_not_found
+ end
+ end
+ end
+
+ context "html request" do
+ it "creates a new checkout" do
+ expect {
+ post checkouts_url, params: { checkout: valid_attributes }
+ }.to change(Checkout, :count).by(1)
+ end
+ it "redirects to the media_object page" do
+ post checkouts_url, params: { checkout: valid_attributes }
+ expect(response).to redirect_to(media_object_url(checkout.media_object))
+ end
+
+ context "non-default lending period" do
+ let(:media_object) { FactoryBot.create(:published_media_object, lending_period: 86400, visibility: 'public') }
+ before { freeze_time }
+ after { travel_back }
+ it "creates a new checkout" do
+ expect{
+ post checkouts_url, params: { checkout: valid_attributes }
+ }.to change(Checkout, :count).by(1)
+ end
+ it "sets the return time based on the given lending period" do
+ post checkouts_url, params: { checkout: valid_attributes }
+ expect(Checkout.find_by(media_object_id: media_object.id).return_time).to eq DateTime.current + 1.day
+ end
+ end
+ end
+ end
+
+ describe "PATCH /update" do
+ before { sign_in(user) }
+
+ context "with valid parameters" do
+ let(:new_return_time) { DateTime.now + 3.weeks }
+ let(:new_attributes) {
+ { return_time: new_return_time }
+ }
+ let(:invalid_new_attributes) {}
+
+ it "updates the requested checkout" do
+ patch checkout_url(checkout), params: { checkout: new_attributes, format: :json }
+ checkout.reload
+ checkout.return_time = new_return_time
+ end
+
+ it "redirects to the checkout" do
+ patch checkout_url(checkout), params: { checkout: new_attributes, format: :json }
+ checkout.reload
+ expect(response).to be_ok
+ end
+ end
+
+ context "with invalid parameters" do
+ xit "returns a 422 Unprocessable entity" do
+ patch checkout_url(checkout), params: { checkout: invalid_new_attributes, format: :json }
+ expect(response).to be_unprocessable_entity
+ end
+ end
+ end
+
+ describe "DELETE /destroy" do
+ before { sign_in(user) }
+
+ it "destroys the requested checkout" do
+ # Make sure the checkout is created before the expect line below
+ checkout
+ expect {
+ delete checkout_url(checkout)
+ }.to change(Checkout, :count).by(-1)
+ end
+
+ it "redirects to the checkouts list" do
+ delete checkout_url(checkout)
+ expect(response).to redirect_to(checkouts_url)
+ expect(flash[:notice]).not_to be_empty
+ end
+
+ end
+
+ describe "PATCH /return" do
+ before { sign_in(user) }
+
+ it "updates the return time of requested checkout" do
+ patch return_checkout_url(checkout)
+ checkout.reload
+ expect(checkout.return_time).to be <= DateTime.current
+ end
+ context "user is on the checkouts page" do
+ it "redirects to the checkouts page" do
+ patch return_checkout_url(checkout), headers: { "HTTP_REFERER" => checkouts_url }
+ expect(response).to redirect_to(checkouts_url)
+ end
+ end
+ context "user is on the item view page" do
+ it "redirects to the item view page" do
+ patch return_checkout_url(checkout), headers: { "HTTP_REFERER" => media_object_url(checkout.media_object)}
+ expect(response).to redirect_to(media_object_url(checkout.media_object))
+ end
+ end
+ context "the http referrer fails" do
+ it "redirects to the checkouts page" do
+ patch return_checkout_url(checkout)
+ expect(response).to redirect_to(checkouts_url)
+ end
+ end
+ end
+
+ describe "PATCH /return_all" do
+ before :each do
+ sign_in(user)
+ FactoryBot.create_list(:checkout, 2)
+ FactoryBot.create(:checkout, user: user)
+ end
+
+ context "as a regular user" do
+ it "updates the user's active checkouts" do
+ patch return_all_checkouts_url
+ expect(Checkout.where(user_id: user.id).first.return_time).to be <= DateTime.current
+ end
+ it "does not update other checkouts" do
+ patch return_all_checkouts_url
+ expect(Checkout.where.not(user_id: user.id).first.return_time).to be > DateTime.current
+ expect(Checkout.where.not(user_id: user.id).second.return_time).to be > DateTime.current
+ end
+ it "redirects to the checkouts list" do
+ patch return_all_checkouts_url
+ expect(response).to redirect_to(checkouts_url)
+ end
+ end
+ context "as an admin user" do
+ let(:user) { FactoryBot.create(:admin) }
+ it "updates all active checkouts" do
+ patch return_all_checkouts_url
+ expect(Checkout.where("return_time <= ?", DateTime.current).count).to eq(3)
+ end
+ it "redirects to the checkouts list" do
+ patch return_all_checkouts_url
+ expect(response).to redirect_to(checkouts_url)
+ end
+ end
+ end
+end
diff --git a/spec/requests/comments_spec.rb b/spec/requests/comments_spec.rb
new file mode 100644
index 0000000000..ab3f1299e9
--- /dev/null
+++ b/spec/requests/comments_spec.rb
@@ -0,0 +1,93 @@
+# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+# University. Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+#
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# --- END LICENSE_HEADER BLOCK ---
+
+require 'rails_helper'
+
+describe CommentsController do
+
+ describe "GET /index" do
+ before { get comments_url }
+ it 'renders a successful response' do
+ expect(response).to be_successful
+ end
+ it 'renders the index partial' do
+ expect(response).to render_template(:index)
+ end
+ end
+
+ describe "POST /create" do
+ let(:email) { Faker::Internet.email }
+ let(:attributes) {
+ { comment:
+ { name: Faker::Name.name,
+ subject: 'General feedback',
+ email: email,
+ email_confirmation: email,
+ nickname: '',
+ comment: Faker::Lorem.sentence
+ }
+ }
+ }
+ context 'all fields have been properly filled in' do
+ it 'renders a successful response' do
+ post comments_url, params: attributes
+ expect(response).to be_successful
+ end
+ it 'queues the comment email for delivery' do
+ post comments_url, params: attributes
+ assert_enqueued_jobs(1)
+ end
+ it 'produces an email with proper contents' do
+ expect { post comments_url, params: attributes }.to(
+ have_enqueued_mail(CommentsMailer, :contact_email).with(
+ name: attributes[:comment][:name], subject: attributes[:comment][:subject],
+ email: email, nickname: '', comment: attributes[:comment][:comment]
+ )
+ )
+ end
+ end
+ context 'not all fields have been filled in' do
+ before { attributes[:comment][:comment] = nil }
+ it 'does not queue an email for delivery' do
+ post comments_url, params: attributes
+ assert_enqueued_jobs(0)
+ end
+ it 'returns a flash message informing the user that information is missing' do
+ post comments_url, params: attributes
+ expect(flash[:error]).to eq('Your comment was missing required information. Please complete all fields and resubmit.')
+ end
+ it 'renders the index partial' do
+ post comments_url, params: attributes
+ expect(response).to render_template(:index)
+ end
+ end
+ context 'the connection is interrupted' do
+ it 'returns a flash message asking the user to report the problem' do
+ allow_any_instance_of(ActionMailer::MessageDelivery).to receive(:deliver_later).and_raise(Errno::ECONNRESET)
+ post comments_url, params:attributes
+ expect(flash[:notice]).to eq("The message could not be sent in a timely fashion. Contact us at #{Settings.email.support} to report the problem.")
+ end
+ it 'does not enqueue an email for delivery' do
+ allow_any_instance_of(ActionMailer::MessageDelivery).to receive(:deliver_later).and_raise(Errno::ECONNRESET)
+ post comments_url, params:attributes
+ assert_enqueued_jobs(0)
+ end
+ it 'renders the index partial' do
+ allow_any_instance_of(ActionMailer::MessageDelivery).to receive(:deliver_later).and_raise(Errno::ECONNRESET)
+ post comments_url, params:attributes
+ expect(response).to render_template(:index)
+ end
+ end
+ end
+end
diff --git a/spec/requests/cors_spec.rb b/spec/requests/cors_spec.rb
new file mode 100644
index 0000000000..c662c88d5a
--- /dev/null
+++ b/spec/requests/cors_spec.rb
@@ -0,0 +1,27 @@
+# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
+# University. Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+#
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software distributed
+# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+# CONDITIONS OF ANY KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations under the License.
+# --- END LICENSE_HEADER BLOCK ---
+
+require 'rails_helper.rb'
+
+describe 'CORS', type: :request do
+ let(:media_object) { FactoryBot.create(:published_media_object) }
+ let(:headers) { ['localhost', 'http://example.com', 'https://example.edu'] }
+
+ it 'echoes the request origin in the CORS headers' do
+ headers.each do |header|
+ get "/media_objects/#{media_object.id}/manifest", headers: { 'HTTP_ORIGIN': header }
+ expect(response.headers['Access-Control-Allow-Origin']).to eq(header)
+ end
+ end
+end
diff --git a/spec/requests/redirect_spec.rb b/spec/requests/redirect_spec.rb
index 662c66f486..e2438e3f24 100644
--- a/spec/requests/redirect_spec.rb
+++ b/spec/requests/redirect_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -17,13 +17,28 @@
describe 'redirect', type: :request do
it 'stores url to redirect to when unauthorized and needing to authenticate (#authorize!)' do
get '/admin/collections'
- expect(request.env['rack.session']['previous_url']).to eq '/admin/collections'
+ expect(request.env['rack.session']['user_return_to']).to eq '/admin/collections'
expect(response).to render_template('errors/restricted_pid')
end
it 'stores url to redirect to when needing to authenticate (#authenticate_user!)' do
get '/bookmarks'
- expect(request.env['rack.session']['previous_url']).to eq '/bookmarks'
+ expect(request.env['rack.session']['user_return_to']).to eq '/bookmarks'
expect(response).to render_template('errors/restricted_pid')
end
+
+ context 'playlists' do
+ let(:playlist) { FactoryBot.create(:playlist, :with_access_token, items: [playlist_item]) }
+ let(:playlist_item) { FactoryBot.create(:playlist_item, clip: clip) }
+ let(:clip) { FactoryBot.create(:avalon_clip, master_file: master_file) }
+ let(:master_file) { FactoryBot.create(:master_file, media_object: media_object) }
+ let(:media_object) { FactoryBot.create(:published_media_object, visibility: 'restricted') }
+ let(:playlist_url) { playlist_path(playlist, token: playlist.access_token) }
+
+ it 'stores url to redirect to when loading a playlist in case of restricted playlist items' do
+ get playlist_url
+ expect(request.env['rack.session']['user_return_to']).to eq playlist_url
+ expect(response).to render_template('playlists/show')
+ end
+ end
end
diff --git a/spec/routing/checkouts_routing_spec.rb b/spec/routing/checkouts_routing_spec.rb
new file mode 100644
index 0000000000..1ae50ab465
--- /dev/null
+++ b/spec/routing/checkouts_routing_spec.rb
@@ -0,0 +1,74 @@
+require "rails_helper"
+
+RSpec.describe CheckoutsController, type: :routing do
+ describe "routing" do
+ context "controlled digital lending is enabled" do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(true) }
+ it "routes to #index" do
+ expect(get: "/checkouts").to route_to("checkouts#index")
+ end
+
+ it "routes to #create" do
+ expect(post: "/checkouts").to route_to("checkouts#create")
+ end
+
+ it "routes to #show via GET" do
+ expect(get: "/checkouts/1").to route_to("checkouts#show", id: "1")
+ end
+
+ it "routes to #update via PUT" do
+ expect(put: "/checkouts/1").to route_to("checkouts#update", id: "1")
+ end
+
+ it "routes to #update via PATCH" do
+ expect(patch: "/checkouts/1").to route_to("checkouts#update", id: "1")
+ end
+
+ it "routes to #destroy" do
+ expect(delete: "/checkouts/1").to route_to("checkouts#destroy", id: "1")
+ end
+
+ it "routes to #return_all" do
+ expect(patch: "/checkouts/return_all").to route_to("checkouts#return_all")
+ end
+
+ it "routes to #return" do
+ expect(patch: "/checkouts/1/return").to route_to("checkouts#return", id: "1")
+ end
+ end
+ context "controlled digital lending is disabled" do
+ before { allow(Settings.controlled_digital_lending).to receive(:enable).and_return(false) }
+ it "does not route to #index" do
+ expect(get: "/checkouts").not_to route_to("checkouts#index")
+ end
+
+ it "does not route to #create" do
+ expect(post: "/checkouts").not_to route_to("checkouts#create")
+ end
+
+ it "does not route to #show via GET" do
+ expect(get: "/checkouts/1").not_to route_to("checkouts#show", id: "1")
+ end
+
+ it "does not route to #update via PUT" do
+ expect(put: "/checkouts/1").not_to route_to("checkouts#update", id: "1")
+ end
+
+ it "does not route to #update via PATCH" do
+ expect(patch: "/checkouts/1").not_to route_to("checkouts#update", id: "1")
+ end
+
+ it "does not route to #destroy" do
+ expect(delete: "/checkouts/1").not_to route_to("checkouts#destroy", id: "1")
+ end
+
+ it "does not route to #return_all" do
+ expect(patch: "/checkouts/return_all").not_to route_to("checkouts#return_all")
+ end
+
+ it "does not route to #return" do
+ expect(patch: "/checkouts/1/return").not_to route_to("checkouts#return", id: "1")
+ end
+ end
+ end
+end
diff --git a/spec/services/security_service_spec.rb b/spec/services/security_service_spec.rb
index 2a9544bbaa..e73a83729c 100644
--- a/spec/services/security_service_spec.rb
+++ b/spec/services/security_service_spec.rb
@@ -1,11 +1,11 @@
# Copyright 2011-2022, The Trustees of Indiana University and Northwestern
# University. Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
-#
+#
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software distributed
# under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
# CONDITIONS OF ANY KIND, either express or implied. See the License for the
@@ -64,11 +64,10 @@
end
end
- context 'when non-AMS streaming server' do
+ context 'when non-AWS streaming server' do
before do
allow(Settings.streaming).to receive(:server).and_return("wowza")
end
-
it 'adds a StreamToken param' do
expect(subject.rewrite_url(url, context)).to start_with "http://example.com/streaming/id?token="
end
diff --git a/spec/support/features.rb b/spec/support/features.rb
new file mode 100644
index 0000000000..3fc3f9f211
--- /dev/null
+++ b/spec/support/features.rb
@@ -0,0 +1,4 @@
+require File.expand_path('../features/session_helpers', __FILE__)
+
+RSpec.configure do |config|
+end
diff --git a/spec/support/features/session_helpers.rb b/spec/support/features/session_helpers.rb
new file mode 100644
index 0000000000..4142d2bdf2
--- /dev/null
+++ b/spec/support/features/session_helpers.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+# Copied from Hyrax: spec/support/features/session_helpers.rb
+module Features
+ module SessionHelpers
+ def sign_in(who = :user)
+ user = who.is_a?(User) ? who : FactoryBot.build(:user).tap(&:save!)
+ visit '/users/sign_in'
+ within('div.omniauth-form form') do
+ fill_in 'Login', with: user.email
+ fill_in 'Password', with: user.password
+ click_on 'Connect'
+ end
+ end
+ end
+end
diff --git a/spec/support/supplemental_files_controller_examples.rb b/spec/support/supplemental_files_controller_examples.rb
index 8252f54e9d..6e2fb189bd 100644
--- a/spec/support/supplemental_files_controller_examples.rb
+++ b/spec/support/supplemental_files_controller_examples.rb
@@ -61,7 +61,7 @@
let(:master_file) { FactoryBot.create(:master_file, media_object_id: media_object.id, supplemental_files: [supplemental_file]) }
let(:supplemental_file) { FactoryBot.create(:supplemental_file, :with_attached_file, label: 'label') }
let(:object) { object_class == MasterFile ? master_file : media_object }
-
+ let(:manager) { media_object.collection.managers.first }
describe 'security' do
context 'with unauthenticated user' do
@@ -103,7 +103,7 @@
let(:object) { object_class == MasterFile ? master_file : media_object }
before do
- login_as :administrator
+ login_user manager
end
context 'json request' do
@@ -203,7 +203,7 @@
describe "PUT #update" do
before do
- login_as :administrator
+ login_user manager
end
context 'json request' do
@@ -265,7 +265,7 @@
describe "DELETE #destroy" do
before do
- login_as :administrator
+ login_user manager
end
context 'json request' do
diff --git a/spec/views/checkouts/index.html.erb_spec.rb b/spec/views/checkouts/index.html.erb_spec.rb
new file mode 100644
index 0000000000..c139a5e414
--- /dev/null
+++ b/spec/views/checkouts/index.html.erb_spec.rb
@@ -0,0 +1,61 @@
+require 'rails_helper'
+
+RSpec.describe "checkouts/index", type: :view do
+ let(:user) { FactoryBot.create(:user) }
+ let(:ability) { Ability.new(user) }
+ let(:checkouts) { [FactoryBot.create(:checkout, checkout_time: Time.new(2000, 01, 13, 12, 0, 0)), FactoryBot.create(:checkout)] }
+ before(:each) do
+ assign(:checkouts, checkouts)
+ allow(view).to receive(:current_user).and_return(user)
+ allow(view).to receive(:current_ability).and_return(ability)
+ end
+ context 'as a regular user' do
+ it 'renders a list of checkouts without username' do
+ render
+ assert_select "tr>td", text: checkouts.first.user.user_key, count: 0
+ assert_select "tr>td", text: checkouts.first.media_object.title
+ assert_select "tr>td", text: checkouts.second.user.user_key, count: 0
+ assert_select "tr>td", text: checkouts.second.media_object.title
+ end
+ context 'has no previously returned checkouts' do
+ it 'does not render the show inactive checkouts checkbox' do
+ render
+ expect(response).not_to render_template('checkouts/_inactive_checkout')
+ end
+ end
+ context 'has previously returned checkouts' do
+ before { FactoryBot.create(:checkout, user: user, return_time: DateTime.current - 1.week) }
+ it 'renders the show inactive checkouts checkbox' do
+ render
+ expect(response).to render_template('checkouts/_inactive_checkout')
+ end
+ end
+ end
+ context 'as an admin user' do
+ let(:user) { FactoryBot.create(:admin) }
+ it 'renders a list of checkouts with usernames' do
+ render
+ assert_select "tr>td", text: checkouts.first.user.user_key
+ assert_select "tr>td", text: checkouts.first.media_object.title
+ assert_select "tr>td", text: checkouts.second.user.user_key
+ assert_select "tr>td", text: checkouts.second.media_object.title
+ end
+ it 'renders the show inactive checkouts checkbox' do
+ render
+ expect(response).to render_template('checkouts/_inactive_checkout')
+ end
+ end
+ describe 'media object entry' do
+ it 'is a link' do
+ render
+ assert_select "tr>td", html: "#{checkouts.first.media_object.title}"
+ end
+ end
+ describe 'checkout and return time' do
+ it 'renders UTC time in a span for JS conversion to local time zone' do
+ render
+ assert_select "tr>td>span[data-utc-time=?]", checkouts.first.checkout_time.iso8601
+ assert_select "tr>td>span[data-utc-time=?]", checkouts.first.return_time.iso8601
+ end
+ end
+end
diff --git a/vendor/assets/javascripts/mediaelement/mediaelement-and-player.js b/vendor/assets/javascripts/mediaelement/mediaelement-and-player.js
index 1bb148b8a0..947179759f 100644
--- a/vendor/assets/javascripts/mediaelement/mediaelement-and-player.js
+++ b/vendor/assets/javascripts/mediaelement/mediaelement-and-player.js
@@ -284,21 +284,128 @@ module.exports = win;
})(this);
},{}],5:[function(_dereq_,module,exports){
+!function(root, factory) {
+ "function" == typeof define && define.amd ? // AMD. Register as an anonymous module unless amdModuleId is set
+ define([], function() {
+ return root.svg4everybody = factory();
+ }) : "object" == typeof module && module.exports ? // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory() : root.svg4everybody = factory();
+}(this, function() {
+ /*! svg4everybody v2.1.9 | github.com/jonathantneal/svg4everybody */
+ function embed(parent, svg, target) {
+ // if the target exists
+ if (target) {
+ // create a document fragment to hold the contents of the target
+ var fragment = document.createDocumentFragment(), viewBox = !svg.hasAttribute("viewBox") && target.getAttribute("viewBox");
+ // conditionally set the viewBox on the svg
+ viewBox && svg.setAttribute("viewBox", viewBox);
+ // copy the contents of the clone into the fragment
+ for (// clone the target
+ var clone = target.cloneNode(!0); clone.childNodes.length; ) {
+ fragment.appendChild(clone.firstChild);
+ }
+ // append the fragment into the svg
+ parent.appendChild(fragment);
+ }
+ }
+ function loadreadystatechange(xhr) {
+ // listen to changes in the request
+ xhr.onreadystatechange = function() {
+ // if the request is ready
+ if (4 === xhr.readyState) {
+ // get the cached html document
+ var cachedDocument = xhr._cachedDocument;
+ // ensure the cached html document based on the xhr response
+ cachedDocument || (cachedDocument = xhr._cachedDocument = document.implementation.createHTMLDocument(""),
+ cachedDocument.body.innerHTML = xhr.responseText, xhr._cachedTarget = {}), // clear the xhr embeds list and embed each item
+ xhr._embeds.splice(0).map(function(item) {
+ // get the cached target
+ var target = xhr._cachedTarget[item.id];
+ // ensure the cached target
+ target || (target = xhr._cachedTarget[item.id] = cachedDocument.getElementById(item.id)),
+ // embed the target into the svg
+ embed(item.parent, item.svg, target);
+ });
+ }
+ }, // test the ready state change immediately
+ xhr.onreadystatechange();
+ }
+ function svg4everybody(rawopts) {
+ function oninterval() {
+ // while the index exists in the live