UNPKG

51.3 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function noop() { }
6const identity = x => x;
7function assign(tar, src) {
8 // @ts-ignore
9 for (const k in src)
10 tar[k] = src[k];
11 return tar;
12}
13function is_promise(value) {
14 return value && typeof value === 'object' && typeof value.then === 'function';
15}
16function add_location(element, file, line, column, char) {
17 element.__svelte_meta = {
18 loc: { file, line, column, char }
19 };
20}
21function run(fn) {
22 return fn();
23}
24function blank_object() {
25 return Object.create(null);
26}
27function run_all(fns) {
28 fns.forEach(run);
29}
30function is_function(thing) {
31 return typeof thing === 'function';
32}
33function safe_not_equal(a, b) {
34 return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');
35}
36function not_equal(a, b) {
37 return a != a ? b == b : a !== b;
38}
39function validate_store(store, name) {
40 if (!store || typeof store.subscribe !== 'function') {
41 throw new Error(`'${name}' is not a store with a 'subscribe' method`);
42 }
43}
44function subscribe(store, callback) {
45 const unsub = store.subscribe(callback);
46 return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
47}
48function get_store_value(store) {
49 let value;
50 subscribe(store, _ => value = _)();
51 return value;
52}
53function component_subscribe(component, store, callback) {
54 component.$$.on_destroy.push(subscribe(store, callback));
55}
56function create_slot(definition, ctx, $$scope, fn) {
57 if (definition) {
58 const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
59 return definition[0](slot_ctx);
60 }
61}
62function get_slot_context(definition, ctx, $$scope, fn) {
63 return definition[1] && fn
64 ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))
65 : $$scope.ctx;
66}
67function get_slot_changes(definition, $$scope, dirty, fn) {
68 if (definition[2] && fn) {
69 const lets = definition[2](fn(dirty));
70 if (typeof $$scope.dirty === 'object') {
71 const merged = [];
72 const len = Math.max($$scope.dirty.length, lets.length);
73 for (let i = 0; i < len; i += 1) {
74 merged[i] = $$scope.dirty[i] | lets[i];
75 }
76 return merged;
77 }
78 return $$scope.dirty | lets;
79 }
80 return $$scope.dirty;
81}
82function exclude_internal_props(props) {
83 const result = {};
84 for (const k in props)
85 if (k[0] !== '$')
86 result[k] = props[k];
87 return result;
88}
89function once(fn) {
90 let ran = false;
91 return function (...args) {
92 if (ran)
93 return;
94 ran = true;
95 fn.call(this, ...args);
96 };
97}
98function null_to_empty(value) {
99 return value == null ? '' : value;
100}
101function set_store_value(store, ret, value = ret) {
102 store.set(value);
103 return ret;
104}
105const has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
106function action_destroyer(action_result) {
107 return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
108}
109
110const is_client = typeof window !== 'undefined';
111exports.now = is_client
112 ? () => window.performance.now()
113 : () => Date.now();
114exports.raf = is_client ? cb => requestAnimationFrame(cb) : noop;
115// used internally for testing
116function set_now(fn) {
117 exports.now = fn;
118}
119function set_raf(fn) {
120 exports.raf = fn;
121}
122
123const tasks = new Set();
124function run_tasks(now) {
125 tasks.forEach(task => {
126 if (!task.c(now)) {
127 tasks.delete(task);
128 task.f();
129 }
130 });
131 if (tasks.size !== 0)
132 exports.raf(run_tasks);
133}
134/**
135 * For testing purposes only!
136 */
137function clear_loops() {
138 tasks.clear();
139}
140/**
141 * Creates a new task that runs on each raf frame
142 * until it returns a falsy value or is aborted
143 */
144function loop(callback) {
145 let task;
146 if (tasks.size === 0)
147 exports.raf(run_tasks);
148 return {
149 promise: new Promise(fulfill => {
150 tasks.add(task = { c: callback, f: fulfill });
151 }),
152 abort() {
153 tasks.delete(task);
154 }
155 };
156}
157
158function append(target, node) {
159 target.appendChild(node);
160}
161function insert(target, node, anchor) {
162 target.insertBefore(node, anchor || null);
163}
164function detach(node) {
165 node.parentNode.removeChild(node);
166}
167function destroy_each(iterations, detaching) {
168 for (let i = 0; i < iterations.length; i += 1) {
169 if (iterations[i])
170 iterations[i].d(detaching);
171 }
172}
173function element(name) {
174 return document.createElement(name);
175}
176function element_is(name, is) {
177 return document.createElement(name, { is });
178}
179function object_without_properties(obj, exclude) {
180 const target = {};
181 for (const k in obj) {
182 if (has_prop(obj, k)
183 // @ts-ignore
184 && exclude.indexOf(k) === -1) {
185 // @ts-ignore
186 target[k] = obj[k];
187 }
188 }
189 return target;
190}
191function svg_element(name) {
192 return document.createElementNS('http://www.w3.org/2000/svg', name);
193}
194function text(data) {
195 return document.createTextNode(data);
196}
197function space() {
198 return text(' ');
199}
200function empty() {
201 return text('');
202}
203function listen(node, event, handler, options) {
204 node.addEventListener(event, handler, options);
205 return () => node.removeEventListener(event, handler, options);
206}
207function prevent_default(fn) {
208 return function (event) {
209 event.preventDefault();
210 // @ts-ignore
211 return fn.call(this, event);
212 };
213}
214function stop_propagation(fn) {
215 return function (event) {
216 event.stopPropagation();
217 // @ts-ignore
218 return fn.call(this, event);
219 };
220}
221function self(fn) {
222 return function (event) {
223 // @ts-ignore
224 if (event.target === this)
225 fn.call(this, event);
226 };
227}
228function attr(node, attribute, value) {
229 if (value == null)
230 node.removeAttribute(attribute);
231 else if (node.getAttribute(attribute) !== value)
232 node.setAttribute(attribute, value);
233}
234function set_attributes(node, attributes) {
235 // @ts-ignore
236 const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);
237 for (const key in attributes) {
238 if (attributes[key] == null) {
239 node.removeAttribute(key);
240 }
241 else if (key === 'style') {
242 node.style.cssText = attributes[key];
243 }
244 else if (descriptors[key] && descriptors[key].set) {
245 node[key] = attributes[key];
246 }
247 else {
248 attr(node, key, attributes[key]);
249 }
250 }
251}
252function set_svg_attributes(node, attributes) {
253 for (const key in attributes) {
254 attr(node, key, attributes[key]);
255 }
256}
257function set_custom_element_data(node, prop, value) {
258 if (prop in node) {
259 node[prop] = value;
260 }
261 else {
262 attr(node, prop, value);
263 }
264}
265function xlink_attr(node, attribute, value) {
266 node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);
267}
268function get_binding_group_value(group) {
269 const value = [];
270 for (let i = 0; i < group.length; i += 1) {
271 if (group[i].checked)
272 value.push(group[i].__value);
273 }
274 return value;
275}
276function to_number(value) {
277 return value === '' ? undefined : +value;
278}
279function time_ranges_to_array(ranges) {
280 const array = [];
281 for (let i = 0; i < ranges.length; i += 1) {
282 array.push({ start: ranges.start(i), end: ranges.end(i) });
283 }
284 return array;
285}
286function children(element) {
287 return Array.from(element.childNodes);
288}
289function claim_element(nodes, name, attributes, svg) {
290 for (let i = 0; i < nodes.length; i += 1) {
291 const node = nodes[i];
292 if (node.nodeName === name) {
293 for (let j = 0; j < node.attributes.length; j += 1) {
294 const attribute = node.attributes[j];
295 if (!attributes[attribute.name])
296 node.removeAttribute(attribute.name);
297 }
298 return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes
299 }
300 }
301 return svg ? svg_element(name) : element(name);
302}
303function claim_text(nodes, data) {
304 for (let i = 0; i < nodes.length; i += 1) {
305 const node = nodes[i];
306 if (node.nodeType === 3) {
307 node.data = '' + data;
308 return nodes.splice(i, 1)[0];
309 }
310 }
311 return text(data);
312}
313function claim_space(nodes) {
314 return claim_text(nodes, ' ');
315}
316function set_data(text, data) {
317 data = '' + data;
318 if (text.data !== data)
319 text.data = data;
320}
321function set_input_value(input, value) {
322 if (value != null || input.value) {
323 input.value = value;
324 }
325}
326function set_input_type(input, type) {
327 try {
328 input.type = type;
329 }
330 catch (e) {
331 // do nothing
332 }
333}
334function set_style(node, key, value, important) {
335 node.style.setProperty(key, value, important ? 'important' : '');
336}
337function select_option(select, value) {
338 for (let i = 0; i < select.options.length; i += 1) {
339 const option = select.options[i];
340 if (option.__value === value) {
341 option.selected = true;
342 return;
343 }
344 }
345}
346function select_options(select, value) {
347 for (let i = 0; i < select.options.length; i += 1) {
348 const option = select.options[i];
349 option.selected = ~value.indexOf(option.__value);
350 }
351}
352function select_value(select) {
353 const selected_option = select.querySelector(':checked') || select.options[0];
354 return selected_option && selected_option.__value;
355}
356function select_multiple_value(select) {
357 return [].map.call(select.querySelectorAll(':checked'), option => option.__value);
358}
359function add_resize_listener(element, fn) {
360 if (getComputedStyle(element).position === 'static') {
361 element.style.position = 'relative';
362 }
363 const object = document.createElement('object');
364 object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');
365 object.setAttribute('aria-hidden', 'true');
366 object.type = 'text/html';
367 object.tabIndex = -1;
368 let win;
369 object.onload = () => {
370 win = object.contentDocument.defaultView;
371 win.addEventListener('resize', fn);
372 };
373 if (/Trident/.test(navigator.userAgent)) {
374 element.appendChild(object);
375 object.data = 'about:blank';
376 }
377 else {
378 object.data = 'about:blank';
379 element.appendChild(object);
380 }
381 return {
382 cancel: () => {
383 win && win.removeEventListener && win.removeEventListener('resize', fn);
384 element.removeChild(object);
385 }
386 };
387}
388function toggle_class(element, name, toggle) {
389 element.classList[toggle ? 'add' : 'remove'](name);
390}
391function custom_event(type, detail) {
392 const e = document.createEvent('CustomEvent');
393 e.initCustomEvent(type, false, false, detail);
394 return e;
395}
396class HtmlTag {
397 constructor(html, anchor = null) {
398 this.e = element('div');
399 this.a = anchor;
400 this.u(html);
401 }
402 m(target, anchor = null) {
403 for (let i = 0; i < this.n.length; i += 1) {
404 insert(target, this.n[i], anchor);
405 }
406 this.t = target;
407 }
408 u(html) {
409 this.e.innerHTML = html;
410 this.n = Array.from(this.e.childNodes);
411 }
412 p(html) {
413 this.d();
414 this.u(html);
415 this.m(this.t, this.a);
416 }
417 d() {
418 this.n.forEach(detach);
419 }
420}
421
422let stylesheet;
423let active = 0;
424let current_rules = {};
425// https://github.com/darkskyapp/string-hash/blob/master/index.js
426function hash(str) {
427 let hash = 5381;
428 let i = str.length;
429 while (i--)
430 hash = ((hash << 5) - hash) ^ str.charCodeAt(i);
431 return hash >>> 0;
432}
433function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {
434 const step = 16.666 / duration;
435 let keyframes = '{\n';
436 for (let p = 0; p <= 1; p += step) {
437 const t = a + (b - a) * ease(p);
438 keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`;
439 }
440 const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`;
441 const name = `__svelte_${hash(rule)}_${uid}`;
442 if (!current_rules[name]) {
443 if (!stylesheet) {
444 const style = element('style');
445 document.head.appendChild(style);
446 stylesheet = style.sheet;
447 }
448 current_rules[name] = true;
449 stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);
450 }
451 const animation = node.style.animation || '';
452 node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;
453 active += 1;
454 return name;
455}
456function delete_rule(node, name) {
457 node.style.animation = (node.style.animation || '')
458 .split(', ')
459 .filter(name
460 ? anim => anim.indexOf(name) < 0 // remove specific animation
461 : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations
462 )
463 .join(', ');
464 if (name && !--active)
465 clear_rules();
466}
467function clear_rules() {
468 exports.raf(() => {
469 if (active)
470 return;
471 let i = stylesheet.cssRules.length;
472 while (i--)
473 stylesheet.deleteRule(i);
474 current_rules = {};
475 });
476}
477
478function create_animation(node, from, fn, params) {
479 if (!from)
480 return noop;
481 const to = node.getBoundingClientRect();
482 if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)
483 return noop;
484 const { delay = 0, duration = 300, easing = identity,
485 // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?
486 start: start_time = exports.now() + delay,
487 // @ts-ignore todo:
488 end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);
489 let running = true;
490 let started = false;
491 let name;
492 function start() {
493 if (css) {
494 name = create_rule(node, 0, 1, duration, delay, easing, css);
495 }
496 if (!delay) {
497 started = true;
498 }
499 }
500 function stop() {
501 if (css)
502 delete_rule(node, name);
503 running = false;
504 }
505 loop(now => {
506 if (!started && now >= start_time) {
507 started = true;
508 }
509 if (started && now >= end) {
510 tick(1, 0);
511 stop();
512 }
513 if (!running) {
514 return false;
515 }
516 if (started) {
517 const p = now - start_time;
518 const t = 0 + 1 * easing(p / duration);
519 tick(t, 1 - t);
520 }
521 return true;
522 });
523 start();
524 tick(0, 1);
525 return stop;
526}
527function fix_position(node) {
528 const style = getComputedStyle(node);
529 if (style.position !== 'absolute' && style.position !== 'fixed') {
530 const { width, height } = style;
531 const a = node.getBoundingClientRect();
532 node.style.position = 'absolute';
533 node.style.width = width;
534 node.style.height = height;
535 add_transform(node, a);
536 }
537}
538function add_transform(node, a) {
539 const b = node.getBoundingClientRect();
540 if (a.left !== b.left || a.top !== b.top) {
541 const style = getComputedStyle(node);
542 const transform = style.transform === 'none' ? '' : style.transform;
543 node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;
544 }
545}
546
547function set_current_component(component) {
548 exports.current_component = component;
549}
550function get_current_component() {
551 if (!exports.current_component)
552 throw new Error(`Function called outside component initialization`);
553 return exports.current_component;
554}
555function beforeUpdate(fn) {
556 get_current_component().$$.before_update.push(fn);
557}
558function onMount(fn) {
559 get_current_component().$$.on_mount.push(fn);
560}
561function afterUpdate(fn) {
562 get_current_component().$$.after_update.push(fn);
563}
564function onDestroy(fn) {
565 get_current_component().$$.on_destroy.push(fn);
566}
567function createEventDispatcher() {
568 const component = get_current_component();
569 return (type, detail) => {
570 const callbacks = component.$$.callbacks[type];
571 if (callbacks) {
572 // TODO are there situations where events could be dispatched
573 // in a server (non-DOM) environment?
574 const event = custom_event(type, detail);
575 callbacks.slice().forEach(fn => {
576 fn.call(component, event);
577 });
578 }
579 };
580}
581function setContext(key, context) {
582 get_current_component().$$.context.set(key, context);
583}
584function getContext(key) {
585 return get_current_component().$$.context.get(key);
586}
587// TODO figure out if we still want to support
588// shorthand events, or if we want to implement
589// a real bubbling mechanism
590function bubble(component, event) {
591 const callbacks = component.$$.callbacks[event.type];
592 if (callbacks) {
593 callbacks.slice().forEach(fn => fn(event));
594 }
595}
596
597const dirty_components = [];
598const intros = { enabled: false };
599const binding_callbacks = [];
600const render_callbacks = [];
601const flush_callbacks = [];
602const resolved_promise = Promise.resolve();
603let update_scheduled = false;
604function schedule_update() {
605 if (!update_scheduled) {
606 update_scheduled = true;
607 resolved_promise.then(flush);
608 }
609}
610function tick() {
611 schedule_update();
612 return resolved_promise;
613}
614function add_render_callback(fn) {
615 render_callbacks.push(fn);
616}
617function add_flush_callback(fn) {
618 flush_callbacks.push(fn);
619}
620function flush() {
621 const seen_callbacks = new Set();
622 do {
623 // first, call beforeUpdate functions
624 // and update components
625 while (dirty_components.length) {
626 const component = dirty_components.shift();
627 set_current_component(component);
628 update(component.$$);
629 }
630 while (binding_callbacks.length)
631 binding_callbacks.pop()();
632 // then, once components are updated, call
633 // afterUpdate functions. This may cause
634 // subsequent updates...
635 for (let i = 0; i < render_callbacks.length; i += 1) {
636 const callback = render_callbacks[i];
637 if (!seen_callbacks.has(callback)) {
638 callback();
639 // ...so guard against infinite loops
640 seen_callbacks.add(callback);
641 }
642 }
643 render_callbacks.length = 0;
644 } while (dirty_components.length);
645 while (flush_callbacks.length) {
646 flush_callbacks.pop()();
647 }
648 update_scheduled = false;
649}
650function update($$) {
651 if ($$.fragment !== null) {
652 $$.update();
653 run_all($$.before_update);
654 const dirty = $$.dirty;
655 $$.dirty = [-1];
656 $$.fragment && $$.fragment.p($$.ctx, dirty);
657 $$.after_update.forEach(add_render_callback);
658 }
659}
660
661let promise;
662function wait() {
663 if (!promise) {
664 promise = Promise.resolve();
665 promise.then(() => {
666 promise = null;
667 });
668 }
669 return promise;
670}
671function dispatch(node, direction, kind) {
672 node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));
673}
674const outroing = new Set();
675let outros;
676function group_outros() {
677 outros = {
678 r: 0,
679 c: [],
680 p: outros // parent group
681 };
682}
683function check_outros() {
684 if (!outros.r) {
685 run_all(outros.c);
686 }
687 outros = outros.p;
688}
689function transition_in(block, local) {
690 if (block && block.i) {
691 outroing.delete(block);
692 block.i(local);
693 }
694}
695function transition_out(block, local, detach, callback) {
696 if (block && block.o) {
697 if (outroing.has(block))
698 return;
699 outroing.add(block);
700 outros.c.push(() => {
701 outroing.delete(block);
702 if (callback) {
703 if (detach)
704 block.d(1);
705 callback();
706 }
707 });
708 block.o(local);
709 }
710}
711const null_transition = { duration: 0 };
712function create_in_transition(node, fn, params) {
713 let config = fn(node, params);
714 let running = false;
715 let animation_name;
716 let task;
717 let uid = 0;
718 function cleanup() {
719 if (animation_name)
720 delete_rule(node, animation_name);
721 }
722 function go() {
723 const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
724 if (css)
725 animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);
726 tick(0, 1);
727 const start_time = exports.now() + delay;
728 const end_time = start_time + duration;
729 if (task)
730 task.abort();
731 running = true;
732 add_render_callback(() => dispatch(node, true, 'start'));
733 task = loop(now => {
734 if (running) {
735 if (now >= end_time) {
736 tick(1, 0);
737 dispatch(node, true, 'end');
738 cleanup();
739 return running = false;
740 }
741 if (now >= start_time) {
742 const t = easing((now - start_time) / duration);
743 tick(t, 1 - t);
744 }
745 }
746 return running;
747 });
748 }
749 let started = false;
750 return {
751 start() {
752 if (started)
753 return;
754 delete_rule(node);
755 if (is_function(config)) {
756 config = config();
757 wait().then(go);
758 }
759 else {
760 go();
761 }
762 },
763 invalidate() {
764 started = false;
765 },
766 end() {
767 if (running) {
768 cleanup();
769 running = false;
770 }
771 }
772 };
773}
774function create_out_transition(node, fn, params) {
775 let config = fn(node, params);
776 let running = true;
777 let animation_name;
778 const group = outros;
779 group.r += 1;
780 function go() {
781 const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
782 if (css)
783 animation_name = create_rule(node, 1, 0, duration, delay, easing, css);
784 const start_time = exports.now() + delay;
785 const end_time = start_time + duration;
786 add_render_callback(() => dispatch(node, false, 'start'));
787 loop(now => {
788 if (running) {
789 if (now >= end_time) {
790 tick(0, 1);
791 dispatch(node, false, 'end');
792 if (!--group.r) {
793 // this will result in `end()` being called,
794 // so we don't need to clean up here
795 run_all(group.c);
796 }
797 return false;
798 }
799 if (now >= start_time) {
800 const t = easing((now - start_time) / duration);
801 tick(1 - t, t);
802 }
803 }
804 return running;
805 });
806 }
807 if (is_function(config)) {
808 wait().then(() => {
809 // @ts-ignore
810 config = config();
811 go();
812 });
813 }
814 else {
815 go();
816 }
817 return {
818 end(reset) {
819 if (reset && config.tick) {
820 config.tick(1, 0);
821 }
822 if (running) {
823 if (animation_name)
824 delete_rule(node, animation_name);
825 running = false;
826 }
827 }
828 };
829}
830function create_bidirectional_transition(node, fn, params, intro) {
831 let config = fn(node, params);
832 let t = intro ? 0 : 1;
833 let running_program = null;
834 let pending_program = null;
835 let animation_name = null;
836 function clear_animation() {
837 if (animation_name)
838 delete_rule(node, animation_name);
839 }
840 function init(program, duration) {
841 const d = program.b - t;
842 duration *= Math.abs(d);
843 return {
844 a: t,
845 b: program.b,
846 d,
847 duration,
848 start: program.start,
849 end: program.start + duration,
850 group: program.group
851 };
852 }
853 function go(b) {
854 const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
855 const program = {
856 start: exports.now() + delay,
857 b
858 };
859 if (!b) {
860 // @ts-ignore todo: improve typings
861 program.group = outros;
862 outros.r += 1;
863 }
864 if (running_program) {
865 pending_program = program;
866 }
867 else {
868 // if this is an intro, and there's a delay, we need to do
869 // an initial tick and/or apply CSS animation immediately
870 if (css) {
871 clear_animation();
872 animation_name = create_rule(node, t, b, duration, delay, easing, css);
873 }
874 if (b)
875 tick(0, 1);
876 running_program = init(program, duration);
877 add_render_callback(() => dispatch(node, b, 'start'));
878 loop(now => {
879 if (pending_program && now > pending_program.start) {
880 running_program = init(pending_program, duration);
881 pending_program = null;
882 dispatch(node, running_program.b, 'start');
883 if (css) {
884 clear_animation();
885 animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);
886 }
887 }
888 if (running_program) {
889 if (now >= running_program.end) {
890 tick(t = running_program.b, 1 - t);
891 dispatch(node, running_program.b, 'end');
892 if (!pending_program) {
893 // we're done
894 if (running_program.b) {
895 // intro — we can tidy up immediately
896 clear_animation();
897 }
898 else {
899 // outro — needs to be coordinated
900 if (!--running_program.group.r)
901 run_all(running_program.group.c);
902 }
903 }
904 running_program = null;
905 }
906 else if (now >= running_program.start) {
907 const p = now - running_program.start;
908 t = running_program.a + running_program.d * easing(p / running_program.duration);
909 tick(t, 1 - t);
910 }
911 }
912 return !!(running_program || pending_program);
913 });
914 }
915 }
916 return {
917 run(b) {
918 if (is_function(config)) {
919 wait().then(() => {
920 // @ts-ignore
921 config = config();
922 go(b);
923 });
924 }
925 else {
926 go(b);
927 }
928 },
929 end() {
930 clear_animation();
931 running_program = pending_program = null;
932 }
933 };
934}
935
936function handle_promise(promise, info) {
937 const token = info.token = {};
938 function update(type, index, key, value) {
939 if (info.token !== token)
940 return;
941 info.resolved = value;
942 let child_ctx = info.ctx;
943 if (key !== undefined) {
944 child_ctx = child_ctx.slice();
945 child_ctx[key] = value;
946 }
947 const block = type && (info.current = type)(child_ctx);
948 let needs_flush = false;
949 if (info.block) {
950 if (info.blocks) {
951 info.blocks.forEach((block, i) => {
952 if (i !== index && block) {
953 group_outros();
954 transition_out(block, 1, 1, () => {
955 info.blocks[i] = null;
956 });
957 check_outros();
958 }
959 });
960 }
961 else {
962 info.block.d(1);
963 }
964 block.c();
965 transition_in(block, 1);
966 block.m(info.mount(), info.anchor);
967 needs_flush = true;
968 }
969 info.block = block;
970 if (info.blocks)
971 info.blocks[index] = block;
972 if (needs_flush) {
973 flush();
974 }
975 }
976 if (is_promise(promise)) {
977 const current_component = get_current_component();
978 promise.then(value => {
979 set_current_component(current_component);
980 update(info.then, 1, info.value, value);
981 set_current_component(null);
982 }, error => {
983 set_current_component(current_component);
984 update(info.catch, 2, info.error, error);
985 set_current_component(null);
986 });
987 // if we previously had a then/catch block, destroy it
988 if (info.current !== info.pending) {
989 update(info.pending, 0);
990 return true;
991 }
992 }
993 else {
994 if (info.current !== info.then) {
995 update(info.then, 1, info.value, promise);
996 return true;
997 }
998 info.resolved = promise;
999 }
1000}
1001
1002const globals = (typeof window !== 'undefined' ? window : global);
1003
1004function destroy_block(block, lookup) {
1005 block.d(1);
1006 lookup.delete(block.key);
1007}
1008function outro_and_destroy_block(block, lookup) {
1009 transition_out(block, 1, 1, () => {
1010 lookup.delete(block.key);
1011 });
1012}
1013function fix_and_destroy_block(block, lookup) {
1014 block.f();
1015 destroy_block(block, lookup);
1016}
1017function fix_and_outro_and_destroy_block(block, lookup) {
1018 block.f();
1019 outro_and_destroy_block(block, lookup);
1020}
1021function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {
1022 let o = old_blocks.length;
1023 let n = list.length;
1024 let i = o;
1025 const old_indexes = {};
1026 while (i--)
1027 old_indexes[old_blocks[i].key] = i;
1028 const new_blocks = [];
1029 const new_lookup = new Map();
1030 const deltas = new Map();
1031 i = n;
1032 while (i--) {
1033 const child_ctx = get_context(ctx, list, i);
1034 const key = get_key(child_ctx);
1035 let block = lookup.get(key);
1036 if (!block) {
1037 block = create_each_block(key, child_ctx);
1038 block.c();
1039 }
1040 else if (dynamic) {
1041 block.p(child_ctx, dirty);
1042 }
1043 new_lookup.set(key, new_blocks[i] = block);
1044 if (key in old_indexes)
1045 deltas.set(key, Math.abs(i - old_indexes[key]));
1046 }
1047 const will_move = new Set();
1048 const did_move = new Set();
1049 function insert(block) {
1050 transition_in(block, 1);
1051 block.m(node, next);
1052 lookup.set(block.key, block);
1053 next = block.first;
1054 n--;
1055 }
1056 while (o && n) {
1057 const new_block = new_blocks[n - 1];
1058 const old_block = old_blocks[o - 1];
1059 const new_key = new_block.key;
1060 const old_key = old_block.key;
1061 if (new_block === old_block) {
1062 // do nothing
1063 next = new_block.first;
1064 o--;
1065 n--;
1066 }
1067 else if (!new_lookup.has(old_key)) {
1068 // remove old block
1069 destroy(old_block, lookup);
1070 o--;
1071 }
1072 else if (!lookup.has(new_key) || will_move.has(new_key)) {
1073 insert(new_block);
1074 }
1075 else if (did_move.has(old_key)) {
1076 o--;
1077 }
1078 else if (deltas.get(new_key) > deltas.get(old_key)) {
1079 did_move.add(new_key);
1080 insert(new_block);
1081 }
1082 else {
1083 will_move.add(old_key);
1084 o--;
1085 }
1086 }
1087 while (o--) {
1088 const old_block = old_blocks[o];
1089 if (!new_lookup.has(old_block.key))
1090 destroy(old_block, lookup);
1091 }
1092 while (n)
1093 insert(new_blocks[n - 1]);
1094 return new_blocks;
1095}
1096function measure(blocks) {
1097 const rects = {};
1098 let i = blocks.length;
1099 while (i--)
1100 rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();
1101 return rects;
1102}
1103
1104function get_spread_update(levels, updates) {
1105 const update = {};
1106 const to_null_out = {};
1107 const accounted_for = { $$scope: 1 };
1108 let i = levels.length;
1109 while (i--) {
1110 const o = levels[i];
1111 const n = updates[i];
1112 if (n) {
1113 for (const key in o) {
1114 if (!(key in n))
1115 to_null_out[key] = 1;
1116 }
1117 for (const key in n) {
1118 if (!accounted_for[key]) {
1119 update[key] = n[key];
1120 accounted_for[key] = 1;
1121 }
1122 }
1123 levels[i] = n;
1124 }
1125 else {
1126 for (const key in o) {
1127 accounted_for[key] = 1;
1128 }
1129 }
1130 }
1131 for (const key in to_null_out) {
1132 if (!(key in update))
1133 update[key] = undefined;
1134 }
1135 return update;
1136}
1137function get_spread_object(spread_props) {
1138 return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
1139}
1140
1141// source: https://html.spec.whatwg.org/multipage/indices.html
1142const boolean_attributes = new Set([
1143 'allowfullscreen',
1144 'allowpaymentrequest',
1145 'async',
1146 'autofocus',
1147 'autoplay',
1148 'checked',
1149 'controls',
1150 'default',
1151 'defer',
1152 'disabled',
1153 'formnovalidate',
1154 'hidden',
1155 'ismap',
1156 'loop',
1157 'multiple',
1158 'muted',
1159 'nomodule',
1160 'novalidate',
1161 'open',
1162 'playsinline',
1163 'readonly',
1164 'required',
1165 'reversed',
1166 'selected'
1167]);
1168
1169const invalid_attribute_name_character = /[\s'">/=\u{FDD0}-\u{FDEF}\u{FFFE}\u{FFFF}\u{1FFFE}\u{1FFFF}\u{2FFFE}\u{2FFFF}\u{3FFFE}\u{3FFFF}\u{4FFFE}\u{4FFFF}\u{5FFFE}\u{5FFFF}\u{6FFFE}\u{6FFFF}\u{7FFFE}\u{7FFFF}\u{8FFFE}\u{8FFFF}\u{9FFFE}\u{9FFFF}\u{AFFFE}\u{AFFFF}\u{BFFFE}\u{BFFFF}\u{CFFFE}\u{CFFFF}\u{DFFFE}\u{DFFFF}\u{EFFFE}\u{EFFFF}\u{FFFFE}\u{FFFFF}\u{10FFFE}\u{10FFFF}]/u;
1170// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
1171// https://infra.spec.whatwg.org/#noncharacter
1172function spread(args, classes_to_add) {
1173 const attributes = Object.assign({}, ...args);
1174 if (classes_to_add) {
1175 if (attributes.class == null) {
1176 attributes.class = classes_to_add;
1177 }
1178 else {
1179 attributes.class += ' ' + classes_to_add;
1180 }
1181 }
1182 let str = '';
1183 Object.keys(attributes).forEach(name => {
1184 if (invalid_attribute_name_character.test(name))
1185 return;
1186 const value = attributes[name];
1187 if (value === true)
1188 str += " " + name;
1189 else if (boolean_attributes.has(name.toLowerCase())) {
1190 if (value)
1191 str += " " + name;
1192 }
1193 else if (value != null) {
1194 str += " " + name + "=" + JSON.stringify(String(value)
1195 .replace(/"/g, '&#34;')
1196 .replace(/'/g, '&#39;'));
1197 }
1198 });
1199 return str;
1200}
1201const escaped = {
1202 '"': '&quot;',
1203 "'": '&#39;',
1204 '&': '&amp;',
1205 '<': '&lt;',
1206 '>': '&gt;'
1207};
1208function escape(html) {
1209 return String(html).replace(/["'&<>]/g, match => escaped[match]);
1210}
1211function each(items, fn) {
1212 let str = '';
1213 for (let i = 0; i < items.length; i += 1) {
1214 str += fn(items[i], i);
1215 }
1216 return str;
1217}
1218const missing_component = {
1219 $$render: () => ''
1220};
1221function validate_component(component, name) {
1222 if (!component || !component.$$render) {
1223 if (name === 'svelte:component')
1224 name += ' this={...}';
1225 throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);
1226 }
1227 return component;
1228}
1229function debug(file, line, column, values) {
1230 console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console
1231 console.log(values); // eslint-disable-line no-console
1232 return '';
1233}
1234let on_destroy;
1235function create_ssr_component(fn) {
1236 function $$render(result, props, bindings, slots) {
1237 const parent_component = exports.current_component;
1238 const $$ = {
1239 on_destroy,
1240 context: new Map(parent_component ? parent_component.$$.context : []),
1241 // these will be immediately discarded
1242 on_mount: [],
1243 before_update: [],
1244 after_update: [],
1245 callbacks: blank_object()
1246 };
1247 set_current_component({ $$ });
1248 const html = fn(result, props, bindings, slots);
1249 set_current_component(parent_component);
1250 return html;
1251 }
1252 return {
1253 render: (props = {}, options = {}) => {
1254 on_destroy = [];
1255 const result = { head: '', css: new Set() };
1256 const html = $$render(result, props, {}, options);
1257 run_all(on_destroy);
1258 return {
1259 html,
1260 css: {
1261 code: Array.from(result.css).map(css => css.code).join('\n'),
1262 map: null // TODO
1263 },
1264 head: result.head
1265 };
1266 },
1267 $$render
1268 };
1269}
1270function add_attribute(name, value, boolean) {
1271 if (value == null || (boolean && !value))
1272 return '';
1273 return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `"${value}"`}`}`;
1274}
1275function add_classes(classes) {
1276 return classes ? ` class="${classes}"` : ``;
1277}
1278
1279function bind(component, name, callback) {
1280 const index = component.$$.props[name];
1281 if (index !== undefined) {
1282 component.$$.bound[index] = callback;
1283 callback(component.$$.ctx[index]);
1284 }
1285}
1286function create_component(block) {
1287 block && block.c();
1288}
1289function claim_component(block, parent_nodes) {
1290 block && block.l(parent_nodes);
1291}
1292function mount_component(component, target, anchor) {
1293 const { fragment, on_mount, on_destroy, after_update } = component.$$;
1294 fragment && fragment.m(target, anchor);
1295 // onMount happens before the initial afterUpdate
1296 add_render_callback(() => {
1297 const new_on_destroy = on_mount.map(run).filter(is_function);
1298 if (on_destroy) {
1299 on_destroy.push(...new_on_destroy);
1300 }
1301 else {
1302 // Edge case - component was destroyed immediately,
1303 // most likely as a result of a binding initialising
1304 run_all(new_on_destroy);
1305 }
1306 component.$$.on_mount = [];
1307 });
1308 after_update.forEach(add_render_callback);
1309}
1310function destroy_component(component, detaching) {
1311 const $$ = component.$$;
1312 if ($$.fragment !== null) {
1313 run_all($$.on_destroy);
1314 $$.fragment && $$.fragment.d(detaching);
1315 // TODO null out other refs, including component.$$ (but need to
1316 // preserve final state?)
1317 $$.on_destroy = $$.fragment = null;
1318 $$.ctx = [];
1319 }
1320}
1321function make_dirty(component, i) {
1322 if (component.$$.dirty[0] === -1) {
1323 dirty_components.push(component);
1324 schedule_update();
1325 component.$$.dirty.fill(0);
1326 }
1327 component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));
1328}
1329function init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) {
1330 const parent_component = exports.current_component;
1331 set_current_component(component);
1332 const prop_values = options.props || {};
1333 const $$ = component.$$ = {
1334 fragment: null,
1335 ctx: null,
1336 // state
1337 props,
1338 update: noop,
1339 not_equal,
1340 bound: blank_object(),
1341 // lifecycle
1342 on_mount: [],
1343 on_destroy: [],
1344 before_update: [],
1345 after_update: [],
1346 context: new Map(parent_component ? parent_component.$$.context : []),
1347 // everything else
1348 callbacks: blank_object(),
1349 dirty
1350 };
1351 let ready = false;
1352 $$.ctx = instance
1353 ? instance(component, prop_values, (i, ret, value = ret) => {
1354 if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
1355 if ($$.bound[i])
1356 $$.bound[i](value);
1357 if (ready)
1358 make_dirty(component, i);
1359 }
1360 return ret;
1361 })
1362 : [];
1363 $$.update();
1364 ready = true;
1365 run_all($$.before_update);
1366 // `false` as a special case of no DOM component
1367 $$.fragment = create_fragment ? create_fragment($$.ctx) : false;
1368 if (options.target) {
1369 if (options.hydrate) {
1370 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1371 $$.fragment && $$.fragment.l(children(options.target));
1372 }
1373 else {
1374 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1375 $$.fragment && $$.fragment.c();
1376 }
1377 if (options.intro)
1378 transition_in(component.$$.fragment);
1379 mount_component(component, options.target, options.anchor);
1380 flush();
1381 }
1382 set_current_component(parent_component);
1383}
1384if (typeof HTMLElement === 'function') {
1385 exports.SvelteElement = class extends HTMLElement {
1386 constructor() {
1387 super();
1388 this.attachShadow({ mode: 'open' });
1389 }
1390 connectedCallback() {
1391 // @ts-ignore todo: improve typings
1392 for (const key in this.$$.slotted) {
1393 // @ts-ignore todo: improve typings
1394 this.appendChild(this.$$.slotted[key]);
1395 }
1396 }
1397 attributeChangedCallback(attr, _oldValue, newValue) {
1398 this[attr] = newValue;
1399 }
1400 $destroy() {
1401 destroy_component(this, 1);
1402 this.$destroy = noop;
1403 }
1404 $on(type, callback) {
1405 // TODO should this delegate to addEventListener?
1406 const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));
1407 callbacks.push(callback);
1408 return () => {
1409 const index = callbacks.indexOf(callback);
1410 if (index !== -1)
1411 callbacks.splice(index, 1);
1412 };
1413 }
1414 $set() {
1415 // overridden by instance, if it has props
1416 }
1417 };
1418}
1419class SvelteComponent {
1420 $destroy() {
1421 destroy_component(this, 1);
1422 this.$destroy = noop;
1423 }
1424 $on(type, callback) {
1425 const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));
1426 callbacks.push(callback);
1427 return () => {
1428 const index = callbacks.indexOf(callback);
1429 if (index !== -1)
1430 callbacks.splice(index, 1);
1431 };
1432 }
1433 $set() {
1434 // overridden by instance, if it has props
1435 }
1436}
1437
1438function dispatch_dev(type, detail) {
1439 document.dispatchEvent(custom_event(type, detail));
1440}
1441function append_dev(target, node) {
1442 dispatch_dev("SvelteDOMInsert", { target, node });
1443 append(target, node);
1444}
1445function insert_dev(target, node, anchor) {
1446 dispatch_dev("SvelteDOMInsert", { target, node, anchor });
1447 insert(target, node, anchor);
1448}
1449function detach_dev(node) {
1450 dispatch_dev("SvelteDOMRemove", { node });
1451 detach(node);
1452}
1453function detach_between_dev(before, after) {
1454 while (before.nextSibling && before.nextSibling !== after) {
1455 detach_dev(before.nextSibling);
1456 }
1457}
1458function detach_before_dev(after) {
1459 while (after.previousSibling) {
1460 detach_dev(after.previousSibling);
1461 }
1462}
1463function detach_after_dev(before) {
1464 while (before.nextSibling) {
1465 detach_dev(before.nextSibling);
1466 }
1467}
1468function listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {
1469 const modifiers = options === true ? ["capture"] : options ? Array.from(Object.keys(options)) : [];
1470 if (has_prevent_default)
1471 modifiers.push('preventDefault');
1472 if (has_stop_propagation)
1473 modifiers.push('stopPropagation');
1474 dispatch_dev("SvelteDOMAddEventListener", { node, event, handler, modifiers });
1475 const dispose = listen(node, event, handler, options);
1476 return () => {
1477 dispatch_dev("SvelteDOMRemoveEventListener", { node, event, handler, modifiers });
1478 dispose();
1479 };
1480}
1481function attr_dev(node, attribute, value) {
1482 attr(node, attribute, value);
1483 if (value == null)
1484 dispatch_dev("SvelteDOMRemoveAttribute", { node, attribute });
1485 else
1486 dispatch_dev("SvelteDOMSetAttribute", { node, attribute, value });
1487}
1488function prop_dev(node, property, value) {
1489 node[property] = value;
1490 dispatch_dev("SvelteDOMSetProperty", { node, property, value });
1491}
1492function dataset_dev(node, property, value) {
1493 node.dataset[property] = value;
1494 dispatch_dev("SvelteDOMSetDataset", { node, property, value });
1495}
1496function set_data_dev(text, data) {
1497 data = '' + data;
1498 if (text.data === data)
1499 return;
1500 dispatch_dev("SvelteDOMSetData", { node: text, data });
1501 text.data = data;
1502}
1503class SvelteComponentDev extends SvelteComponent {
1504 constructor(options) {
1505 if (!options || (!options.target && !options.$$inline)) {
1506 throw new Error(`'target' is a required option`);
1507 }
1508 super();
1509 }
1510 $destroy() {
1511 super.$destroy();
1512 this.$destroy = () => {
1513 console.warn(`Component was already destroyed`); // eslint-disable-line no-console
1514 };
1515 }
1516}
1517function loop_guard(timeout) {
1518 const start = Date.now();
1519 return () => {
1520 if (Date.now() - start > timeout) {
1521 throw new Error(`Infinite loop detected`);
1522 }
1523 };
1524}
1525
1526exports.HtmlTag = HtmlTag;
1527exports.SvelteComponent = SvelteComponent;
1528exports.SvelteComponentDev = SvelteComponentDev;
1529exports.action_destroyer = action_destroyer;
1530exports.add_attribute = add_attribute;
1531exports.add_classes = add_classes;
1532exports.add_flush_callback = add_flush_callback;
1533exports.add_location = add_location;
1534exports.add_render_callback = add_render_callback;
1535exports.add_resize_listener = add_resize_listener;
1536exports.add_transform = add_transform;
1537exports.afterUpdate = afterUpdate;
1538exports.append = append;
1539exports.append_dev = append_dev;
1540exports.assign = assign;
1541exports.attr = attr;
1542exports.attr_dev = attr_dev;
1543exports.beforeUpdate = beforeUpdate;
1544exports.bind = bind;
1545exports.binding_callbacks = binding_callbacks;
1546exports.blank_object = blank_object;
1547exports.bubble = bubble;
1548exports.check_outros = check_outros;
1549exports.children = children;
1550exports.claim_component = claim_component;
1551exports.claim_element = claim_element;
1552exports.claim_space = claim_space;
1553exports.claim_text = claim_text;
1554exports.clear_loops = clear_loops;
1555exports.component_subscribe = component_subscribe;
1556exports.createEventDispatcher = createEventDispatcher;
1557exports.create_animation = create_animation;
1558exports.create_bidirectional_transition = create_bidirectional_transition;
1559exports.create_component = create_component;
1560exports.create_in_transition = create_in_transition;
1561exports.create_out_transition = create_out_transition;
1562exports.create_slot = create_slot;
1563exports.create_ssr_component = create_ssr_component;
1564exports.custom_event = custom_event;
1565exports.dataset_dev = dataset_dev;
1566exports.debug = debug;
1567exports.destroy_block = destroy_block;
1568exports.destroy_component = destroy_component;
1569exports.destroy_each = destroy_each;
1570exports.detach = detach;
1571exports.detach_after_dev = detach_after_dev;
1572exports.detach_before_dev = detach_before_dev;
1573exports.detach_between_dev = detach_between_dev;
1574exports.detach_dev = detach_dev;
1575exports.dirty_components = dirty_components;
1576exports.dispatch_dev = dispatch_dev;
1577exports.each = each;
1578exports.element = element;
1579exports.element_is = element_is;
1580exports.empty = empty;
1581exports.escape = escape;
1582exports.escaped = escaped;
1583exports.exclude_internal_props = exclude_internal_props;
1584exports.fix_and_destroy_block = fix_and_destroy_block;
1585exports.fix_and_outro_and_destroy_block = fix_and_outro_and_destroy_block;
1586exports.fix_position = fix_position;
1587exports.flush = flush;
1588exports.getContext = getContext;
1589exports.get_binding_group_value = get_binding_group_value;
1590exports.get_current_component = get_current_component;
1591exports.get_slot_changes = get_slot_changes;
1592exports.get_slot_context = get_slot_context;
1593exports.get_spread_object = get_spread_object;
1594exports.get_spread_update = get_spread_update;
1595exports.get_store_value = get_store_value;
1596exports.globals = globals;
1597exports.group_outros = group_outros;
1598exports.handle_promise = handle_promise;
1599exports.has_prop = has_prop;
1600exports.identity = identity;
1601exports.init = init;
1602exports.insert = insert;
1603exports.insert_dev = insert_dev;
1604exports.intros = intros;
1605exports.invalid_attribute_name_character = invalid_attribute_name_character;
1606exports.is_client = is_client;
1607exports.is_function = is_function;
1608exports.is_promise = is_promise;
1609exports.listen = listen;
1610exports.listen_dev = listen_dev;
1611exports.loop = loop;
1612exports.loop_guard = loop_guard;
1613exports.measure = measure;
1614exports.missing_component = missing_component;
1615exports.mount_component = mount_component;
1616exports.noop = noop;
1617exports.not_equal = not_equal;
1618exports.null_to_empty = null_to_empty;
1619exports.object_without_properties = object_without_properties;
1620exports.onDestroy = onDestroy;
1621exports.onMount = onMount;
1622exports.once = once;
1623exports.outro_and_destroy_block = outro_and_destroy_block;
1624exports.prevent_default = prevent_default;
1625exports.prop_dev = prop_dev;
1626exports.run = run;
1627exports.run_all = run_all;
1628exports.safe_not_equal = safe_not_equal;
1629exports.schedule_update = schedule_update;
1630exports.select_multiple_value = select_multiple_value;
1631exports.select_option = select_option;
1632exports.select_options = select_options;
1633exports.select_value = select_value;
1634exports.self = self;
1635exports.setContext = setContext;
1636exports.set_attributes = set_attributes;
1637exports.set_current_component = set_current_component;
1638exports.set_custom_element_data = set_custom_element_data;
1639exports.set_data = set_data;
1640exports.set_data_dev = set_data_dev;
1641exports.set_input_type = set_input_type;
1642exports.set_input_value = set_input_value;
1643exports.set_now = set_now;
1644exports.set_raf = set_raf;
1645exports.set_store_value = set_store_value;
1646exports.set_style = set_style;
1647exports.set_svg_attributes = set_svg_attributes;
1648exports.space = space;
1649exports.spread = spread;
1650exports.stop_propagation = stop_propagation;
1651exports.subscribe = subscribe;
1652exports.svg_element = svg_element;
1653exports.text = text;
1654exports.tick = tick;
1655exports.time_ranges_to_array = time_ranges_to_array;
1656exports.to_number = to_number;
1657exports.toggle_class = toggle_class;
1658exports.transition_in = transition_in;
1659exports.transition_out = transition_out;
1660exports.update_keyed_each = update_keyed_each;
1661exports.validate_component = validate_component;
1662exports.validate_store = validate_store;
1663exports.xlink_attr = xlink_attr;