-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.iife.js.map
1 lines (1 loc) · 270 KB
/
index.iife.js.map
1
{"version":3,"file":"index.iife.js","sources":["../node_modules/svelte/internal/index.mjs","../node_modules/svelte/store/index.mjs","../src/core/store.js","../src/utils/domUtils.ts","../src/utils/domUtils.js","../src/core/constants.js","../src/core/drag/draggable.js","../src/core/drag/dragDropManager.js","../node_modules/style-inject/dist/style-inject.es.js","../src/entities/Task.svelte","../src/entities/Row.svelte","../src/entities/TimeRange.svelte","../src/entities/TimeRangeHeader.svelte","../src/column/Column.svelte","../src/utils/date.js","../src/column/ColumnHeaderRow.svelte","../src/utils/utils.js","../src/column/ColumnHeader.svelte","../src/column/Columns.svelte","../src/utils/selectionManager.js","../src/core/api.js","../src/core/task.js","../src/core/row.js","../src/core/timeRange.js","../src/core/column.js","../src/core/events.js","../src/Gantt.svelte","../src/modules/table/TableTreeCell.svelte","../src/modules/table/TableRow.svelte","../src/modules/table/Table.svelte","../src/modules/table/index.js","../src/modules/dependencies/Arrow.svelte","../src/modules/dependencies/Dependency.svelte","../src/modules/dependencies/GanttDependencies.svelte","../src/modules/dependencies/index.js","../src/modules/external/external.js","../src/index.ts"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n let j = 0;\n while (j < node.attributes.length) {\n const attribute = node.attributes[j];\n if (attributes[attribute.name]) {\n j++;\n }\n else {\n node.removeAttribute(attribute.name);\n }\n }\n return nodes.splice(i, 1)[0];\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n const z_index = (parseInt(computed_style.zIndex) || 0) - 1;\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', `display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ` +\n `overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: ${z_index};`);\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = `data:text/html,<script>onresize=function(){parent.postMessage(0,'*')}</script>`;\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(anchor = null) {\n this.a = anchor;\n this.e = this.n = null;\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n this.e = element(target.nodeName);\n this.t = target;\n this.h(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\n\nconst active_docs = new Set();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = node.ownerDocument;\n active_docs.add(doc);\n const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet);\n const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {});\n if (!current_rules[name]) {\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n active_docs.forEach(doc => {\n const stylesheet = doc.__svelte_stylesheet;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n doc.__svelte_rules = {};\n });\n active_docs.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nlet flushing = false;\nconst seen_callbacks = new Set();\nfunction flush() {\n if (flushing)\n return;\n flushing = true;\n do {\n // first, call beforeUpdate functions\n // and update components\n for (let i = 0; i < dirty_components.length; i += 1) {\n const component = dirty_components[i];\n set_current_component(component);\n update(component.$$);\n }\n dirty_components.length = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n flushing = false;\n seen_callbacks.clear();\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error(`Cannot have duplicate keys in a keyed each`);\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst 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;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, classes_to_add) {\n const attributes = Object.assign({}, ...args);\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += \" \" + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += \" \" + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${String(value).replace(/\"/g, '"').replace(/'/g, ''')}\"`;\n }\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n 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`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : ``;\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const prop_values = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, prop_values, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if ($$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.23.0' }, detail)));\n}\nfunction append_dev(target, node) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev(\"SvelteDOMRemove\", { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? [\"capture\"] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev(\"SvelteDOMAddEventListener\", { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev(\"SvelteDOMRemoveEventListener\", { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev(\"SvelteDOMRemoveAttribute\", { node, attribute });\n else\n dispatch_dev(\"SvelteDOMSetAttribute\", { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev(\"SvelteDOMSetProperty\", { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev(\"SvelteDOMSetDataset\", { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.data === data)\n return;\n dispatch_dev(\"SvelteDOMSetData\", { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error(`Infinite loop detected`);\n }\n };\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_space, claim_text, clear_loops, component_subscribe, compute_rest_props, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, has_prop, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_function, is_promise, listen, listen_dev, loop, loop_guard, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, update_slot, validate_component, validate_each_argument, validate_each_keys, validate_slots, validate_store, xlink_attr };\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal';\nexport { get_store_value as get } from '../internal';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe,\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nimport { writable, derived } from 'svelte/store';\r\nfunction createEntityStore() {\r\n const { subscribe, set, update } = writable({ ids: [], entities: {} });\r\n return {\r\n set,\r\n _update: update,\r\n subscribe,\r\n add: (item) => update(({ ids, entities }) => ({\r\n ids: [...ids, item.model.id],\r\n entities: Object.assign(Object.assign({}, entities), { [item.model.id]: item })\r\n })),\r\n delete: (id) => update(state => {\r\n const _a = state.entities, _b = id, _ = _a[_b], entities = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\r\n return {\r\n ids: state.ids.filter(i => i !== id),\r\n entities\r\n };\r\n }),\r\n deleteAll: (ids) => update(state => {\r\n const entities = Object.assign({}, state.entities);\r\n const idState = {};\r\n ids.forEach(id => {\r\n delete entities[id];\r\n idState[id] = true;\r\n });\r\n return {\r\n ids: state.ids.filter(i => !idState[i]),\r\n entities\r\n };\r\n }),\r\n update: (item) => update(({ ids, entities }) => ({\r\n ids,\r\n entities: Object.assign(Object.assign({}, entities), { [item.model.id]: item })\r\n })),\r\n upsert: (item) => update(({ ids, entities }) => {\r\n const hasIndex = ids.indexOf(item.model.id) !== -1;\r\n return {\r\n ids: hasIndex ? ids : [...ids, item.model.id],\r\n entities: Object.assign(Object.assign({}, entities), { [item.model.id]: item })\r\n };\r\n }),\r\n upsertAll: (items) => update(state => {\r\n const entities = Object.assign({}, state.entities);\r\n const ids = [...state.ids];\r\n items.forEach(item => {\r\n if (!entities[item.model.id]) {\r\n ids.push(item.model.id);\r\n }\r\n entities[item.model.id] = item;\r\n });\r\n return {\r\n ids,\r\n entities\r\n };\r\n }),\r\n addAll: (items) => {\r\n const ids = [];\r\n const entities = {};\r\n for (const entity of items) {\r\n ids.push(entity.model.id);\r\n entities[entity.model.id] = entity;\r\n }\r\n set({ ids, entities });\r\n },\r\n refresh: () => update(store => (Object.assign({}, store)))\r\n };\r\n}\r\nexport const taskStore = createEntityStore();\r\nexport const rowStore = createEntityStore();\r\nexport const timeRangeStore = createEntityStore();\r\nexport const allTasks = all(taskStore);\r\nexport const allRows = all(rowStore);\r\nexport const allTimeRanges = all(timeRangeStore);\r\nexport const rowTaskCache = derived(allTasks, $allTasks => {\r\n return $allTasks.reduce((cache, task) => {\r\n if (!cache[task.model.resourceId])\r\n cache[task.model.resourceId] = [];\r\n cache[task.model.resourceId].push(task.model.id);\r\n return cache;\r\n }, {});\r\n});\r\nexport function all(store) {\r\n return derived(store, ({ ids, entities }) => ids.map(id => entities[id]));\r\n}\r\nexport function where(store, filterFn) {\r\n return derived(store, ({ ids, entities }) => {\r\n const result = [];\r\n for (const id of ids) {\r\n const entity = entities[id];\r\n if (filterFn(entity)) {\r\n result.push(entity);\r\n }\r\n }\r\n return result;\r\n });\r\n}\r\n//# sourceMappingURL=store.js.map","export function isLeftClick(event) {\r\n return event.which === 1;\r\n}\r\n\r\n/**\r\n * Gets mouse position within an element\r\n * @param node \r\n * @param event \r\n */\r\nexport function getRelativePos(node: HTMLElement, event: MouseEvent) {\r\n const rect = node.getBoundingClientRect();\r\n const x = event.clientX - rect.left; //x position within the element.\r\n const y = event.clientY - rect.top; //y position within the element.\r\n return {\r\n x: x,\r\n y: y\r\n }\r\n}\r\n\r\n/**\r\n * Adds an event listener that triggers once.\r\n * @param target \r\n * @param type \r\n * @param listener \r\n * @param addOptions \r\n * @param removeOptions \r\n */\r\nexport function addEventListenerOnce(target: HTMLElement | Window, type: string, listener, addOptions?, removeOptions?) {\r\n target.addEventListener(type, function fn(event) {\r\n target.removeEventListener(type, fn, removeOptions);\r\n listener.apply(this, arguments, addOptions);\r\n });\r\n}\r\n\r\n/**\r\n * Sets the cursor on an element. Globally by default.\r\n * @param cursor \r\n * @param node \r\n */\r\nexport function setCursor(cursor: string, node: HTMLElement = document.body) {\r\n node.style.cursor = cursor;\r\n}\r\n\r\nexport function sortFn(prop: (element: any) => any) {\r\n return function (a, b) {\r\n if (prop(a) < prop(b)) {\r\n return -1;\r\n } else if (prop(a) > prop(b)) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n}\r\n\r\nexport function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) func.apply(context, args);\r\n };\r\n};\r\n\r\nexport function throttle(func, limit) {\r\n var wait = false;\r\n return function () {\r\n if (!wait) {\r\n\r\n func.apply(null, arguments);\r\n wait = true;\r\n setTimeout(function () {\r\n wait = false;\r\n }, limit);\r\n }\r\n }\r\n}","export function isLeftClick(event) {\r\n return event.which === 1;\r\n}\r\n/**\r\n * Gets mouse position within an element\r\n * @param node\r\n * @param event\r\n */\r\nexport function getRelativePos(node, event) {\r\n const rect = node.getBoundingClientRect();\r\n const x = event.clientX - rect.left; //x position within the element.\r\n const y = event.clientY - rect.top; //y position within the element.\r\n return {\r\n x: x,\r\n y: y\r\n };\r\n}\r\n/**\r\n * Adds an event listener that triggers once.\r\n * @param target\r\n * @param type\r\n * @param listener\r\n * @param addOptions\r\n * @param removeOptions\r\n */\r\nexport function addEventListenerOnce(target, type, listener, addOptions, removeOptions) {\r\n target.addEventListener(type, function fn(event) {\r\n target.removeEventListener(type, fn, removeOptions);\r\n listener.apply(this, arguments, addOptions);\r\n });\r\n}\r\n/**\r\n * Sets the cursor on an element. Globally by default.\r\n * @param cursor\r\n * @param node\r\n */\r\nexport function setCursor(cursor, node = document.body) {\r\n node.style.cursor = cursor;\r\n}\r\nexport function sortFn(prop) {\r\n return function (a, b) {\r\n if (prop(a) < prop(b)) {\r\n return -1;\r\n }\r\n else if (prop(a) > prop(b)) {\r\n return 1;\r\n }\r\n return 0;\r\n };\r\n}\r\nexport function debounce(func, wait, immediate) {\r\n var timeout;\r\n return function () {\r\n var context = this, args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate)\r\n func.apply(context, args);\r\n };\r\n var callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow)\r\n func.apply(context, args);\r\n };\r\n}\r\n;\r\nexport function throttle(func, limit) {\r\n var wait = false;\r\n return function () {\r\n if (!wait) {\r\n func.apply(null, arguments);\r\n wait = true;\r\n setTimeout(function () {\r\n wait = false;\r\n }, limit);\r\n }\r\n };\r\n}\r\n//# sourceMappingURL=domUtils.js.map","export const MIN_DRAG_X = 2;\r\nexport const MIN_DRAG_Y = 2;\r\n//# sourceMappingURL=constants.js.map","import { isLeftClick, addEventListenerOnce, getRelativePos } from '../../utils/domUtils';\r\nimport { MIN_DRAG_Y, MIN_DRAG_X } from '../constants';\r\n/**\r\n * Applies dragging interaction to gantt elements\r\n */\r\nexport class Draggable {\r\n constructor(node, settings) {\r\n this.dragging = false;\r\n this.resizing = false;\r\n this.resizeTriggered = false;\r\n this.onmousedown = (event) => {\r\n if (!isLeftClick(event)) {\r\n return;\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n const canDrag = this.dragAllowed;\r\n const canResize = this.resizeAllowed;\r\n if (canDrag || canResize) {\r\n const x = this.settings.getX(event);\r\n const y = this.settings.getY(event);\r\n const width = this.settings.getWidth();\r\n this.initialX = event.clientX;\r\n this.initialY = event.clientY;\r\n this.mouseStartPosX = getRelativePos(this.settings.container, event).x - x;\r\n this.mouseStartPosY = getRelativePos(this.settings.container, event).y - y;\r\n this.mouseStartRight = x + width;\r\n if (canResize && this.mouseStartPosX < this.settings.resizeHandleWidth) {\r\n this.direction = 'left';\r\n this.resizing = true;\r\n }\r\n if (canResize && this.mouseStartPosX > width - this.settings.resizeHandleWidth) {\r\n this.direction = 'right';\r\n this.resizing = true;\r\n }\r\n if (canDrag && !this.resizing) {\r\n this.dragging = true;\r\n }\r\n if ((this.dragging || this.resizing) && this.settings.onDown) {\r\n this.settings.onDown({\r\n mouseEvent: event,\r\n x,\r\n width,\r\n y,\r\n resizing: this.resizing,\r\n dragging: this.dragging\r\n });\r\n }\r\n window.addEventListener('mousemove', this.onmousemove, false);\r\n addEventListenerOnce(window, 'mouseup', this.onmouseup);\r\n }\r\n };\r\n this.onmousemove = (event) => {\r\n if (!this.resizeTriggered) {\r\n if (Math.abs(event.clientX - this.initialX) > MIN_DRAG_X || Math.abs(event.clientY - this.initialY) > MIN_DRAG_Y) {\r\n this.resizeTriggered = true;\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n event.preventDefault();\r\n if (this.resizing) {\r\n const mousePos = getRelativePos(this.settings.container, event);\r\n const x = this.settings.getX(event);\r\n const width = this.settings.getWidth();\r\n let resultX;\r\n let resultWidth;\r\n if (this.direction === 'left') { //resize ulijevo\r\n if (mousePos.x > x + width) {\r\n this.direction = 'right';\r\n resultX = this.mouseStartRight;\r\n resultWidth = this.mouseStartRight - mousePos.x;\r\n this.mouseStartRight = this.mouseStartRight + width;\r\n }\r\n else {\r\n resultX = mousePos.x;\r\n resultWidth = this.mouseStartRight - mousePos.x;\r\n }\r\n }\r\n else if (this.direction === 'right') { //resize desno\r\n if (mousePos.x <= x) {\r\n this.direction = 'left';\r\n resultX = mousePos.x;\r\n resultWidth = x - mousePos.x;\r\n this.mouseStartRight = x;\r\n }\r\n else {\r\n resultX = x;\r\n resultWidth = mousePos.x - x;\r\n }\r\n }\r\n this.settings.onResize && this.settings.onResize({\r\n mouseEvent: event,\r\n x: resultX,\r\n width: resultWidth\r\n });\r\n }\r\n // mouseup\r\n if (this.dragging && this.settings.onDrag) {\r\n const mousePos = getRelativePos(this.settings.container, event);\r\n this.settings.onDrag({\r\n mouseEvent: event,\r\n x: mousePos.x - this.mouseStartPosX,\r\n y: mousePos.y - this.mouseStartPosY\r\n });\r\n }\r\n };\r\n this.onmouseup = (event) => {\r\n const x = this.settings.getX(event);\r\n const y = this.settings.getY(event);\r\n const width = this.settings.getWidth();\r\n this.settings.onMouseUp && this.settings.onMouseUp();\r\n if (this.resizeTriggered && this.settings.onDrop) {\r\n this.settings.onDrop({\r\n mouseEvent: event,\r\n x,\r\n y,\r\n width,\r\n dragging: this.dragging,\r\n resizing: this.resizing\r\n });\r\n }\r\n this.dragging = false;\r\n this.resizing = false;\r\n this.direction = null;\r\n this.resizeTriggered = false;\r\n window.removeEventListener('mousemove', this.onmousemove, false);\r\n };\r\n this.settings = settings;\r\n this.node = node;\r\n node.addEventListener('mousedown', this.onmousedown, false);\r\n }\r\n get dragAllowed() {\r\n if (typeof (this.settings.dragAllowed) === 'function') {\r\n return this.settings.dragAllowed();\r\n }\r\n else {\r\n return this.settings.dragAllowed;\r\n }\r\n }\r\n get resizeAllowed() {\r\n if (typeof (this.settings.resizeAllowed) === 'function') {\r\n return this.settings.resizeAllowed();\r\n }\r\n else {\r\n return this.settings.resizeAllowed;\r\n }\r\n }\r\n destroy() {\r\n this.node.removeEventListener('mousedown', this.onmousedown, false);\r\n this.node.removeEventListener('mousemove', this.onmousemove, false);\r\n this.node.removeEventListener('mouseup', this.onmouseup, false);\r\n }\r\n}\r\n//# sourceMappingURL=draggable.js.map","import { get } from 'svelte/store';\r\nexport class DragDropManager {\r\n constructor(rowStore) {\r\n this.handlerMap = {};\r\n this.register('row', (event) => {\r\n let elements = document.elementsFromPoint(event.clientX, event.clientY);\r\n let rowElement = elements.find((element) => !!element.getAttribute('data-row-id'));\r\n if (rowElement !== undefined) {\r\n const rowId = rowElement.getAttribute('data-row-id');\r\n const { entities } = get(rowStore);\r\n const targetRow = entities[rowId];\r\n if (targetRow.model.enableDragging) {\r\n return targetRow;\r\n }\r\n }\r\n return null;\r\n });\r\n }\r\n register(target, handler) {\r\n this.handlerMap[target] = handler;\r\n }\r\n getTarget(target, event) {\r\n //const rowCenterX = this.root.refs.mainContainer.getBoundingClientRect().left + this.root.refs.mainContainer.getBoundingClientRect().width / 2;\r\n var handler = this.handlerMap[target];\r\n if (handler) {\r\n return handler(event);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=dragDropManager.js.map","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","<script lang=\"ts\">\r\n import { beforeUpdate, afterUpdate, getContext, onMount, onDestroy, tick } from \"svelte\";\r\n\r\n import { setCursor } from \"src/utils/domUtils\";\r\n import { taskStore, rowStore } from '../core/store';\r\n import { Draggable } from \"../core/drag\";\r\n import { reflectTask } from \"src/core/task\";\r\n\r\n export let model;\r\n export let height;\r\n export let left;\r\n export let top;\r\n export let width;\r\n export let reflected = false;\r\n export let taskObject;\r\n\r\n let animating = true;\r\n\r\n let _dragging = false;\r\n let _resizing = false;\r\n\r\n let _position = {\r\n x: left,\r\n y: top,\r\n width: width,\r\n }\r\n\r\n const MOVE_END_DELAY = 250;\r\n\r\n let timer;\r\n let timeout = (newTaskObject, shouldRun?) => {\r\n if (_dragging && shouldRun) {\r\n api['tasks'].raise.moveEnd(newTaskObject);\r\n }\r\n }\r\n\r\n $: updatePosition(left, top, width);\r\n function updatePosition(x, y, width) {\r\n if(!_dragging && !_resizing) {\r\n _position.x = x;\r\n _position.y = y;//row.y + 6;\r\n _position.width = width;\r\n // should NOT animate on resize/update of columns\r\n }\r\n }\r\n\r\n const { dimensionsChanged } = getContext('dimensions');\r\n const { rowContainer } = getContext('gantt');\r\n const { taskContent, resizeHandleWidth, rowPadding, onTaskButtonClick, reflectOnParentRows, reflectOnChildRows, taskElementHook } = getContext('options');\r\n const { dndManager, api, utils, selectionManager, columnService } = getContext('services');\r\n\r\n function drag(node) {\r\n if (row.model.enableDragging) {\r\n const ondrop = (event) => {\r\n let rowChangeValid = true;\r\n //row switching\r\n const sourceRow = $rowStore.entities[model.resourceId];\r\n if (event.dragging) {\r\n const targetRow = dndManager.getTarget(\"row\", event.mouseEvent);\r\n if (targetRow) {\r\n model.resourceId = sourceRow.model.id;\r\n // api.tasks.raise.switchRow(this, targetRow, sourceRow);\r\n } else {\r\n // rowChangeValid = false;\r\n }\r\n }\r\n \r\n _dragging = _resizing = false;\r\n \r\n const task = $taskStore.entities[model.id];\r\n \r\n if (rowChangeValid) {\r\n const prevFrom = model.from;\r\n const prevTo = model.to;\r\n const newFrom = model.from = utils.roundTo(columnService.getDateByPosition(event.x));\r\n const newTo = model.to = utils.roundTo(columnService.getDateByPosition(event.x + event.width));\r\n const newLeft = columnService.getPositionByDate(newFrom) | 0;\r\n const newRight = columnService.getPositionByDate(newTo) | 0;\r\n \r\n const targetRow = sourceRow;\r\n const left = newLeft;\r\n const width = newRight - newLeft;\r\n const top = $rowPadding + targetRow.y;\r\n \r\n updatePosition(left, top, width);\r\n \r\n const newTask = {\r\n ...task,\r\n left: left,\r\n width: width,\r\n top: top,\r\n model\r\n }\r\n \r\n // taskStore.update(newTask);\r\n \r\n const changed = prevFrom != newFrom || prevTo != newTo || (sourceRow && sourceRow.model.id !== targetRow.model.id);\r\n if(changed) {\r\n api.tasks.raise.change({ task: newTask, sourceRow, targetRow });\r\n }\r\n\r\n api.tasks.raise.dropped({ task: newTask, sourceRow, targetRow });\r\n \r\n // taskStore.update(newTask);\r\n \r\n if(changed) {\r\n api.tasks.raise.changed({ task: newTask, sourceRow, targetRow });\r\n }\r\n \r\n // // update shadow tasks\r\n // if(newTask.reflections) {\r\n // taskStore.deleteAll(newTask.reflections);\r\n // }\r\n \r\n // const reflectedTasks = [];\r\n // if(reflectOnChildRows && targetRow.allChildren) {\r\n // if(!newTask.reflections)\r\n // newTask.reflections = [];\r\n \r\n // const opts = { rowPadding: $rowPadding };\r\n // targetRow.allChildren.forEach(r => {\r\n // const reflectedTask = reflectTask(newTask, r, opts);\r\n // newTask.reflections.push(reflectedTask.model.id);\r\n // reflectedTasks.push(reflectedTask);\r\n // });\r\n // }\r\n \r\n // if(reflectOnParentRows && targetRow.allParents.length > 0) {\r\n // if(!newTask.reflections)\r\n // newTask.reflections = [];\r\n \r\n // const opts = { rowPadding: $rowPadding };\r\n // targetRow.allParents.forEach(r => {\r\n // const reflectedTask = reflectTask(newTask, r, opts);\r\n // newTask.reflections.push(reflectedTask.model.id);\r\n // reflectedTasks.push(reflectedTask);\r\n // });\r\n // }\r\n \r\n // if(reflectedTasks.length > 0) {\r\n // taskStore.upsertAll(reflectedTasks);\r\n // }\r\n \r\n // if(!(targetRow.allParents.length > 0) && !targetRow.allChildren) {\r\n // newTask.reflections = null;\r\n // }\r\n }\r\n else {\r\n // reset position\r\n (_position.x = task.left), (_position.width = task.width), (_position.y = task.top);\r\n }\r\n };\r\n \r\n const draggable = new Draggable(node, {\r\n onDown: (event) => {\r\n api['tasks'].raise.select({ task: taskObject });\r\n if (event.dragging) {\r\n setCursor(\"move\");\r\n timer = setTimeout(() => timeout({ task: taskObject }, true), MOVE_END_DELAY);\r\n }\r\n if (event.resizing) {\r\n setCursor(\"e-resize\");\r\n }\r\n },\r\n onMouseUp: () => {\r\n setCursor(\"default\");\r\n },\r\n onResize: (event) => {\r\n if (model.resizable) {\r\n (_position.x = event.x), (_position.width = event.width), (_resizing = true);\r\n }\r\n },\r\n onDrag: (event) => {\r\n // if (_position.x >= event.x + 5 || _position.x <= event.x + 5) {\r\n // api['tasks'].raise.moveEnd({ task: $taskStore.entities[model.id], taskObject });\r\n // }\r\n \r\n if (model.enableDragging) {\r\n _position.x = event.x;\r\n const newFrom = utils.roundTo(columnService.getDateByPosition(event.x));\r\n const newTo = utils.roundTo(columnService.getDateByPosition(event.x + _position.width));\r\n \r\n const newLeft = columnService.getPositionByDate(newFrom) | 0;\r\n const newRight = columnService.getPositionByDate(newTo) | 0;\r\n \r\n _dragging = true;\r\n let onQuarterMark = false;\r\n \r\n taskObject.model.newFrom = newFrom;\r\n taskObject.model.newTo = newTo;\r\n \r\n if (!(_position.x % 10)) {\r\n api['tasks'].raise.move({ task: taskObject });\r\n }\r\n if (_position.x <= newLeft - 5 || _position.x >= newLeft + 5 || !(_position.x % 1)) {\r\n onQuarterMark = true;\r\n }\r\n \r\n clearTimeout(timer);\r\n \r\n timer = setTimeout(() => timeout({ task: taskObject }, onQuarterMark), MOVE_END_DELAY);\r\n }\r\n },\r\n dragAllowed: () => {\r\n return row.model.enableDragging && model.enableDragging;\r\n },\r\n resizeAllowed: () => {\r\n return row.model.enableDragging && model.enableDragging;\r\n },\r\n onDrop: ondrop,\r\n container: rowContainer,\r\n resizeHandleWidth, \r\n getX: () => _position.x,\r\n getY: () => _position.y,\r\n getWidth: () => _position.width\r\n });\r\n return {\r\n destroy: () => draggable.destroy()\r\n };\r\n }\r\n }\r\n\r\n function taskElement(node, model) {\r\n if(taskElementHook) {\r\n return taskElementHook(node, model);\r\n }\r\n }\r\n\r\n export function onclick(event) {\r\n if (onTaskButtonClick) {\r\n onTaskButtonClick(model);\r\n }\r\n }\r\n \r\n let selection = selectionManager.selection;\r\n let selected = false;\r\n $: selected = $selection.indexOf(model.id) !== -1;\r\n\r\n let row;\r\n $: row = $rowStore.entities[model.resourceId];\r\n</script>\r\n\r\n<style>\r\n .sg-label-bottom {\r\n position: absolute;\r\n top: calc(100% + 10px);\r\n color: #888;\r\n }\r\n\r\n .debug {\r\n position: absolute;\r\n top: -10px;\r\n right: 0;\r\n font-size: 8px;\r\n color: black;\r\n }\r\n\r\n .sg-task {\r\n position: absolute;\r\n\r\n white-space: nowrap;\r\n /* overflow: hidden; */\r\n resize: none;\r\n transition: background-color 0.2s, opacity 0.2s;\r\n pointer-events: all;\r\n /* background: linear-gradient(to top right, rgb(116, 191, 255) calc(50% - 2px), black , rgb(116, 191, 255) calc(50% + 2px)); */\r\n /* outline: 1.5px solid black; */\r\n }\r\n\r\n :global(.sg-task) {\r\n background: rgb(116, 191, 255);\r\n }\r\n\r\n .sg-task-background {\r\n position: absolute;\r\n height: 100%;\r\n top: 0;\r\n }\r\n\r\n .sg-task-content {\r\n position: absolute;\r\n height: 100%;\r\n top: 0;\r\n\r\n padding-left: 2px;\r\n font-size: 14px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-start;\r\n }\r\n\r\n .sg-task:not(.moving) {\r\n transition: transform 0.2s, background-color 0.2s, width 0.2s;\r\n }\r\n\r\n .sg-task.moving {\r\n z-index: 1;\r\n opacity: 0.7;\r\n }\r\n\r\n /* .sg-task:hover::before {\r\n content: \"\";\r\n width: 4px;\r\n height: 50%;\r\n top: 25%;\r\n position: absolute;\r\n cursor: ew-resize;\r\n border-style: solid;\r\n border-color: rgba(255, 255, 255, 0.5);\r\n\r\n margin-left: 3px;\r\n left: 0;\r\n border-width: 0 1px;\r\n z-index: 1;\r\n }\r\n\r\n .sg-task:hover::after {\r\n content: \"\";\r\n width: 4px;\r\n height: 50%;\r\n top: 25%;\r\n position: absolute;\r\n cursor: ew-resize;\r\n border-style: solid;\r\n border-color: rgba(255, 255, 255, 0.5);\r\n\r\n margin-right: 3px;\r\n right: 0;\r\n border-width: 0 1px;\r\n z-index: 1;\r\n } */\r\n\r\n .sg-task.selected {\r\n outline: 2px solid rgba(3, 169, 244, 0.5);\r\n /* outline-offset: 3px; */\r\n z-index: 1;\r\n }\r\n\r\n .sg-task-reflected {\r\n opacity: 0.5;\r\n }\r\n\r\n .sg-task-background {\r\n background: rgba(0, 0, 0, 0.2);\r\n }\r\n\r\n :global(.sg-task) {\r\n color: white;\r\n background: rgb(116, 191, 255);\r\n }\r\n\r\n :global(.sg-task:hover) {\r\n background: rgb(98, 161, 216);\r\n }\r\n\r\n :global(.sg-task.selected) {\r\n background: rgb(69, 112, 150);\r\n }\r\n\r\n .lock-icon {\r\n height: 20px;\r\n }\r\n</style>\r\n\r\n<div\r\n data-task-id=\"{model.id}\" \r\n on:dblclick={() => {api.tasks.raise.dblclicked(model)}} \r\n use:drag\r\n use:taskElement={model}\r\n class=\"sg-task {model.classes}\"\r\n id=\"task{model.id}\"\r\n style=\"width:{_position.width}px; height:{height}px; transform: translate({_position.x}px, {(8 + 40 * taskObject.rowIndex)}px);\"\r\n class:moving={_dragging || _resizing}\r\n class:selected={_dragging || selected}\r\n class:animating\r\n class:sg-task-reflected={reflected}>\r\n {#if model.amountDone}\r\n <div class=\"sg-task-background\" style=\"width:{model.amountDone}%\" />\r\n {/if}\r\n <div class=\"sg-task-content\">\r\n {#if !model.enableDragging}\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"black\" class=\"w-6 h-6 lock-icon\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z\" />\r\n </svg>\r\n {/if}\r\n {#if model.html}\r\n {@html model.html}\r\n {:else if taskContent}\r\n {@html taskContent(model)}\r\n {:else}{model.label}{/if}\r\n <!-- <span class=\"debug\">x:{_position.x} y:{_position.y}, x:{left} y:{top}</span> -->\r\n {#if model.showButton}\r\n <span class=\"sg-task-button {model.buttonClasses}\" on:click={onclick}>\r\n {@html model.buttonHtml}\r\n </span>\r\n {/if}\r\n </div>\r\n <!-- <pre>{taskObject.rowIndex} {model.id}</pre> -->\r\n {#if model.labelBottom}\r\n <label class=\"sg-label-bottom\">{model.labelBottom}</label>\r\n {/if}\r\n</div>\r\n","<script lang=\"ts\">\r\n import type { SvelteRow } from 'src/core/row';\r\n import { getContext } from 'svelte';\r\n export let row: SvelteRow;\r\n const { rowHeight } = getContext('options');\r\n const { hoveredRow, selectedRow } = getContext('gantt');\r\n</script>\r\n\r\n<!-- <div class=\"sg-row {row.model.classes}\" title={row.model.tooltip} data-row-id=\"{row.model.id}\" class:sg-hover={$hoveredRow == row.model.id} class:sg-selected={$selectedRow == row.model.id} style=\"height:{$rowHeight}px\"> -->\r\n<div class=\"sg-row {row.model.classes}\" data-row-id=\"{row.model.id}\" class:sg-hover={$hoveredRow == row.model.id} class:sg-selected={$selectedRow == row.model.id} style=\"height:{$rowHeight}px\">\r\n <!-- <p>selected:{$selectedRow} row id:{row.model.id}</p> -->\r\n {#if row.model.contentHtml}\r\n {@html row.model.contentHtml}\r\n {/if}\r\n</div> \r\n<style>\r\n\r\n .sg-row {\r\n position: relative;\r\n width: 100%;\r\n box-sizing: border-box;\r\n border-top: 1px solid transparent;\r\n border-bottom: 1px solid transparent;\r\n }\r\n\r\n .sg-selected {\r\n border-color: black;\r\n }\r\n\r\n</style>","<script lang=\"ts\">\r\n export let model;\r\n export let left;\r\n export let width;\r\n export let resizing = false;\r\n\r\n const _position = {\r\n width,\r\n x: left\r\n }\r\n $: {\r\n _position.x = left, _position.width = width;\r\n };\r\n</script>\r\n<div class=\"sg-time-range {model.classes ? (Array.isArray(model.classes) ? model.classes.join(' ') : model.classes) : ''}\" class:moving=\"{resizing}\" style=\"width:{_position.width}px;left:{_position.x}px\">\r\n <div class=\"sg-time-range-label\">{model.label}</div>\r\n</div>\r\n<style>\r\n .sg-time-range {\r\n height: 100%;\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n\r\n background-image: linear-gradient(-45deg, rgba(0, 0, 0, 0) 46%, #e03218 49%, #e03218 51%, rgba(0, 0, 0, 0) 55%);\r\n background-size: 6px 6px !important;\r\n color: red;\r\n font-weight: 400;\r\n }\r\n\r\n .sg-time-range-label {\r\n margin-top: 10px;\r\n background: #fff;\r\n white-space: nowrap;\r\n padding: 4px;\r\n font-weight: 400;\r\n font-size: 10px;\r\n }\r\n</style>","<script lang=\"ts\">\r\n import { beforeUpdate, getContext } from 'svelte';\r\n\r\n import { Draggable } from '../core/drag';\r\n import { timeRangeStore } from '../core/store';\r\n\r\n const { rowContainer } = getContext('gantt');\r\n const { utils, columnService } = getContext('services');\r\n const { resizeHandleWidth } = getContext('options');\r\n const {\r\n from,\r\n to,\r\n width: ganttWidth,\r\n visibleWidth\r\n } = getContext('dimensions');\r\n\r\n const { api } = getContext('services');\r\n\r\n export let model;\r\n export let width;\r\n export let left;\r\n \r\n const _position = {\r\n width,\r\n x: left\r\n }\r\n $: {\r\n _position.x = left, _position.width = width;\r\n };\r\n\r\n function drag(node) {\r\n const ondrop = (event) => {\r\n const newFrom = utils.roundTo(columnService.getDateByPosition(event.x)); \r\n const newTo = utils.roundTo(columnService.getDateByPosition(event.x + event.width));\r\n const newLeft = columnService.getPositionByDate(newFrom);\r\n const newRight = columnService.getPositionByDate(newTo);\r\n \r\n Object.assign(model, {\r\n from: newFrom,\r\n to: newTo\r\n });\r\n\r\n update({\r\n left: newLeft,\r\n width: newRight - newLeft,\r\n model,\r\n resizing: false\r\n });\r\n\r\n window.removeEventListener('mousemove', onmousemove, false);\r\n };\r\n\r\n function update(state) {\r\n timeRangeStore.update(state);\r\n _position.x = state.left;\r\n _position.width = state.width;\r\n }\r\n\r\n const draggable = new Draggable(node, {\r\n onDown: (event) => {\r\n api.timeranges.raise.clicked({model});\r\n update({\r\n left: event.x,\r\n width: event.width,\r\n model,\r\n resizing: true\r\n });\r\n }, \r\n onResize: (event) => {\r\n api.timeranges.raise.resized({model, left:event.x, width:event.width});\r\n update({\r\n left: event.x,\r\n width: event.width,\r\n model,\r\n resizing: true\r\n });\r\n },\r\n dragAllowed: false,\r\n resizeAllowed: true,\r\n onDrop: ondrop, \r\n container: rowContainer, \r\n resizeHandleWidth,\r\n getX: () => _position.x,\r\n getY: () => 0,\r\n getWidth: () => _position.width\r\n });\r\n\r\n return { destroy: () => draggable.destroy() };\r\n }\r\n\r\n function setClass(node){\r\n if(!model.classes) return;\r\n node.classList.add(model.classes);\r\n }\r\n</script>\r\n\r\n<div class=\"sg-time-range-control\" style=\"width:{_position.width}px;left:{_position.x}px\" use:setClass>\r\n <div class=\"sg-time-range-handle-left\" use:drag></div>\r\n <div class=\"sg-time-range-handle-right\" use:drag></div>\r\n</div>\r\n<style>\r\n .sg-time-range-control {\r\n position: absolute;\r\n }\r\n\r\n .sg-time-range-handle-left {\r\n position: absolute;\r\n left: 0;\r\n }\r\n\r\n .sg-time-range-handle-right {\r\n position: absolute;\r\n right: 0;\r\n }\r\n\r\n .sg-time-range-handle-left::before, .sg-time-range-handle-right::before {\r\n position: absolute;\r\n content: '';\r\n bottom: 4px;\r\n border-radius: 6px 6px 6px 0;\r\n border: 2px solid #b0b0b7;\r\n width: 9px;\r\n height: 9px;\r\n transform: translateX(-50%) rotate(-45deg);\r\n background-color: #fff;\r\n\r\n border-color: #e03218;\r\n cursor: ew-resize;\r\n }\r\n</style>","<script lang=\"ts\">\r\n import { onMount } from 'svelte';\r\n export let left;\r\n export let width;\r\n export let backgroundColor = undefined;\r\n\r\n\r\n\r\n\r\n function stylesWithBackgroundColor() {\r\n if (backgroundColor) {\r\n return `background-color:${backgroundColor};border-right: #fff 1px solid;`\r\n } else {\r\n return ''\r\n }\r\n }\r\n</script>\r\n\r\n<div class=\"column\" style=\"left:{left}px;width:{width}px;{stylesWithBackgroundColor()}\"></div>\r\n<style>\r\n .column {\r\n position: absolute;\r\n height: 100%;\r\n box-sizing: border-box;\r\n }\r\n \r\n .column {\r\n border-right: #efefef 1px solid;\r\n }\r\n</style>","export class MomentSvelteGanttDateAdapter {\r\n constructor(moment) {\r\n this.moment = moment;\r\n }\r\n format(date, format) {\r\n return this.moment(date).format(format);\r\n }\r\n}\r\nexport class NoopSvelteGanttDateAdapter {\r\n format(date, format) {\r\n const d = new Date(date);\r\n switch (format) {\r\n case 'H':\r\n return d.getHours() + '';\r\n case 'HH':\r\n return pad(d.getHours());\r\n case 'H:mm':\r\n return `${d.getHours()}:${pad(d.getMinutes())}`;\r\n case 'hh:mm':\r\n return `${pad(d.getHours())}:${pad(d.getMinutes())}`;\r\n case 'hh:mm:ss':\r\n return `${d.getHours()}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;\r\n case 'dd/MM/yyyy':\r\n return `${d.getDate()}/${d.getMonth() + 1}/${d.getFullYear()}`;\r\n case 'dd/MM/yyyy hh:mm':\r\n return `${d.getDate()}/${d.getMonth() + 1}/${d.getFullYear()} ${d.getHours()}:${d.getMinutes()}`;\r\n case 'dd/MM/yyyy hh:mm:ss':\r\n return `${d.getDate()}/${d.getMonth() + 1}/${d.getFullYear()} ${d.getHours()}:${d.getMinutes()}:${d.getSeconds()}`;\r\n // VPY More formats supported 10/12/2021\r\n case 'YYYY':\r\n return `${d.getFullYear()}`;\r\n case 'Q':\r\n return `${Math.floor(d.getMonth() / 3 + 1)}`;\r\n case '[Q]Q':\r\n return `Q${Math.floor(d.getMonth() / 3 + 1)}`;\r\n case 'YYYY[Q]Q':\r\n return `${d.getFullYear()}Q${Math.floor(d.getMonth() / 3 + 1)}`;\r\n case 'MM':\r\n // var month = d.toLocaleString('default', { month: 'long' });\r\n var month = String(d.getMonth() + 1);\r\n if (month.length == 1)\r\n month = `0${month}`;\r\n return `${month}`;\r\n case 'MMMM':\r\n var month = d.toLocaleString('default', { month: 'long' });\r\n return `${month.charAt(0).toUpperCase()}${month.substring(1)}`;\r\n case 'MMMM - YYYY':\r\n var month = d.toLocaleString('default', { month: 'long' });\r\n return `${month.charAt(0).toUpperCase()}${month.substring(1)}-${d.getFullYear()}`;\r\n case 'MMMM YYYY':\r\n var month = d.toLocaleString('default', { month: 'long' });\r\n return `${month.charAt(0).toUpperCase()}${month.substring(1)} ${d.getFullYear()}`;\r\n case 'MMM':\r\n var month = d.toLocaleString('default', { month: 'short' });\r\n return `${month.charAt(0).toUpperCase()}${month.substring(1)}`;\r\n case 'MMM - YYYY':\r\n var month = d.toLocaleString('default', { month: 'short' });\r\n return `${month.charAt(0).toUpperCase()}${month.substring(1)} - ${d.getFullYear()}`;\r\n case 'MMM YYYY':\r\n var month = d.toLocaleString('default', { month: 'short' });\r\n return `${month.charAt(0).toUpperCase()}${month.substring(1)} ${d.getFullYear()}`;\r\n case 'W':\r\n return `${getWeekNumber(d)}`;\r\n case 'WW':\r\n const weeknumber = getWeekNumber(d);\r\n return `${weeknumber.toString().length == 1 ? \"0\" : ''}${weeknumber}`;\r\n default:\r\n console.warn(`Date Format \"${format}\" is not supported, use another date adapter.`);\r\n return `${d.getDate()}/${d.getMonth() + 1}/${d.getFullYear()}`;\r\n }\r\n }\r\n}\r\nfunction pad(value) {\r\n let result = value.toString();\r\n for (let i = result.length; i < 2; i++) {\r\n result = '0' + result;\r\n }\r\n return result;\r\n}\r\nexport function startOf(date, unit) {\r\n let d = new Date(date);\r\n let y = d.getFullYear();\r\n let m = d.getMonth();\r\n let dt = d.getDate();\r\n switch (unit) {\r\n case 'y':\r\n case 'year':\r\n return startOfDate(y, 0, 1);\r\n case 'month':\r\n return startOfDate(y, m, 1);\r\n case 'week':\r\n return startOfDate(y, m, dt, true);\r\n case 'd':\r\n case 'day':\r\n return startOfDate(y, m, dt);\r\n case 'h':\r\n case 'hour':\r\n d.setMinutes(0, 0, 0);\r\n return d.valueOf();\r\n case 'm':\r\n case 'minute':\r\n case 's':\r\n case 'second':\r\n let unitMs = getDuration(unit);\r\n const value = Math.floor(date / unitMs) * unitMs;\r\n return value;\r\n default:\r\n throw new Error(`Unknown unit: ${unit}`);\r\n }\r\n}\r\nfunction startOfDate(y, m, d, week = false) {\r\n if (y < 100 && y >= 0) {\r\n return new Date(y + 400, m, d).valueOf() - 31536000000;\r\n }\r\n else if (week) {\r\n return getFirstDayOfWeek(new Date(y, m, d).valueOf()).valueOf();\r\n }\r\n else {\r\n return new Date(y, m, d).valueOf();\r\n }\r\n}\r\nfunction getWeekNumber(d) {\r\n // Copy date so don't modify original\r\n d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\r\n // Set to nearest Thursday: current date + 4 - current day number\r\n // Make Sunday's day number 7\r\n d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));\r\n // Get first day of year\r\n const yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));\r\n // Calculate full weeks to nearest Thursday\r\n const weekNo = Math.ceil((((d.valueOf() - yearStart.valueOf()) / 86400000) + 1) / 7);\r\n // Return array of year and week number\r\n return weekNo;\r\n}\r\nfunction getFirstDayOfWeek(d) {\r\n // 👇️ clone date object, so we don't mutate it\r\n const date = new Date(d);\r\n const day = date.getDay(); // 👉️ get day of week\r\n // 👇️ day of month - day of week (-6 if Sunday), otherwise +1\r\n const diff = date.getDate() - day + (day === 0 ? -6 : 1);\r\n return new Date(date.setDate(diff));\r\n}\r\nexport function getDuration(unit, offset = 1) {\r\n switch (unit) {\r\n case 'y':\r\n case 'year':\r\n return offset * 31536000000; // Incorrect since there is years with 366 days \r\n // 2 cases 31622400000 (366) - 31536000000 (365)\r\n case 'month':\r\n return offset * 30 * 24 * 60 * 60 * 1000; // incorrect since months are of different durations\r\n // 4 cases : 28 - 29 - 30 - 31\r\n case 'week':\r\n return offset * 7 * 24 * 60 * 60 * 1000;\r\n case 'd':\r\n case 'day':\r\n return offset * 24 * 60 * 60 * 1000;\r\n case 'h':\r\n case 'hour':\r\n return offset * 60 * 60 * 1000;\r\n case 'm':\r\n case 'minute':\r\n return offset * 60 * 1000;\r\n case 's':\r\n case 'second':\r\n return offset * 1000;\r\n default:\r\n throw new Error(`Unknown unit: ${unit}`);\r\n }\r\n}\r\n// function startOf(date, unit) {\r\n// let unitMs = getDuration(unit);\r\n// const value = Math.floor(date / unitMs) * unitMs;\r\n// return value;\r\n// }\r\n// function getDuration(unit, offset = 1) {\r\n// switch (unit) {\r\n// case 'y':\r\n// case 'year':\r\n// return offset * 31536000000;\r\n// case 'month':\r\n// return offset * 30 * 24 * 60 * 60 * 1000;\r\n// case 'd':\r\n// case 'day':\r\n// return offset * 24 * 60 * 60 * 1000 - 60 * 60 * 1000;\r\n// case 'h':\r\n// case 'hour':\r\n// return offset * 60 * 60 * 1000;\r\n// case 'm':\r\n// case 'minute':\r\n// return offset * 60 * 1000;\r\n// case 's':\r\n// case 'second':\r\n// return offset * 1000;\r\n// default:\r\n// throw new Error(`Unknown unit: ${unit}`);\r\n// }\r\n// }\r\n//# sourceMappingURL=date.js.map","<script lang=\"ts\">\r\n import { createEventDispatcher, getContext } from 'svelte';\r\n\r\n const dispatch = createEventDispatcher();\r\n\r\n import type { SvelteGanttDateAdapter } from '../utils/date';\r\n import { startOf, getDuration } from '../utils/date';\r\n\r\n const { from, to, width } = getContext('dimensions');\r\n const { dateAdapter }: { dateAdapter: SvelteGanttDateAdapter } = getContext('options');\r\n\r\n export let header;\r\n export let baseWidth;\r\n export let baseDuration;\r\n\r\n export let columnWidth;\r\n $: {\r\n header.duration = getDuration(header.unit, header.offset);\r\n const duration = header.duration;\r\n const ratio = duration / baseDuration;\r\n columnWidth = baseWidth * ratio;\r\n }\r\n\r\n export let columnCount;\r\n $: {\r\n columnCount = Math.ceil($width / columnWidth);\r\n if(!isFinite(columnCount)){\r\n console.error('columnCount is not finite');\r\n columnCount = 0;\r\n }\r\n }\r\n\r\n let _headers = [];\r\n $: {\r\n const headers = [];\r\n let headerTime = startOf($from, header.unit);\r\n \r\n // /!\\ Temporary : Corrects labels of headers when unit == month\r\n if(header.unit == 'month' || header.unit == 'year'){\r\n defineCorrections(header.unit, headerTime, columnCount, header?.offset || 1)\r\n .then((res) => {\r\n let array_corrections = res;\r\n for(let i = 0; i < columnCount; i++){\r\n headers.push({\r\n width: Math.min(columnWidth, $width), \r\n label: dateAdapter.format(headerTime, header.format),\r\n from: headerTime,\r\n to: headerTime + header.duration,\r\n unit: header.unit\r\n });\r\n const correction_temp = (24 * 60 * 60 * 1000 * array_corrections[i]); \r\n headerTime += header.duration + correction_temp\r\n }\r\n _headers = headers;\r\n })\r\n }else{\r\n for(let i = 0; i < columnCount; i++){\r\n headers.push({\r\n width: Math.min(columnWidth, $width), \r\n label: dateAdapter.format(headerTime, header.format),\r\n from: headerTime,\r\n to: headerTime + header.duration,\r\n unit: header.unit\r\n });\r\n headerTime += header.duration; \r\n }\r\n _headers = headers;\r\n }\r\n }\r\n\r\n\r\n function defineCorrections(unit, headerTime, columnCount, offset=1){\r\n let dtemp = new Date(headerTime);\r\n let array_return = [];\r\n\r\n if(unit == 'month'){\r\n let array_31 = [0,2,4,6,7,9,11];\r\n for(let i=0; i<columnCount; i++){\r\n let correction_totale = 0;\r\n for(let j=0; j<offset; j++){\r\n let correction = 0;\r\n const month = dtemp.getMonth();\r\n if(month == 1){\r\n const isLeap = year => new Date(year, 1, 29).getDate() === 29;\r\n correction = (isLeap(dtemp.getFullYear()) ? -1 : -2);\r\n }else if(array_31.includes(month)){\r\n correction = 1\r\n if(month == 9){\r\n correction += 1/24;\r\n }else if (month == 2){\r\n correction -= 1/24;\r\n }\r\n }\r\n\r\n correction_totale += correction;\r\n dtemp = new Date(dtemp.setMonth(dtemp.getMonth()+header.offset));\r\n }\r\n\r\n array_return[i] = correction_totale;\r\n\r\n }\r\n }else if(unit == 'year'){\r\n for(let i=0; i<columnCount; i++){\r\n let correction = 0;\r\n if(dtemp.getFullYear()%4 == 0) correction = 1;\r\n array_return[i] = correction;\r\n dtemp = new Date(dtemp.setFullYear(dtemp.getFullYear()+header.offset));\r\n }\r\n }\r\n\r\n const promiseTemp = new Promise(resolve => {\r\n resolve(array_return)\r\n });\r\n return promiseTemp;\r\n\r\n }\r\n</script>\r\n<!-- on:click=\"{() => dispatch('dateSelected', { from: _header.from, to: _header.to, unit: _header.unit })}\" -->\r\n<div class=\"column-header-row\">\r\n {#each _headers as _header, i}\r\n {#if _header.unit === 'hour' && i <= 167}\r\n <div class=\"column-header-cell\" class:sticky={header.sticky} class:border-left={i === 0} style=\"width:{_header.width}px\">\r\n <div class=\"column-header-cell-label\">{_header.label || 'N/A'}</div>\r\n </div>\r\n {:else if _header.unit === 'day' && i <= 6}\r\n <div class=\"column-header-cell day\" class:sticky={header.sticky} style=\"width:{_header.width}px\">\r\n <div class=\"column-header-cell-label\">{_header.label || 'N/A'}</div>\r\n </div>\r\n {/if}\r\n {/each}\r\n</div>\r\n<style>\r\n .column-header-row {\r\n box-sizing: border-box;\r\n white-space: nowrap;\r\n height: 32px;\r\n }\r\n\r\n .column-header-cell {\r\n display: inline-block;\r\n height: 100%;\r\n box-sizing: border-box;\r\n text-overflow: clip;\r\n /* vertical-align: top; */\r\n text-align: center;\r\n\r\n display: inline-flex;\r\n justify-content: center;\r\n align-items: center;\r\n font-size: 1em; \r\n font-size: 14px;\r\n font-weight: 300;\r\n /* transition: background 0.2s; */\r\n\r\n /* cursor: pointer; */\r\n user-select: none;\r\n\r\n border-right: #777777 1px solid;\r\n border-bottom: #777777 1px solid;\r\n }\r\n\r\n .border-left {\r\n border-left: 1px solid #777777;\r\n }\r\n\r\n /* .column-header-cell:hover {\r\n background: #f9f9f9;\r\n } */\r\n\r\n .column-header-cell.sticky > .column-header-cell-label {\r\n position: sticky;\r\n left: 1rem;\r\n }\r\n</style>","export class GanttUtils {\r\n constructor() {\r\n }\r\n /**\r\n * Returns position of date on a line if from and to represent length of width\r\n * @param {*} date\r\n */\r\n getPositionByDate(date) {\r\n return getPositionByDate(date, this.from, this.from + this.totalColumnDuration, this.totalColumnWidth);\r\n }\r\n getDateByPosition(x) {\r\n return getDateByPosition(x, this.from, this.from + this.totalColumnDuration, this.totalColumnWidth);\r\n }\r\n roundTo(date) {\r\n let value = Math.round(date / this.magnetDuration) * this.magnetDuration;\r\n return value;\r\n }\r\n}\r\nexport function getPositionByDate(date, from, to, width) {\r\n if (!date) {\r\n return undefined;\r\n }\r\n let durationTo = date - from;\r\n let durationToEnd = to - from;\r\n return durationTo / durationToEnd * width;\r\n}\r\nexport function getDateByPosition(x, from, to, width) {\r\n let durationTo = (x / width) * (to - from);\r\n let dateAtPosition = from + durationTo;\r\n return dateAtPosition;\r\n}\r\n// Returns the object on the left and right in an array using the given cmp function.\r\n// The compare function defined which property of the value to compare (e.g.: c => c.left)\r\nexport function getIndicesOnly(input, value, comparer, strict) {\r\n let lo = -1;\r\n let hi = input.length;\r\n while (hi - lo > 1) {\r\n let mid = Math.floor((lo + hi) / 2);\r\n if (strict ? comparer(input[mid]) < value : comparer(input[mid]) <= value) {\r\n lo = mid;\r\n }\r\n else {\r\n hi = mid;\r\n }\r\n }\r\n if (!strict && input[lo] !== undefined && comparer(input[lo]) === value) {\r\n hi = lo;\r\n }\r\n return [lo, hi];\r\n}\r\nexport function get(input, value, comparer, strict) {\r\n let res = getIndicesOnly(input, value, comparer, strict);\r\n return [input[res[0]], input[res[1]]];\r\n}\r\n//# sourceMappingURL=utils.js.map","<script lang=\"ts\">\r\n import { getContext } from 'svelte';\r\n import { getPositionByDate } from '../utils/utils';\r\n import { getDuration } from '../utils/date';\r\n\r\n import ColumnHeaderRow from './ColumnHeaderRow.svelte';\r\n \r\n /**\r\n * Container component for header rows \r\n */\r\n export let headers;\r\n export let columnUnit;\r\n export let columnOffset;\r\n\r\n const { from, to, width } = getContext('dimensions');\r\n\r\n let minHeader;\r\n $: {\r\n let result = null; \r\n let minDuration = null;\r\n\r\n [...headers, {unit: columnUnit, offset: columnOffset}].forEach(header => {\r\n \r\n const duration = header.duration = header.duration || getDuration(header.unit, header.offset);\r\n if(duration < minDuration || minDuration === null) {\r\n minDuration = duration;\r\n result = header;\r\n }\r\n });\r\n\r\n minHeader = result;\r\n }\r\n\r\n let baseHeaderWidth;\r\n $: {\r\n baseHeaderWidth = getPositionByDate($from + minHeader.duration, $from, $to, $width) | 0;\r\n if(baseHeaderWidth <= 0)\r\n console.error('baseHeaderWidth is invalid, columns or headers might be too short for the current view.');\r\n }\r\n\r\n let baseHeaderDuration;\r\n $: {\r\n baseHeaderDuration = minHeader.duration;\r\n }\r\n</script>\r\n\r\n<!-- {#each headers as header} -->\r\n<ColumnHeaderRow header={headers[0]} baseWidth={baseHeaderWidth} baseDuration={baseHeaderDuration} on:dateSelected/>\r\n<ColumnHeaderRow header={headers[1]} baseWidth={baseHeaderWidth} baseDuration={baseHeaderDuration} on:dateSelected/>\r\n<!-- {/each} -->\r\n\r\n<style>\r\n \r\n</style>\r\n","<script lang=\"ts\">\r\n import { onMount } from 'svelte';\r\n\r\n import Column from './Column.svelte';\r\n /**\r\n * Container component for columns rendered as gantt body background\r\n */\r\n export let columns = [];\r\n\r\n export let columnStrokeWidth = 1;\r\n export let columnStrokeColor = '#efefef';\r\n let componentHeight;\r\n\r\n onMount(() => {\r\n const el = document.getElementById('container');\r\n \r\n componentHeight = el.clientHeight;\r\n })\r\n\r\n function lineAt(ctx, x) {\r\n ctx.beginPath();\r\n ctx.moveTo(x, 0);\r\n ctx.lineTo(x, 20);\r\n ctx.stroke();\r\n }\r\n\r\n function createBackground(columns) {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = (columns.length - 1) * columns[0].width;\r\n canvas.height = 20;\r\n\r\n const ctx = canvas.getContext('2d');\r\n ctx.shadowColor = \"rgba(128,128,128,0.5)\";\r\n ctx.shadowOffsetX = 0;\r\n ctx.shadowOffsetY = 0;\r\n ctx.shadowBlur = 0.5;\r\n ctx.lineWidth = columnStrokeWidth;\r\n ctx.lineCap = \"square\";\r\n ctx.strokeStyle = columnStrokeColor;\r\n // ctx.fillStyle = '#a9a9a9';\r\n ctx.translate(0.5, 0.5);\r\n\r\n columns.forEach((column, index) => {\r\n lineAt(ctx, column.left);\r\n });\r\n\r\n const dataURL = canvas.toDataURL();\r\n return `url(\"${dataURL}\")`;\r\n }\r\n\r\n function alternateColumnColorCondition(index) {\r\n if ((index / 8) % 1 === 0 || \r\n ((index - 1) / 8) % 1 === 0 ||\r\n ((index - 2) / 8) % 1 === 0 ||\r\n ((index - 3) / 8) % 1 === 0) {\r\n return true\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n let backgroundImage;\r\n $: {\r\n backgroundImage = createBackground(columns.slice(0,5));\r\n }\r\n</script>\r\n<!-- style=\"background-image:{backgroundImage};\" -->\r\n<div id=\"container\" class=\"sg-columns\">\r\n\t{#each columns as column, i}\r\n {#if alternateColumnColorCondition(i)}\r\n <Column left={column.left} width={column.width} />\r\n {:else}\r\n <Column left={column.left} width={column.width} backgroundColor={'#efefef'} />\r\n {/if}\r\n\t{/each}\r\n</div>\r\n<style>\r\n .sg-columns {\r\n position: absolute;\r\n height: 100%;\r\n width: 100%;\r\n overflow: hidden;\r\n background-repeat: repeat-x, repeat-x;\r\n background-position: left, right;\r\n background-blend-mode: multiply;\r\n }\r\n</style>","import { writable } from 'svelte/store';\r\nexport class SelectionManager {\r\n constructor() {\r\n this.selection = writable([]);\r\n }\r\n selectSingle(item) {\r\n this.selection.set([item]);\r\n }\r\n toggleSelection(item) {\r\n this.selection.update(items => {\r\n const index = items.indexOf(item);\r\n if (index !== -1) {\r\n items.splice(index, 1);\r\n }\r\n else {\r\n items.push(item);\r\n }\r\n return items;\r\n });\r\n }\r\n clearSelection() {\r\n this.selection.set([]);\r\n }\r\n}\r\n//# sourceMappingURL=selectionManager.js.map","export class GanttApi {\r\n constructor() {\r\n this.listeners = [];\r\n this.listenersMap = {};\r\n }\r\n registerEvent(featureName, eventName) {\r\n if (!this[featureName]) {\r\n this[featureName] = {};\r\n }\r\n const feature = this[featureName];\r\n if (!feature.on) {\r\n feature.on = {};\r\n feature.raise = {};\r\n }\r\n let eventId = 'on:' + featureName + ':' + eventName;\r\n feature.raise[eventName] = (...params) => {\r\n //todo add svelte? event listeners, looping isnt effective unless rarely used\r\n this.listeners.forEach(listener => {\r\n if (listener.eventId === eventId) {\r\n listener.handler(params);\r\n }\r\n });\r\n };\r\n // Creating on event method featureName.oneventName\r\n feature.on[eventName] = (handler) => {\r\n // track our listener so we can turn off and on\r\n let listener = {\r\n handler: handler,\r\n eventId: eventId\r\n };\r\n this.listenersMap[eventId] = listener;\r\n this.listeners.push(listener);\r\n const removeListener = () => {\r\n const index = this.listeners.indexOf(listener);\r\n this.listeners.splice(index, 1);\r\n };\r\n return removeListener;\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=api.js.map","export class TaskFactory {\r\n constructor(columnService) {\r\n this.columnService = columnService;\r\n }\r\n createTask(model) {\r\n // id of task, every task needs to have a unique one\r\n //task.id = task.id || undefined;\r\n // completion %, indicated on task\r\n model.amountDone = model.amountDone || 0;\r\n // css classes\r\n model.classes = model.classes || '';\r\n // date task starts on\r\n model.from = model.from || null;\r\n // date task ends on\r\n model.to = model.to || null;\r\n // label of task\r\n model.label = model.label || undefined;\r\n // html content of task, will override label\r\n model.html = model.html || undefined;\r\n // show button bar\r\n model.showButton = model.showButton || false;\r\n // button classes, useful for fontawesome icons\r\n model.buttonClasses = model.buttonClasses || '';\r\n // html content of button\r\n model.buttonHtml = model.buttonHtml || '';\r\n // enable dragging of task\r\n model.enableDragging = model.enableDragging === undefined ? true : model.enableDragging;\r\n const left = this.columnService.getPositionByDate(model.from) | 0;\r\n const right = this.columnService.getPositionByDate(model.to) | 0;\r\n return {\r\n model,\r\n left: left,\r\n width: right - left,\r\n height: this.getHeight(model),\r\n top: this.getPosY(model),\r\n reflections: []\r\n };\r\n }\r\n createTasks(tasks) {\r\n return tasks.map(task => this.createTask(task));\r\n }\r\n row(resourceId) {\r\n return this.rowEntities[resourceId];\r\n }\r\n getHeight(model) {\r\n return this.row(model.resourceId).height - 2 * this.rowPadding;\r\n }\r\n getPosY(model) {\r\n return this.row(model.resourceId).y + this.rowPadding;\r\n }\r\n}\r\nfunction overlap(one, other) {\r\n return !(one.left + one.width <= other.left || one.left >= other.left + other.width);\r\n}\r\nexport function reflectTask(task, row, options) {\r\n const reflectedId = `reflected-task-${task.model.id}-${row.model.id}`;\r\n const model = Object.assign(Object.assign({}, task.model), { resourceId: row.model.id, id: reflectedId, enableDragging: false });\r\n return Object.assign(Object.assign({}, task), { model, top: row.y + options.rowPadding, reflected: true, reflectedOnParent: false, reflectedOnChild: true, originalId: task.model.id });\r\n}\r\n//# sourceMappingURL=task.js.map","export class RowFactory {\r\n constructor() {\r\n }\r\n createRow(row, y) {\r\n // defaults\r\n // id of task, every task needs to have a unique one\r\n //row.id = row.id || undefined;\r\n // css classes\r\n row.classes = row.classes || '';\r\n // html content of row\r\n row.contentHtml = row.contentHtml || undefined;\r\n // enable dragging of tasks to and from this row \r\n row.enableDragging = row.enableDragging === undefined ? true : row.enableDragging;\r\n // height of row element\r\n const height = row.height || this.rowHeight;\r\n return {\r\n model: row,\r\n y,\r\n height,\r\n expanded: true\r\n };\r\n }\r\n createRows(rows) {\r\n const ctx = { y: 0, result: [] };\r\n this.createChildRows(rows, ctx);\r\n return ctx.result;\r\n }\r\n createChildRows(rowModels, ctx, parent = null, level = 0, parents = []) {\r\n const rowsAtLevel = [];\r\n const allRows = [];\r\n if (parent) {\r\n parents = [...parents, parent];\r\n }\r\n rowModels.forEach(rowModel => {\r\n const row = this.createRow(rowModel, ctx.y);\r\n ctx.result.push(row);\r\n rowsAtLevel.push(row);\r\n allRows.push(row);\r\n row.childLevel = level;\r\n row.parent = parent;\r\n row.allParents = parents;\r\n ctx.y += row.height;\r\n if (rowModel.children) {\r\n const nextLevel = this.createChildRows(rowModel.children, ctx, row, level + 1, parents);\r\n row.children = nextLevel.rows;\r\n row.allChildren = nextLevel.allRows;\r\n allRows.push(...nextLevel.allRows);\r\n }\r\n });\r\n return {\r\n rows: rowsAtLevel,\r\n allRows\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=row.js.map","export class TimeRangeFactory {\r\n constructor(columnService) {\r\n this.columnService = columnService;\r\n }\r\n create(model) {\r\n // enable dragging\r\n model.enableResizing = model.enableResizing === undefined ? true : model.enableResizing;\r\n const left = this.columnService.getPositionByDate(model.from);\r\n const right = this.columnService.getPositionByDate(model.to);\r\n return {\r\n model,\r\n left: left,\r\n width: right - left,\r\n resizing: false\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=timeRange.js.map","import { get } from '../utils/utils';\r\nexport function findByPosition(columns, x) {\r\n const result = get(columns, x, c => c.left);\r\n return result;\r\n}\r\nexport function findByDate(columns, x) {\r\n const result = get(columns, x, c => c.from);\r\n return result;\r\n}\r\n//# sourceMappingURL=column.js.map","const callbacks = {};\r\nexport function onDelegatedEvent(type, attr, callback) {\r\n if (!callbacks[type])\r\n callbacks[type] = {};\r\n callbacks[type][attr] = callback;\r\n}\r\nexport function offDelegatedEvent(type, attr) {\r\n delete callbacks[type][attr];\r\n}\r\nfunction matches(cbs, element) {\r\n let data;\r\n for (let attr in cbs) {\r\n if (data = element.getAttribute(attr)) {\r\n return { attr, data };\r\n }\r\n }\r\n}\r\nexport function onEvent(e) {\r\n let { type, target } = e;\r\n const cbs = callbacks[type];\r\n if (!cbs)\r\n return;\r\n let match;\r\n let element = target;\r\n while (element && element != e.currentTarget) {\r\n if ((match = matches(cbs, element))) {\r\n break;\r\n }\r\n element = element.parentElement;\r\n }\r\n if (match && cbs[match.attr]) {\r\n cbs[match.attr](e, match.data, element);\r\n }\r\n else if (cbs['empty']) {\r\n cbs['empty'](e, null, element);\r\n }\r\n}\r\n//# sourceMappingURL=events.js.map","<script lang=\"ts\">\r\n import { onMount, setContext, tick, onDestroy } from 'svelte';\r\n import { writable, derived } from 'svelte/store';\r\n\r\n let ganttElement: HTMLElement;\r\n let mainHeaderContainer;\r\n let mainContainer;\r\n let rowContainer;\r\n let scrollables = [];\r\n let mounted = false;\r\n\r\n import { rowStore, taskStore, timeRangeStore, allTasks, allRows, allTimeRanges, rowTaskCache } from './core/store';\r\n import { Task, Row, TimeRange, TimeRangeHeader, Milestone } from './entities';\r\n import { Columns, ColumnHeader } from './column';\r\n import { Resizer } from './ui';\r\n\r\n import { GanttUtils, getPositionByDate } from './utils/utils';\r\n import { getRelativePos, debounce, throttle } from './utils/domUtils';\r\n import { SelectionManager } from './utils/selectionManager';\r\n import { GanttApi } from './core/api';\r\n import { TaskFactory, reflectTask } from './core/task';\r\n import type { SvelteTask } from './core/task';\r\n import { RowFactory } from './core/row';\r\n import { TimeRangeFactory } from './core/timeRange';\r\n import { DragDropManager } from './core/drag';\r\n import { findByPosition, findByDate } from './core/column';\r\n import { onEvent, onDelegatedEvent, offDelegatedEvent } from './core/events';\r\n import { NoopSvelteGanttDateAdapter, getDuration } from './utils/date';\r\n import type { SvelteGanttDateAdapter } from './utils/date';\r\n\r\n function assertSet(values) {\r\n for (const name in values) {\r\n if (values[name] == null) {\r\n throw new Error(`\"${name}\" is not set`);\r\n }\r\n }\r\n }\r\n\r\n export let rows;\r\n export let tasks = [];\r\n export let timeRanges = [];\r\n assertSet({rows});\r\n $: if(mounted) initRows(rows);\r\n $: if(mounted) initTasks(tasks);\r\n $: if(mounted) initTimeRanges(timeRanges);\r\n\r\n export let rowPadding = 6;\r\n export let rowHeight = 52;\r\n const _rowHeight = writable(rowHeight);\r\n const _rowPadding = writable(rowPadding);\r\n $: $_rowHeight = rowHeight;\r\n $: $_rowPadding = rowPadding;\r\n\r\n function toDateNum(date: number | Date) {\r\n return date instanceof Date ? date.valueOf() : date;\r\n }\r\n\r\n export let from;\r\n export let to;\r\n assertSet({from, to});\r\n const _from = writable(toDateNum(from));\r\n const _to = writable(toDateNum(to));\r\n $: $_from = toDateNum(from);\r\n $: $_to = toDateNum(to);\r\n\r\n export let minWidth = 800;\r\n export let fitWidth = false;\r\n const _minWidth = writable(minWidth);\r\n const _fitWidth = writable(fitWidth);\r\n $: {\r\n $_minWidth = minWidth;\r\n $_fitWidth = fitWidth;\r\n } \r\n\r\n export let classes = [];\r\n export let headers = [{unit: 'day', format: 'MMMM Do'}, {unit: 'hour', format: 'H:mm'}];\r\n export let zoomLevels = [\r\n\t\t{\r\n\t\t\theaders: [\r\n\t\t\t\t{ unit: 'day', format: 'DD.MM.YYYY' },\r\n\t\t\t\t{ unit: 'hour', format: 'HH' }\r\n\t\t\t],\r\n\t\t\tminWidth: 800,\r\n\t\t\tfitWidth: true\r\n\t\t},\r\n\t\t{\r\n\t\t\theaders: [\r\n\t\t\t\t{ unit: 'hour', format: 'ddd D/M, H A' },\r\n\t\t\t\t{ unit: 'minute', format: 'mm', offset: 15 }\r\n\t\t\t],\r\n\t\t\tminWidth: 5000,\r\n\t\t\tfitWidth: false\r\n\t\t}\r\n\t];\r\n export let taskContent = null;\r\n export let tableWidth = 100;\r\n export let resizeHandleWidth = 10;\r\n export let onTaskButtonClick = null;\r\n \r\n export let dateAdapter: SvelteGanttDateAdapter = new NoopSvelteGanttDateAdapter();\r\n\r\n export let magnetUnit = 'minute';\r\n export let magnetOffset = 15;\r\n let magnetDuration;\r\n $: setMagnetDuration(magnetUnit, magnetOffset);\r\n setMagnetDuration(magnetUnit, magnetOffset);\r\n\r\n function setMagnetDuration(unit, offset) {\r\n if(unit && offset) {\r\n magnetDuration = getDuration(unit, offset);\r\n }\r\n }\r\n\r\n export let columnUnit = 'minute';\r\n export let columnOffset = 15;\r\n let columnDuration;\r\n $: setColumnDuration(columnUnit, columnOffset);\r\n setColumnDuration(columnUnit, columnOffset);\r\n\r\n function setColumnDuration(unit, offset) {\r\n if(unit && offset) {\r\n columnDuration = getDuration(unit, offset);\r\n }\r\n }\r\n\r\n // export until Svelte3 implements Svelte2's setup(component) hook\r\n export let ganttTableModules = [];\r\n export let ganttBodyModules = [];\r\n\r\n export let reflectOnParentRows = true;\r\n export let reflectOnChildRows = false;\r\n\r\n export let columnStrokeColor;\r\n export let columnStrokeWidth;\r\n\r\n export let taskElementHook = null;\r\n\r\n const visibleWidth = writable<number>(null);\r\n const visibleHeight = writable<number>(null);\r\n const headerHeight = writable<number>(null);\r\n const _width = derived([visibleWidth, _minWidth, _fitWidth], ([visible, min, stretch]) => {\r\n return stretch && visible > min ? visible : min;\r\n });\r\n \r\n export const columnService = {\r\n getColumnByDate(date: number) {\r\n const pair = findByDate(columns, date);\r\n return !pair[0] ? pair[1] : pair[0];\r\n },\r\n getColumnByPosition(x: number) {\r\n const pair = findByPosition(columns, x);\r\n return !pair[0] ? pair[1] : pair[0];\r\n },\r\n getPositionByDate (date: number) {\r\n if(!date) return null;\r\n const column = this.getColumnByDate(date);\r\n \r\n let durationTo = date - column.from;\r\n const position = durationTo / column.duration * column.width;\r\n\r\n //multiples - skip every nth col, use other duration\r\n return column.left + position;\r\n },\r\n getDateByPosition (x: number) {\r\n const column = this.getColumnByPosition(x);\r\n x = x - column.left;\r\n\r\n let positionDuration = column.duration / column.width * x;\r\n const date = column.from + positionDuration;\r\n\r\n return date;\r\n },\r\n /**\r\n * \r\n * @param {number} date - Date\r\n * @returns {number} rounded date passed as parameter\r\n */\r\n roundTo(date: number) {\r\n let value = Math.round(date / magnetDuration) * magnetDuration;\r\n return value;\r\n }\r\n }\r\n\r\n function add(a: number | Date, b: number | Date) {\r\n if(a instanceof Date) {\r\n a = a.valueOf();\r\n }\r\n if(b instanceof Date) {\r\n b = b.valueOf();\r\n }\r\n return a + b;\r\n }\r\n\r\n const columnWidth = writable(getPositionByDate($_from + columnDuration, $_from, $_to, $_width) | 0);\r\n $: $columnWidth = getPositionByDate($_from + columnDuration, $_from, $_to, $_width) | 0;\r\n let columnCount = Math.ceil($_width / $columnWidth);\r\n $: columnCount = Math.ceil($_width / $columnWidth);\r\n let columns = getColumns($_from, columnCount, columnDuration, $columnWidth);\r\n $: columns = getColumns($_from, columnCount, columnDuration, $columnWidth);\r\n\r\n function getColumns(from: number, count: number, dur: number, width: number) {\r\n\r\n if(!isFinite(count))\r\n throw new Error('column count is not a finite number');\r\n if(width <= 0)\r\n throw new Error('column width is not a positive number');\r\n\r\n let columns = [];\r\n let columnFrom = from;\r\n let left = 0;\r\n for (let i = 0; i < count; i++) {\r\n const from = columnFrom;\r\n const to = columnFrom + dur;\r\n const duration = to - from;\r\n\r\n columns.push({\r\n width: width,\r\n from,\r\n left,\r\n duration\r\n });\r\n left += width;\r\n columnFrom = to;\r\n }\r\n \r\n return columns;\r\n }\r\n\r\n const dimensionsChanged = derived([columnWidth, _from, _to], () => ({}));\r\n $: {\r\n if($dimensionsChanged) {\r\n refreshTasks();\r\n refreshTimeRanges();\r\n }\r\n }\r\n\r\n setContext('dimensions', {\r\n from: _from,\r\n to: _to,\r\n width: _width,\r\n visibleWidth,\r\n visibleHeight,\r\n headerHeight,\r\n dimensionsChanged\r\n });\r\n\r\n setContext('options', {\r\n dateAdapter,\r\n taskElementHook,\r\n taskContent,\r\n rowPadding: _rowPadding,\r\n rowHeight: _rowHeight,\r\n resizeHandleWidth: resizeHandleWidth,\r\n reflectOnParentRows,\r\n reflectOnChildRows,\r\n onTaskButtonClick\r\n });\r\n\r\n const hoveredRow = writable<number>(null);\r\n const selectedRow = writable<number>(null);\r\n\r\n const ganttContext = { \r\n scrollables, \r\n hoveredRow, \r\n selectedRow \r\n };\r\n setContext('gantt', ganttContext);\r\n\r\n let uniqueRows = $allRows.map((row, rowIndex) => {\r\n\r\n return ({...row, rowIndex})\r\n\r\n });\r\n\r\n\r\n\r\n onMount(() => {\r\n allRows.subscribe(allRowsData => {\r\n\r\n uniqueRows = $allRows.map((row, rowIndex) => {\r\n return ({...row, rowIndex})\r\n\r\n });\r\n\r\n });\r\n Object.assign(ganttContext, {\r\n rowContainer,\r\n mainContainer,\r\n mainHeaderContainer\r\n });\r\n\r\n api.registerEvent('tasks', 'move');\r\n api.registerEvent('tasks', 'select');\r\n api.registerEvent('tasks', 'switchRow');\r\n api.registerEvent('tasks', 'moveEnd');\r\n api.registerEvent('tasks', 'change');\r\n api.registerEvent('tasks', 'changed');\r\n api.registerEvent('tasks', 'dropped');\r\n api.registerEvent('gantt', 'viewChanged');\r\n api.registerEvent('gantt', 'dateSelected');\r\n api.registerEvent('tasks', 'dblclicked');\r\n api.registerEvent('timeranges', 'clicked');\r\n api.registerEvent('timeranges', 'resized');\r\n\r\n mounted = true;\r\n });\r\n\r\n onDelegatedEvent('click', 'data-task-id', (event, data, target) => {\r\n const taskId = +data;\r\n if (event.ctrlKey) {\r\n selectionManager.toggleSelection(taskId);\r\n } else {\r\n selectionManager.selectSingle(taskId);\r\n }\r\n // api['tasks'].raise.select($taskStore.entities[taskId]);\r\n });\r\n\r\n onDelegatedEvent('mouseover', 'data-row-id', (event, data, target) => {\r\n $hoveredRow = +data;\r\n });\r\n\r\n onDelegatedEvent('click', 'data-row-id', (event, data, target) => {\r\n unselectTasks();\r\n if($selectedRow == +data){\r\n $selectedRow = null;\r\n return\r\n }\r\n $selectedRow = +data;\r\n });\r\n\r\n onDelegatedEvent('mouseleave', 'empty', (event, data, target) => {\r\n $hoveredRow = null;\r\n });\r\n\r\n\r\n onDestroy(() => {\r\n offDelegatedEvent('click', 'data-task-id');\r\n offDelegatedEvent('click', 'data-row-id');\r\n });\r\n\r\n let __scrollTop = 0;\r\n let __scrollLeft = 0;\r\n function scrollable(node) {\r\n const onscroll = event => {\r\n const { scrollTop, scrollLeft } = node;\r\n\r\n scrollables.forEach(scrollable => {\r\n if (scrollable.orientation === 'horizontal') {\r\n scrollable.node.scrollLeft = scrollLeft;\r\n } else {\r\n scrollable.node.scrollTop = scrollTop;\r\n }\r\n });\r\n\r\n __scrollTop = scrollTop;\r\n __scrollLeft = scrollLeft;\r\n };\r\n\r\n node.addEventListener('scroll', onscroll);\r\n return {\r\n destroy() {\r\n node.removeEventListener('scroll', onscroll, false);\r\n }\r\n };\r\n }\r\n\r\n function horizontalScrollListener(node) {\r\n scrollables.push({ node, orientation: 'horizontal' });\r\n }\r\n\r\n function onResize(event) {\r\n tableWidth = event.detail.left;\r\n }\r\n\r\n let zoomLevel = 0;\r\n let zooming = false;\r\n async function onwheel(event: WheelEvent) {\r\n if (event.ctrlKey) {\r\n event.preventDefault();\r\n\r\n const prevZoomLevel = zoomLevel;\r\n if (event.deltaY > 0) {\r\n zoomLevel = Math.max(zoomLevel - 1, 0);\r\n } else {\r\n zoomLevel = Math.min(zoomLevel + 1, zoomLevels.length - 1);\r\n }\r\n\r\n if (prevZoomLevel != zoomLevel && zoomLevels[zoomLevel]) {\r\n const options = {\r\n columnUnit: columnUnit,\r\n columnOffset: columnOffset,\r\n minWidth: $_minWidth,\r\n ...zoomLevels[zoomLevel]\r\n };\r\n\r\n const scale = options.minWidth / $_width;\r\n const node = mainContainer;\r\n const mousepos = getRelativePos(node, event);\r\n const before = node.scrollLeft + mousepos.x;\r\n const after = before * scale;\r\n const scrollLeft = after - mousepos.x + node.clientWidth / 2;\r\n\r\n console.log('scrollLeft', scrollLeft);\r\n\r\n columnUnit = options.columnUnit;\r\n columnOffset = options.columnOffset;\r\n $_minWidth = options.minWidth;\r\n\r\n if(options.headers)\r\n headers = options.headers;\r\n\r\n if(options.fitWidth)\r\n $_fitWidth = options.fitWidth;\r\n\r\n api['gantt'].raise.viewChanged();\r\n zooming = true;\r\n await tick();\r\n node.scrollLeft = scrollLeft;\r\n zooming = false;\r\n }\r\n }\r\n }\r\n\r\n function onGanttScroll(event) {\r\n api['gantt'].raise.scroll(event)\r\n }\r\n\r\n function onDateSelected(event) {\r\n $_from = event.detail.from;\r\n $_to = event.detail.to;\r\n api['gantt'].raise.dateSelected({from:$_from, to:$_to})\r\n }\r\n\r\n function initRows(rowsData) {\r\n const rows = rowFactory.createRows(rowsData);\r\n rowStore.addAll(rows);\r\n }\r\n\r\n async function initTasks(taskData) {\r\n await tick();\r\n\r\n const tasks = [];\r\n const opts = { rowPadding: $_rowPadding };\r\n taskData.forEach(t => {\r\n const task = taskFactory.createTask(t);\r\n const row = $rowStore.entities[task.model.resourceId];\r\n task.reflections = [];\r\n\r\n if(reflectOnChildRows && row.allChildren) {\r\n row.allChildren.forEach(r => {\r\n const reflectedTask = reflectTask(task, r, opts);\r\n task.reflections.push(reflectedTask.model.id);\r\n tasks.push(reflectedTask);\r\n });\r\n }\r\n\r\n if(reflectOnParentRows && row.allParents.length > 0) {\r\n row.allParents.forEach(r => {\r\n const reflectedTask = reflectTask(task, r, opts);\r\n task.reflections.push(reflectedTask.model.id);\r\n tasks.push(reflectedTask);\r\n });\r\n }\r\n\r\n tasks.push(task);\r\n });\r\n taskStore.addAll(tasks);\r\n }\r\n\r\n function initTimeRanges(timeRangeData) {\r\n const timeRanges = timeRangeData.map(timeRange => {\r\n return timeRangeFactory.create(timeRange);\r\n });\r\n timeRangeStore.addAll(timeRanges);\r\n }\r\n \r\n function onModuleInit(module) {\r\n \r\n }\r\n\r\n async function tickWithoutCSSTransition() {\r\n disableTransition = false;\r\n await tick();\r\n ganttElement.offsetHeight; // force a reflow\r\n disableTransition = true;\r\n }\r\n\r\n export const api = new GanttApi();\r\n const selectionManager = new SelectionManager();\r\n\r\n export const taskFactory = new TaskFactory(columnService);\r\n $: {\r\n taskFactory.rowPadding = $_rowPadding;\r\n taskFactory.rowEntities = $rowStore.entities;\r\n }\r\n\r\n export const rowFactory = new RowFactory();\r\n $: rowFactory.rowHeight = rowHeight;\r\n\r\n export const dndManager = new DragDropManager(rowStore);\r\n export const timeRangeFactory = new TimeRangeFactory(columnService);\r\n\r\n export const utils = new GanttUtils();\r\n $: {\r\n utils.from = $_from;\r\n utils.to = $_to;\r\n utils.width = $_width;\r\n utils.magnetOffset = magnetOffset;\r\n utils.magnetUnit = magnetUnit;\r\n utils.magnetDuration = magnetDuration;\r\n\r\n utils.totalColumnDuration = columnCount * columnDuration;\r\n utils.totalColumnWidth = columnCount * $columnWidth;\r\n }\r\n\r\n setContext('services', {\r\n utils,\r\n api,\r\n dndManager,\r\n selectionManager,\r\n columnService\r\n });\r\n\r\n export function refreshTimeRanges() {\r\n timeRangeStore._update(({ids, entities}) => {\r\n ids.forEach(id => {\r\n const timeRange = entities[id];\r\n const newLeft = columnService.getPositionByDate(timeRange.model.from) | 0;\r\n const newRight = columnService.getPositionByDate(timeRange.model.to) | 0;\r\n\r\n timeRange.left = newLeft;\r\n timeRange.width = newRight - newLeft;\r\n });\r\n return { ids, entities };\r\n });\r\n }\r\n\r\n export function refreshTasks() {\r\n $allTasks.forEach(task => {\r\n const newLeft = columnService.getPositionByDate(task.model.from) | 0;\r\n const newRight = columnService.getPositionByDate(task.model.to) | 0;\r\n\r\n task.left = newLeft;\r\n task.width = newRight - newLeft;\r\n });\r\n\r\n taskStore.refresh();\r\n }\r\n\r\n export function getRowContainer() {\r\n return rowContainer;\r\n }\r\n\r\n export function selectTask(id) {\r\n const task = $taskStore.entities[id];\r\n if (task) {\r\n selectionManager.selectSingle(task);\r\n }\r\n }\r\n\r\n export function unselectTasks() {\r\n selectionManager.clearSelection();\r\n }\r\n\r\n export function scrollToRow(id, scrollBehavior = 'auto') {\r\n const { scrollTop, clientHeight } = mainContainer;\r\n \r\n const index = $allRows.findIndex(r => r.model.id == id);\r\n if(index === -1) return;\r\n const targetTop = index * rowHeight;\r\n\r\n if(targetTop < scrollTop) {\r\n mainContainer.scrollTo({\r\n top: targetTop,\r\n behavior: scrollBehavior\r\n });\r\n }\r\n\r\n if(targetTop > scrollTop + clientHeight) {\r\n mainContainer.scrollTo({\r\n top: targetTop + rowHeight - clientHeight,\r\n behavior: scrollBehavior\r\n });\r\n }\r\n }\r\n\r\n\texport function scrollToTask(id, scrollBehavior = 'auto') {\r\n const { scrollLeft, scrollTop, clientWidth, clientHeight } = mainContainer;\r\n \r\n const task = $taskStore.entities[id];\r\n if(!task) return;\r\n const targetLeft = task.left;\r\n const rowIndex = $allRows.findIndex(r => r.model.id == task.model.resourceId);\r\n const targetTop = rowIndex * rowHeight;\r\n \r\n const options = {\r\n top: undefined,\r\n left: undefined,\r\n behavior: scrollBehavior\r\n };\r\n\r\n if(targetLeft < scrollLeft) {\r\n options.left = targetLeft;\r\n }\r\n\r\n if(targetLeft > scrollLeft + clientWidth) {\r\n options.left = targetLeft + task.width - clientWidth;\r\n }\r\n\r\n if(targetTop < scrollTop) {\r\n options.top = targetTop;\r\n }\r\n\r\n if(targetTop > scrollTop + clientHeight) {\r\n options.top = targetTop + rowHeight - clientHeight;\r\n }\r\n \r\n mainContainer.scrollTo(options);\r\n }\r\n\r\n export function updateTask(model) {\r\n const task = taskFactory.createTask(model);\r\n taskStore.upsert(task);\r\n }\r\n\r\n export function updateTasks(taskModels) {\r\n const tasks = taskModels.map(model => taskFactory.createTask(model));\r\n taskStore.upsertAll(tasks);\r\n }\r\n\r\n export function updateRow(model) {\r\n const row = rowFactory.createRow(model, null);\r\n rowStore.upsert(row);\r\n }\r\n\r\n export function updateRows(rowModels) {\r\n const rows = rowModels.map(model => rowFactory.createRow(model, null));\r\n rowStore.upsertAll(rows);\r\n }\r\n\r\n export function getRow(resourceId) {\r\n return $rowStore.entities[resourceId];\r\n }\r\n\r\n export function getTask(id) {\r\n return $taskStore.entities[id];\r\n }\r\n\r\n export function getTasks(resourceId) {\r\n if ($rowTaskCache[resourceId]) {\r\n return $rowTaskCache[resourceId].map(id => $taskStore.entities[id]);\r\n }\r\n return null;\r\n }\r\n \r\n let filteredRows = [];\r\n $: filteredRows = $allRows.filter(row => !row.hidden);\r\n // $: filteredRows = $allRows\r\n\r\n let tableFilteredRows = [];\r\n $: tableFilteredRows = $allRows.filter(row => !row.hidden);\r\n\r\n let rightScrollbarVisible;\r\n $: rightScrollbarVisible = rowContainerHeight > $visibleHeight;\r\n\r\n let rowContainerHeight;\r\n $: rowContainerHeight = filteredRows.length * rowHeight;\r\n\r\n let startIndex;\r\n $: startIndex = Math.floor(__scrollTop / rowHeight);\r\n\r\n let endIndex;\r\n $: endIndex = Math.min(startIndex + Math.ceil($visibleHeight / rowHeight), filteredRows.length - 1);\r\n\r\n let paddingTop = 0;\r\n $: paddingTop = startIndex * rowHeight;\r\n\r\n let paddingBottom = 0;\r\n $: paddingBottom = (filteredRows.length - endIndex - 1) * rowHeight;\r\n\r\n let visibleRows = $allRows;\r\n $: visibleRows = $allRows;\r\n\r\n let tableRows = [];\r\n $: tableRows = tableFilteredRows.slice(startIndex, endIndex + 1);\r\n\r\n let visibleTasks: SvelteTask[];\r\n $: {\r\n const tasks = [];\r\n visibleRows.forEach((row, rowIndex) => {\r\n if ($rowTaskCache[row.model.id]) {\r\n $rowTaskCache[row.model.id].forEach(id => {\r\n tasks.push({ ...$taskStore.entities[id], rowIndex, taskCount: $rowTaskCache[row.model.id].length });\r\n });\r\n }\r\n });\r\n visibleTasks = tasks\r\n }\r\n\r\n let disableTransition = true;\r\n $: if($dimensionsChanged) tickWithoutCSSTransition();\r\n</script>\r\n\r\n<div class=\"sg-gantt {classes}\" class:sg-disable-transition={!disableTransition} bind:this={ganttElement} on:click={onEvent} on:mouseover={onEvent} on:mouseleave={onEvent}>\r\n {#each ganttTableModules as module}\r\n <svelte:component this={module} {rowContainerHeight} {paddingTop} {paddingBottom} tableWidth={tableWidth} {...$$restProps} on:init=\"{onModuleInit}\" visibleRows={tableRows} />\r\n\r\n <!-- <Resizer x={tableWidth} on:resize=\"{onResize}\" container={ganttElement}></Resizer> -->\r\n {/each}\r\n\r\n <div class=\"sg-timeline sg-view\" id=\"gantt-scroll\">\r\n \r\n <div class=\"sg-header\" bind:this={mainHeaderContainer} bind:clientHeight=\"{$headerHeight}\" class:right-scrollbar-visible=\"{rightScrollbarVisible}\">\r\n <div class=\"sg-header-scroller\" use:horizontalScrollListener>\r\n <div class=\"header-container\" style=\"width:{$_width}px\">\r\n <ColumnHeader {headers} {columnUnit} {columnOffset} on:dateSelected=\"{onDateSelected}\" />\r\n {#each $allTimeRanges as timeRange (timeRange.model.id)}\r\n <TimeRangeHeader {...timeRange} />\r\n {/each}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- on:wheel=\"{onwheel} -->\r\n <div class=\"sg-timeline-body\" id=\"sg-timeline-body\" bind:this={mainContainer} use:scrollable class:zooming=\"{zooming}\"\r\n bind:clientHeight=\"{$visibleHeight}\" bind:clientWidth=\"{$visibleWidth}\">\r\n <div class=\"content\" style=\"width:{$_width}px\">\r\n <Columns columns={columns} {columnStrokeColor} {columnStrokeWidth}/>\r\n <div class=\"sg-rows\" bind:this={rowContainer} style=\"height:{rowContainerHeight}px;\">\r\n <div style=\"transform: translateY({paddingTop}px);\">\r\n {#each tableRows as row (row.model.id)}\r\n <!-- <p>ALLROWS: {$allRows.length}</p> -->\r\n <Row row={row} />\r\n {/each}\r\n </div>\r\n </div>\r\n\r\n <div class=\"sg-foreground\">\r\n {#each $allTimeRanges as timeRange (timeRange.model.id)}\r\n <TimeRange {...timeRange} />\r\n {/each}\r\n\r\n {#each visibleTasks as task (task.model.id)}\r\n <Task taskObject={task} model={task.model} left={task.left}\r\n width={task.width} height={task.height} top={task.top} {...task} />\r\n {/each}\r\n </div>\r\n {#each ganttBodyModules as module}\r\n <svelte:component this={module} {paddingTop} {paddingBottom} {visibleRows} {...$$restProps} on:init=\"{onModuleInit}\" />\r\n {/each}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n #gantt-scroll {\r\n margin-left: 39px;\r\n }\r\n\r\n .sg-disable-transition :global(.sg-task),\r\n .sg-disable-transition :global(.sg-milestone) {\r\n transition: transform 0s, background-color 0.2s, width 0s !important;\r\n }\r\n\r\n :global(.sg-view:not(:first-child)) {\r\n /* margin-left: 5px; */\r\n }\r\n \r\n /* This class should take into account varying widths of the scroll bar */\r\n .right-scrollbar-visible {\r\n padding-right: 0;\r\n }\r\n\r\n .sg-timeline {\r\n flex: 1 1 0%;\r\n display: flex;\r\n flex-direction: column;\r\n overflow-x: auto;\r\n /* margin-left: 40px; */\r\n }\r\n\r\n .sg-gantt {\r\n display: flex;\r\n\r\n width: 100%;\r\n height: 100%;\r\n position: relative;\r\n }\r\n\r\n .sg-foreground {\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n top: 0;\r\n left: 0;\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n z-index: 1;\r\n pointer-events: none;\r\n }\r\n\r\n .sg-rows {\r\n width: 100%;\r\n box-sizing: border-box;\r\n overflow: hidden;\r\n }\r\n\r\n .sg-timeline-body {\r\n overflow: auto;\r\n flex: 1 1 auto;\r\n }\r\n\r\n .sg-header {\r\n \r\n }\r\n\r\n .header-container {\r\n /* margin-left: 40px; */\r\n }\r\n\r\n .sg-header-scroller {\r\n border-right: 1px solid #efefef;\r\n overflow: hidden;\r\n position: relative;\r\n }\r\n\r\n .content {\r\n position: relative;\r\n /* margin-left: 40px; */\r\n border-left: #efefef 1px solid;\r\n }\r\n\r\n :global(*) {\r\n box-sizing: border-box;\r\n }\r\n</style>","<script lang=\"ts\">\r\n import type { SvelteRow } from \"src/core/row\";\r\n\r\n import { createEventDispatcher, getContext } from \"svelte\";\r\n\r\n export let row: SvelteRow;\r\n \r\n const dispatch = createEventDispatcher();\r\n\r\n function onExpandToggle() {\r\n if(row.expanded) {\r\n dispatch('rowCollapsed', { row });\r\n } else {\r\n dispatch('rowExpanded', { row });\r\n }\r\n }\r\n</script>\r\n\r\n<div class=\"sg-cell-inner\" style=\"padding-left: {row.childLevel*3}em\">\r\n {#if row.children}\r\n <div class=\"sg-tree-expander\" on:click=\"{onExpandToggle}\">\r\n {#if row.expanded}\r\n <i class=\"fas fa-angle-down\"></i>\r\n {:else}\r\n <i class=\"fas fa-angle-right\"></i>\r\n {/if}\r\n </div>\r\n {/if}\r\n <slot></slot>\r\n</div>\r\n\r\n<style>\r\n .sg-tree-expander {\r\n cursor: pointer;\r\n min-width: 1.4em;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n\r\n .sg-cell-inner {\r\n display: flex;\r\n }\r\n</style>","<script lang=\"ts\">\r\n import { createEventDispatcher, getContext, onMount } from \"svelte\";\r\n\r\n import TableTreeCell from './TableTreeCell.svelte';\r\n import type { TableHeader } from './tableHeader';\r\n import type { SvelteRow } from \"src/core/row\";\r\n\r\n export let headers: TableHeader[] = null;\r\n export let row: SvelteRow = null;\r\n\r\n const { rowHeight } = getContext('options');\r\n const { hoveredRow, selectedRow } = getContext('gantt');\r\n\r\n const dispatch = createEventDispatcher();\r\n\r\n let treeIndentationStyle = '';\r\n $: {\r\n treeIndentationStyle = row.parent ? `padding-left: ${row.childLevel*3}em;`:'';\r\n }\r\n\r\n onMount(()=>{\r\n if(row.model.expanded == false) dispatch('rowCollapsed', { row });\r\n })\r\n\r\n</script>\r\n\r\n<div data-row-id={row.model.id} \r\n style=\"height:{$rowHeight}px\" \r\n class=\"sg-table-row {row.model.classes || ''}\" \r\n class:sg-row-expanded=\"{row.expanded}\" \r\n class:sg-hover={$hoveredRow == row.model.id} \r\n class:sg-selected={$selectedRow == row.model.id}>\r\n {#each headers as header}\r\n <div class=\"sg-table-body-cell sg-table-cell\" style=\"width:{header.width}px; border-left:'1px solid #eee;'}\">\r\n <!-- <div class=\"sg-table-body-cell sg-table-cell\" style=\"width:{header.width}px; border-left:{header.property.includes('html') ? 'none' : '1px solid #eee;'}\"> -->\r\n {#if header.type == 'tree'}\r\n <TableTreeCell on:rowCollapsed on:rowExpanded {row}>\r\n {#if row.model.iconClass}\r\n <div class=\"sg-table-icon\">\r\n <i class=\"{row.model.iconClass}\"></i>\r\n </div>\r\n {/if}\r\n\r\n {#if row.model.headerHtml}\r\n {@html row.model.headerHtml}\r\n {:else if header.renderer}\r\n {@html header.renderer(row)}\r\n {:else}\r\n {row.model[header.property]}\r\n {/if}\r\n </TableTreeCell>\r\n {:else}\r\n {#if row.model.iconClass}\r\n <div class=\"sg-table-icon\">\r\n <i class=\"{row.model.iconClass}\"></i>\r\n </div>\r\n {/if}\r\n\r\n {#if row.model.headerHtml}\r\n {@html row.model.headerHtml}\r\n {:else if header.renderer}\r\n {@html header.renderer(row)}\r\n {:else if header.type === 'resourceInfo'}\r\n <img class=\"sg-resource-image\" src=\"{row.model.imageSrc}\" alt=\"\"/>\r\n <div class=\"sg-resource-title\">\r\n {row.model[header.property]}\r\n </div>\r\n {:else if header.property.includes('html')}\r\n <div class=\"sg-html-cell-content\">\r\n {@html row.model[header.property]}\r\n </div>\r\n <!-- {row.model[header.property]} -->\r\n {:else}\r\n {row.model[header.property]}\r\n {/if}\r\n {/if}\r\n </div>\r\n {/each}\r\n</div>\r\n<style>\r\n .sg-html-cell-content {\r\n display: flex;\r\n width: 100%;\r\n justify-content: center;\r\n }\r\n\r\n .sg-table-row {\r\n display: inline-flex;\r\n min-width: 100%;\r\n align-items: stretch;\r\n position: relative;\r\n font-weight: 400;\r\n font-size: 14px;\r\n border-top: 1px solid transparent;\r\n border-bottom: 1px solid transparent; }\r\n\r\n .sg-table-cell {\r\n border-left: 1px solid #eee;\r\n }\r\n\r\n .sg-table-body-cell {\r\n border-bottom: #efefef 1px solid;\r\n background-color: rgba(0, 0, 0, 0);\r\n display: flex;\r\n /* font-weight: bold; */\r\n }\r\n\r\n .sg-resource-image {\r\n width: 2.4em;\r\n height: 2.4em;\r\n border-radius: 50%;\r\n margin-right: .6em;\r\n background: #047c69;\r\n }\r\n\r\n .sg-resource-info {\r\n flex: 1;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n }\r\n\r\n .sg-table-icon {\r\n margin-right: 0.5em;\r\n }\r\n\r\n .sg-selected {\r\n border-color: black;\r\n }\r\n</style>","<script context=\"module\">\r\n export const type = 'table';\r\n</script>\r\n\r\n<script lang=\"ts\">\r\n import { createEventDispatcher, onMount, getContext } from 'svelte';\r\n\r\n const dispatch = createEventDispatcher();\r\n\r\n import TableRow from './TableRow.svelte';\r\n import { rowStore, taskStore } from \"../../core/store\";\r\n import type { TableHeader } from './tableHeader';\r\n import type { SvelteRow } from 'src/core/row';\r\n\r\n export let tableWidth;\r\n export let paddingTop;\r\n export let paddingBottom;\r\n export let rowContainerHeight;\r\n export let visibleRows: SvelteRow[];\r\n // list of columns used in the table\r\n // title: label to display in the header\r\n // property: property of row to display in the cell\r\n // width: width of column\r\n export let tableHeaders: TableHeader[] = [{ title: 'Name', property: 'label', width: 100, isHtml: false }];\r\n\r\n const { from, to, width, visibleWidth, headerHeight } = getContext('dimensions');\r\n const { rowPadding, rowHeight } = getContext('options');\r\n\r\n onMount(() => {\r\n dispatch('init', { module: this });\r\n });\r\n\r\n const { scrollables } = getContext('gantt');\r\n let headerContainer;\r\n function scrollListener(node) {\r\n scrollables.push({ node, orientation: \"vertical\" });\r\n \r\n node.addEventListener(\"scroll\", event => {\r\n headerContainer.scrollLeft = node.scrollLeft;\r\n });\r\n\r\n return {\r\n destroy() {\r\n node.removeEventListener(\"scroll\");\r\n }\r\n };\r\n }\r\n \r\n let scrollWidth;\r\n $: {\r\n let sum = 0;\r\n tableHeaders.forEach(header => {\r\n sum += header.width;\r\n });\r\n scrollWidth = sum;\r\n }\r\n\r\n function onRowExpanded(event) {\r\n const row = event.detail.row;\r\n row.expanded = true;\r\n if(row.children)\r\n show(row.children);\r\n updateYPositions();\r\n }\r\n\r\n function onRowCollapsed(event) {\r\n const row = event.detail.row;\r\n row.expanded = false;\r\n if(row.children)\r\n hide(row.children);\r\n updateYPositions();\r\n }\r\n\r\n function updateYPositions() {\r\n let y = 0;\r\n $rowStore.ids.forEach(id => {\r\n const row = $rowStore.entities[id];\r\n if(!row.hidden) {\r\n $rowStore.entities[id].y = y;\r\n y+= $rowHeight;\r\n }\r\n });\r\n\r\n $taskStore.ids.forEach(id => {\r\n const task = $taskStore.entities[id];\r\n const row = $rowStore.entities[task.model.resourceId];\r\n $taskStore.entities[id].top = row.y + $rowPadding;\r\n });\r\n }\r\n\r\n function hide(children) {\r\n children.forEach(row => {\r\n if(row.children)\r\n hide(row.children);\r\n row.hidden = true;\r\n });\r\n }\r\n\r\n function show(children, hidden = false) {\r\n children.forEach(row => {\r\n if(row.children)\r\n show(row.children, !row.expanded);\r\n row.hidden = hidden;\r\n });\r\n }\r\n\r\n // if gantt displays a bottom scrollbar and table does not, we need to pad out the table\r\n let bottomScrollbarVisible;\r\n $: {\r\n bottomScrollbarVisible = $width > $visibleWidth && scrollWidth <= tableWidth;\r\n } \r\n</script>\r\n\r\n<div class=\"sg-table sg-view\" style=\"width:{tableWidth}px;\">\r\n <div class=\"sg-table-header\" style=\"height:{$headerHeight}px\" bind:this={headerContainer}>\r\n {#each tableHeaders as header}\r\n <div class=\"sg-table-header-cell sg-table-cell\" style=\"width:{header.width}px\">\r\n {#if header.isHtml}\r\n {@html header.title}\r\n {:else}\r\n {header.title}\r\n {/if}\r\n </div>\r\n {/each}\r\n </div>\r\n\r\n <div class=\"sg-table-body\" class:bottom-scrollbar-visible=\"{bottomScrollbarVisible}\">\r\n <div class=\"sg-table-scroller\" use:scrollListener>\r\n <div class=\"sg-table-rows\" style=\"padding-top:{paddingTop}px;padding-bottom:{paddingBottom}px;height:{rowContainerHeight}px;\"> \r\n {#each visibleRows as row}\r\n <TableRow\r\n row={row}\r\n headers={tableHeaders}\r\n on:rowExpanded={onRowExpanded}\r\n on:rowCollapsed={onRowCollapsed}/>\r\n {/each}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<style>\r\n /* This class should take into account varying widths of the scroll bar */\r\n .bottom-scrollbar-visible {\r\n padding-bottom: 17px;\r\n }\r\n\r\n .sg-table {\r\n overflow-x: auto;\r\n display: flex;\r\n flex-direction: column;\r\n }\r\n\r\n .sg-table-scroller {\r\n width: 100%;\r\n border-bottom: 1px solid #efefef; \r\n overflow-y: hidden;\r\n }\r\n\r\n .sg-table-header {\r\n display: flex;\r\n align-items: stretch;\r\n overflow: hidden;\r\n border-bottom: #efefef 1px solid;\r\n background-color: #fbfbfb;\r\n }\r\n\r\n .sg-table-rows {\r\n \r\n }\r\n\r\n .sg-table-body {\r\n display: flex;\r\n flex: 1 1 0;\r\n width: 100%;\r\n overflow-y: hidden;\r\n }\r\n\r\n .sg-table-header-cell {\r\n font-size: 14px;\r\n font-weight: 400;\r\n }\r\n\r\n :global(.sg-table-cell){\r\n white-space: nowrap;\r\n overflow: hidden;\r\n \r\n display: flex;\r\n align-items: center;\r\n flex-shrink: 0;\r\n\r\n padding: 0 .5em;\r\n height: 100%;\r\n }\r\n \r\n :global(.sg-table-cell:last-child) {\r\n flex-grow: 1;\r\n }\r\n</style>","import _svelteGanttTable from './Table.svelte';\r\nvar SvelteGanttTable = _svelteGanttTable;\r\nexport { SvelteGanttTable };\r\n//# sourceMappingURL=index.js.map","<script lang=\"ts\">\r\n import { onMount } from 'svelte';\r\n\r\n export let startY;\r\n export let endY;\r\n export let endX;\r\n export let startX;\r\n export let minLen = 12;\r\n export let arrowSize = 5;\r\n export let stroke = 'red';\r\n export let strokeWidth = 2;\r\n\r\n onMount(() => {\r\n\r\n });\r\n\r\n let height;\r\n $: height = endY - startY;\r\n\r\n let width;\r\n $: width = endX - startX;\r\n\r\n let path;\r\n $: {\r\n if (startX == NaN || startX == undefined)\r\n path = 'M0 0';\r\n\r\n let result;\r\n if (startX + minLen >= endX && startY != endY) {\r\n result = `L ${startX + minLen} ${startY} \r\n L ${startX + minLen} ${startY + height / 2}\r\n L ${endX - minLen} ${startY + height / 2}\r\n L ${endX - minLen} ${endY} `\r\n }\r\n else {\r\n result = `L ${startX + width / 2} ${startY} \r\n L ${startX + width / 2} ${endY}`\r\n }\r\n\r\n // -2 so the line doesn't stick out of the arrowhead\r\n path = `M${startX} ${startY}` + result + `L ${endX - 2} ${endY}`\r\n }\r\n\r\n let arrowPath;\r\n $: {\r\n if (endX == NaN || endX == undefined)\r\n arrowPath = 'M0 0';\r\n\r\n arrowPath = `M${endX - arrowSize} ${endY - arrowSize} L${endX} ${endY} L${endX - arrowSize} ${endY + arrowSize} Z`\r\n }\r\n</script>\r\n\r\n<svg xmlns=\"http://www.w3.org/2000/svg\" shape-rendering=\"crispEdges\" class=\"arrow\" height=\"100%\" width=\"100%\">\r\n <path d=\"{path}\" {stroke} stroke-width=\"{strokeWidth}\" fill=\"transparent\" class=\"select-area\" />\r\n <path d=\"{arrowPath}\" fill=\"{stroke}\" />\r\n</svg>\r\n\r\n<style>\r\n .arrow {\r\n position: absolute;\r\n left: 0px;\r\n pointer-events: none;\r\n }\r\n\r\n .select-area {\r\n pointer-events: visible;\r\n position: absolute;\r\n }\r\n</style>","<script lang=\"ts\">\r\n import Arrow from './Arrow.svelte';\r\n\r\n import { taskStore } from '../../core/store';\r\n\r\n export let id;\r\n export let fromId;\r\n export let toId;\r\n export let stroke;\r\n export let strokeWidth;\r\n\r\n let fromTask;\r\n $: fromTask = $taskStore.entities[fromId];\r\n\r\n let toTask;\r\n $: toTask = $taskStore.entities[toId];\r\n</script>\r\n\r\n<div class=\"sg-dependency\" style=\"left:0;top:0\" data-dependency-id=\"{id}\">\r\n <Arrow startX={fromTask.left + fromTask.width} startY={fromTask.top + fromTask.height / 2} endX={toTask.left}\r\n endY={toTask.top + toTask.height / 2} {stroke} {strokeWidth} />\r\n</div>\r\n\r\n<style>\r\n .sg-dependency {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n }\r\n</style>","<script lang=\"ts\">\r\n import { getContext } from 'svelte';\r\n\r\n import Dependency from './Dependency.svelte';\r\n \r\n import { taskStore } from '../../core/store';\r\n\r\n const { visibleHeight } = getContext('dimensions');\r\n\r\n export let paddingTop;\r\n export let dependencies = [];\r\n\r\n let visibleDependencies = [];\r\n $: {\r\n const result = [];\r\n for (let i = 0; i < dependencies.length; i++) {\r\n const dependency = dependencies[i];\r\n const map = $taskStore.entities;\r\n\r\n const fromTask = map[dependency.fromId];\r\n const toTask = map[dependency.toId];\r\n if(\r\n fromTask && toTask \r\n && Math.min(fromTask.top, toTask.top) <= paddingTop + $visibleHeight \r\n && Math.max(fromTask.top, toTask.top) >= paddingTop\r\n ) {\r\n result.push(dependency);\r\n }\r\n }\r\n visibleDependencies = result;\r\n }\r\n</script>\r\n\r\n<div class=\"dependency-container\">\r\n {#each visibleDependencies as dependency (dependency.id)}\r\n <Dependency {...dependency}/>\r\n {/each}\r\n</div>\r\n\r\n<style>\r\n .dependency-container {\r\n position: absolute;\r\n width: 100%;\r\n height: 100%;\r\n \r\n pointer-events: none;\r\n top: 0;\r\n float: left;\r\n overflow: hidden;\r\n z-index: 0;\r\n }\r\n</style>","import _svelteGanttDependencies from './GanttDependencies.svelte';\r\nvar SvelteGanttDependencies = _svelteGanttDependencies;\r\nexport { SvelteGanttDependencies };\r\n//# sourceMappingURL=index.js.map","import { getRelativePos } from \"../../utils/domUtils\";\r\nimport { Draggable } from \"../../core/drag\";\r\nconst defaults = {\r\n enabled: true,\r\n elementContent: () => {\r\n const element = document.createElement('div');\r\n element.innerHTML = 'New Task';\r\n Object.assign(element.style, {\r\n position: 'absolute',\r\n background: '#eee',\r\n padding: '0.5em 1em',\r\n fontSize: '12px',\r\n pointerEvents: 'none',\r\n });\r\n return element;\r\n }\r\n};\r\nexport class SvelteGanttExternal {\r\n constructor(node, options) {\r\n this.options = Object.assign({}, defaults, options);\r\n this.draggable = new Draggable(node, {\r\n onDrag: this.onDrag.bind(this),\r\n dragAllowed: () => this.options.enabled,\r\n resizeAllowed: false,\r\n onDrop: this.onDrop.bind(this),\r\n container: document.body,\r\n getX: (event) => event.pageX,\r\n getY: (event) => event.pageY,\r\n getWidth: () => 0\r\n });\r\n }\r\n onDrag({ x, y }) {\r\n if (!this.element) {\r\n this.element = this.options.elementContent();\r\n document.body.appendChild(this.element);\r\n this.options.dragging = true;\r\n }\r\n this.element.style.top = y + 'px';\r\n this.element.style.left = x + 'px';\r\n }\r\n onDrop(event) {\r\n var _a, _b, _c, _d;\r\n const gantt = this.options.gantt;\r\n const targetRow = gantt.dndManager.getTarget('row', event.mouseEvent);\r\n if (targetRow) {\r\n const mousePos = getRelativePos(gantt.getRowContainer(), event.mouseEvent);\r\n const date = gantt.utils.getDateByPosition(mousePos.x);\r\n (_b = (_a = this.options).onsuccess) === null || _b === void 0 ? void 0 : _b.call(_a, targetRow, date, gantt);\r\n }\r\n else {\r\n (_d = (_c = this.options).onfail) === null || _d === void 0 ? void 0 : _d.call(_c);\r\n }\r\n document.body.removeChild(this.element);\r\n this.options.dragging = false;\r\n this.element = null;\r\n }\r\n}\r\n//# sourceMappingURL=external.js.map","// import { SvelteGanttTableComponent } from './modules/table';\r\n// import { SvelteGanttComponent } from './gantt';\r\n\r\n// export declare var SvelteGanttTable: SvelteGanttTableComponent;\r\n// export declare var SvelteGantt: SvelteGanttComponent;\r\n\r\nimport _svelteGantt from './Gantt.svelte';\r\n\r\nimport { SvelteGanttComponent, SvelteGanttOptions } from './gantt';\r\nimport { ComponentCreator } from './core/svelte';\r\nimport { SvelteGanttTable } from './modules/table';\r\nimport { SvelteGanttDependencies } from './modules/dependencies';\r\nimport { SvelteGanttExternal } from './modules/external/external';\r\nimport { MomentSvelteGanttDateAdapter } from './utils/date';\r\n\r\nvar SvelteGantt = _svelteGantt as unknown as ComponentCreator<SvelteGanttComponent, SvelteGanttOptions>;\r\n\r\nexport {\r\n SvelteGantt,\r\n SvelteGanttTable,\r\n SvelteGanttDependencies,\r\n SvelteGanttExternal,\r\n MomentSvelteGanttDateAdapter\r\n};"],"names":["this","get","_svelteGanttTable","_svelteGanttDependencies","_svelteGantt"],"mappings":"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"}