@zealicsolutions/web-ui 1.0.44 → 1.0.45-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/dist/cjs/containers/types/moleculeTypes.d.ts +16 -10
  2. package/dist/cjs/index.js +1577 -1577
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/molecules/Calendar/CalendarMolecule.d.ts +54 -0
  5. package/dist/cjs/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
  6. package/dist/cjs/molecules/Visit/VisitMolecule.d.ts +41 -0
  7. package/dist/esm/containers/types/moleculeTypes.d.ts +16 -10
  8. package/dist/esm/molecules/BaseMolecule.js +1 -1
  9. package/dist/esm/molecules/BaseMolecule.js.map +1 -1
  10. package/dist/esm/molecules/Calendar/CalendarMolecule.d.ts +54 -0
  11. package/dist/esm/molecules/Calendar/CalendarMolecule.js +2 -0
  12. package/dist/esm/molecules/Calendar/CalendarMolecule.js.map +1 -0
  13. package/dist/esm/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
  14. package/dist/esm/molecules/Visit/VisitMolecule.d.ts +41 -0
  15. package/dist/esm/molecules/Visit/VisitMolecule.js +2 -0
  16. package/dist/esm/molecules/Visit/VisitMolecule.js.map +1 -0
  17. package/dist/esm/node_modules/@fullcalendar/core/index.js +2 -0
  18. package/dist/esm/node_modules/@fullcalendar/core/index.js.map +1 -0
  19. package/dist/esm/node_modules/@fullcalendar/core/internal-common.js +2 -0
  20. package/dist/esm/node_modules/@fullcalendar/core/internal-common.js.map +1 -0
  21. package/dist/esm/node_modules/@fullcalendar/daygrid/index.js +2 -0
  22. package/dist/esm/node_modules/@fullcalendar/daygrid/index.js.map +1 -0
  23. package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js +2 -0
  24. package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js.map +1 -0
  25. package/dist/esm/node_modules/@fullcalendar/interaction/index.js +2 -0
  26. package/dist/esm/node_modules/@fullcalendar/interaction/index.js.map +1 -0
  27. package/dist/esm/node_modules/@fullcalendar/list/index.js +2 -0
  28. package/dist/esm/node_modules/@fullcalendar/list/index.js.map +1 -0
  29. package/dist/esm/node_modules/@fullcalendar/list/internal.js +2 -0
  30. package/dist/esm/node_modules/@fullcalendar/list/internal.js.map +1 -0
  31. package/dist/esm/node_modules/@fullcalendar/premium-common/index.js +2 -0
  32. package/dist/esm/node_modules/@fullcalendar/premium-common/index.js.map +1 -0
  33. package/dist/esm/node_modules/@fullcalendar/react/dist/index.js +2 -0
  34. package/dist/esm/node_modules/@fullcalendar/react/dist/index.js.map +1 -0
  35. package/dist/esm/node_modules/@fullcalendar/resource/index.js +2 -0
  36. package/dist/esm/node_modules/@fullcalendar/resource/index.js.map +1 -0
  37. package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js +2 -0
  38. package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js.map +1 -0
  39. package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js +2 -0
  40. package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js.map +1 -0
  41. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js +2 -0
  42. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js.map +1 -0
  43. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js +2 -0
  44. package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js.map +1 -0
  45. package/dist/esm/node_modules/@fullcalendar/resource-timeline/index.js +2 -0
  46. package/dist/esm/node_modules/@fullcalendar/resource-timeline/index.js.map +1 -0
  47. package/dist/esm/node_modules/@fullcalendar/resource-timeline/internal.js +2 -0
  48. package/dist/esm/node_modules/@fullcalendar/resource-timeline/internal.js.map +1 -0
  49. package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js +2 -0
  50. package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js.map +1 -0
  51. package/dist/esm/node_modules/@fullcalendar/timegrid/index.js +2 -0
  52. package/dist/esm/node_modules/@fullcalendar/timegrid/index.js.map +1 -0
  53. package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js +2 -0
  54. package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js.map +1 -0
  55. package/dist/esm/node_modules/@fullcalendar/timeline/index.js +2 -0
  56. package/dist/esm/node_modules/@fullcalendar/timeline/index.js.map +1 -0
  57. package/dist/esm/node_modules/@fullcalendar/timeline/internal.js +2 -0
  58. package/dist/esm/node_modules/@fullcalendar/timeline/internal.js.map +1 -0
  59. package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js +2 -0
  60. package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js.map +1 -0
  61. package/dist/esm/node_modules/preact/dist/preact.mjs.js +2 -0
  62. package/dist/esm/node_modules/preact/dist/preact.mjs.js.map +1 -0
  63. package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js +2 -0
  64. package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js.map +1 -0
  65. package/dist/index.d.ts +105 -10
  66. package/package.json +11 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@fullcalendar/resource/index.js"],"sourcesContent":["import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport { memoize, filterHash, rangesIntersect, isPropsEqual, mapHash, combineEventUis, refineProps, guid, identity, rangesEqual, CalendarImpl, mergeEventStores, isPropsValid, parseFieldSpecs, EventImpl, unpromisify, requestJson } from '@fullcalendar/core/internal.js';\nimport { p as parseResource, R as ResourceApi, a as ResourceSplitter, h as handleResourceStore } from './internal-common.js';\nexport { R as ResourceApi } from './internal-common.js';\nimport '@fullcalendar/core/preact.js';\n\nfunction massageEventDragMutation(eventMutation, hit0, hit1) {\n let resource0 = hit0.dateSpan.resourceId;\n let resource1 = hit1.dateSpan.resourceId;\n if (resource0 && resource1 &&\n resource0 !== resource1) {\n eventMutation.resourceMutation = {\n matchResourceId: resource0,\n setResourceId: resource1,\n };\n }\n}\n/*\nTODO: all this would be much easier if we were using a hash!\n*/\nfunction applyEventDefMutation(eventDef, mutation, context) {\n let resourceMutation = mutation.resourceMutation;\n if (resourceMutation && computeResourceEditable(eventDef, context)) {\n let index = eventDef.resourceIds.indexOf(resourceMutation.matchResourceId);\n if (index !== -1) {\n let resourceIds = eventDef.resourceIds.slice(); // copy\n resourceIds.splice(index, 1); // remove\n if (resourceIds.indexOf(resourceMutation.setResourceId) === -1) { // not already in there\n resourceIds.push(resourceMutation.setResourceId); // add\n }\n eventDef.resourceIds = resourceIds;\n }\n }\n}\n/*\nHACK\nTODO: use EventUi system instead of this\n*/\nfunction computeResourceEditable(eventDef, context) {\n let { resourceEditable } = eventDef;\n if (resourceEditable == null) {\n let source = eventDef.sourceId && context.getCurrentData().eventSources[eventDef.sourceId];\n if (source) {\n resourceEditable = source.extendedProps.resourceEditable; // used the Source::extendedProps hack\n }\n if (resourceEditable == null) {\n resourceEditable = context.options.eventResourceEditable;\n if (resourceEditable == null) {\n resourceEditable = context.options.editable; // TODO: use defaults system instead\n }\n }\n }\n return resourceEditable;\n}\nfunction transformEventDrop(mutation, context) {\n let { resourceMutation } = mutation;\n if (resourceMutation) {\n let { calendarApi } = context;\n return {\n oldResource: calendarApi.getResourceById(resourceMutation.matchResourceId),\n newResource: calendarApi.getResourceById(resourceMutation.setResourceId),\n };\n }\n return {\n oldResource: null,\n newResource: null,\n };\n}\n\nclass ResourceDataAdder {\n constructor() {\n this.filterResources = memoize(filterResources);\n }\n transform(viewProps, calendarProps) {\n if (calendarProps.viewSpec.optionDefaults.needsResourceData) {\n return {\n resourceStore: this.filterResources(calendarProps.resourceStore, calendarProps.options.filterResourcesWithEvents, calendarProps.eventStore, calendarProps.dateProfile.activeRange),\n resourceEntityExpansions: calendarProps.resourceEntityExpansions,\n };\n }\n return null;\n }\n}\nfunction filterResources(resourceStore, doFilterResourcesWithEvents, eventStore, activeRange) {\n if (doFilterResourcesWithEvents) {\n let instancesInRange = filterEventInstancesInRange(eventStore.instances, activeRange);\n let hasEvents = computeHasEvents(instancesInRange, eventStore.defs);\n Object.assign(hasEvents, computeAncestorHasEvents(hasEvents, resourceStore));\n return filterHash(resourceStore, (resource, resourceId) => hasEvents[resourceId]);\n }\n return resourceStore;\n}\nfunction filterEventInstancesInRange(eventInstances, activeRange) {\n return filterHash(eventInstances, (eventInstance) => rangesIntersect(eventInstance.range, activeRange));\n}\nfunction computeHasEvents(eventInstances, eventDefs) {\n let hasEvents = {};\n for (let instanceId in eventInstances) {\n let instance = eventInstances[instanceId];\n for (let resourceId of eventDefs[instance.defId].resourceIds) {\n hasEvents[resourceId] = true;\n }\n }\n return hasEvents;\n}\n/*\nmark resources as having events if any of their ancestors have them\nNOTE: resourceStore might not have all the resources that hasEvents{} has keyed\n*/\nfunction computeAncestorHasEvents(hasEvents, resourceStore) {\n let res = {};\n for (let resourceId in hasEvents) {\n let resource;\n while ((resource = resourceStore[resourceId])) {\n resourceId = resource.parentId; // now functioning as the parentId\n if (resourceId) {\n res[resourceId] = true;\n }\n else {\n break;\n }\n }\n }\n return res;\n}\n/*\nfor making sure events that have editable resources are always draggable in resource views\n*/\nfunction transformIsDraggable(val, eventDef, eventUi, context) {\n if (!val) {\n let state = context.getCurrentData();\n let viewSpec = state.viewSpecs[state.currentViewType];\n if (viewSpec.optionDefaults.needsResourceData) {\n if (computeResourceEditable(eventDef, context)) {\n return true;\n }\n }\n }\n return val;\n}\n\n// for when non-resource view should be given EventUi info (for event coloring/constraints based off of resource data)\nclass ResourceEventConfigAdder {\n constructor() {\n this.buildResourceEventUis = memoize(buildResourceEventUis, isPropsEqual);\n this.injectResourceEventUis = memoize(injectResourceEventUis);\n }\n transform(viewProps, calendarProps) {\n if (!calendarProps.viewSpec.optionDefaults.needsResourceData) {\n return {\n eventUiBases: this.injectResourceEventUis(viewProps.eventUiBases, viewProps.eventStore.defs, this.buildResourceEventUis(calendarProps.resourceStore)),\n };\n }\n return null;\n }\n}\nfunction buildResourceEventUis(resourceStore) {\n return mapHash(resourceStore, (resource) => resource.ui);\n}\nfunction injectResourceEventUis(eventUiBases, eventDefs, resourceEventUis) {\n return mapHash(eventUiBases, (eventUi, defId) => {\n if (defId) { // not the '' key\n return injectResourceEventUi(eventUi, eventDefs[defId], resourceEventUis);\n }\n return eventUi;\n });\n}\nfunction injectResourceEventUi(origEventUi, eventDef, resourceEventUis) {\n let parts = [];\n // first resource takes precedence, which fights with the ordering of combineEventUis, thus the unshifts\n for (let resourceId of eventDef.resourceIds) {\n if (resourceEventUis[resourceId]) {\n parts.unshift(resourceEventUis[resourceId]);\n }\n }\n parts.unshift(origEventUi);\n return combineEventUis(parts);\n}\n\nlet defs = []; // TODO: use plugin system\nfunction registerResourceSourceDef(def) {\n defs.push(def);\n}\nfunction getResourceSourceDef(id) {\n return defs[id];\n}\nfunction getResourceSourceDefs() {\n return defs;\n}\n\n// TODO: make this a plugin-able parser\n// TODO: success/failure\nconst RESOURCE_SOURCE_REFINERS = {\n id: String,\n // for array. TODO: move to resource-array\n resources: identity,\n // for json feed. TODO: move to resource-json-feed\n url: String,\n method: String,\n startParam: String,\n endParam: String,\n timeZoneParam: String,\n extraParams: identity,\n};\nfunction parseResourceSource(input) {\n let inputObj;\n if (typeof input === 'string') {\n inputObj = { url: input };\n }\n else if (typeof input === 'function' || Array.isArray(input)) {\n inputObj = { resources: input };\n }\n else if (typeof input === 'object' && input) { // non-null object\n inputObj = input;\n }\n if (inputObj) {\n let { refined, extra } = refineProps(inputObj, RESOURCE_SOURCE_REFINERS);\n warnUnknownProps(extra);\n let metaRes = buildResourceSourceMeta(refined);\n if (metaRes) {\n return {\n _raw: input,\n sourceId: guid(),\n sourceDefId: metaRes.sourceDefId,\n meta: metaRes.meta,\n publicId: refined.id || '',\n isFetching: false,\n latestFetchId: '',\n fetchRange: null,\n };\n }\n }\n return null;\n}\nfunction buildResourceSourceMeta(refined) {\n let defs = getResourceSourceDefs();\n for (let i = defs.length - 1; i >= 0; i -= 1) { // later-added plugins take precedence\n let def = defs[i];\n let meta = def.parseMeta(refined);\n if (meta) {\n return { meta, sourceDefId: i };\n }\n }\n return null;\n}\nfunction warnUnknownProps(props) {\n for (let propName in props) {\n console.warn(`Unknown resource prop '${propName}'`);\n }\n}\n\nfunction reduceResourceSource(source, action, context) {\n let { options, dateProfile } = context;\n if (!source || !action) {\n return createSource(options.initialResources || options.resources, dateProfile.activeRange, options.refetchResourcesOnNavigate, context);\n }\n switch (action.type) {\n case 'RESET_RESOURCE_SOURCE':\n return createSource(action.resourceSourceInput, dateProfile.activeRange, options.refetchResourcesOnNavigate, context);\n case 'PREV': // TODO: how do we track all actions that affect dateProfile :(\n case 'NEXT':\n case 'CHANGE_DATE':\n case 'CHANGE_VIEW_TYPE':\n return handleRangeChange(source, dateProfile.activeRange, options.refetchResourcesOnNavigate, context);\n case 'RECEIVE_RESOURCES':\n case 'RECEIVE_RESOURCE_ERROR':\n return receiveResponse(source, action.fetchId, action.fetchRange);\n case 'REFETCH_RESOURCES':\n return fetchSource(source, dateProfile.activeRange, context);\n default:\n return source;\n }\n}\nfunction createSource(input, activeRange, refetchResourcesOnNavigate, context) {\n if (input) {\n let source = parseResourceSource(input);\n source = fetchSource(source, refetchResourcesOnNavigate ? activeRange : null, context);\n return source;\n }\n return null;\n}\nfunction handleRangeChange(source, activeRange, refetchResourcesOnNavigate, context) {\n if (refetchResourcesOnNavigate &&\n !doesSourceIgnoreRange(source) &&\n (!source.fetchRange || !rangesEqual(source.fetchRange, activeRange))) {\n return fetchSource(source, activeRange, context);\n }\n return source;\n}\nfunction doesSourceIgnoreRange(source) {\n return Boolean(getResourceSourceDef(source.sourceDefId).ignoreRange);\n}\nfunction fetchSource(source, fetchRange, context) {\n let sourceDef = getResourceSourceDef(source.sourceDefId);\n let fetchId = guid();\n sourceDef.fetch({\n resourceSource: source,\n range: fetchRange,\n context,\n }, (res) => {\n context.dispatch({\n type: 'RECEIVE_RESOURCES',\n fetchId,\n fetchRange,\n rawResources: res.rawResources,\n });\n }, (error) => {\n context.dispatch({\n type: 'RECEIVE_RESOURCE_ERROR',\n fetchId,\n fetchRange,\n error,\n });\n });\n return Object.assign(Object.assign({}, source), { isFetching: true, latestFetchId: fetchId });\n}\nfunction receiveResponse(source, fetchId, fetchRange) {\n if (fetchId === source.latestFetchId) {\n return Object.assign(Object.assign({}, source), { isFetching: false, fetchRange });\n }\n return source;\n}\n\nfunction reduceResourceStore(store, action, source, context) {\n if (!store || !action) {\n return {};\n }\n switch (action.type) {\n case 'RECEIVE_RESOURCES':\n return receiveRawResources(store, action.rawResources, action.fetchId, source, context);\n case 'ADD_RESOURCE':\n return addResource(store, action.resourceHash);\n case 'REMOVE_RESOURCE':\n return removeResource(store, action.resourceId);\n case 'SET_RESOURCE_PROP':\n return setResourceProp(store, action.resourceId, action.propName, action.propValue);\n case 'SET_RESOURCE_EXTENDED_PROP':\n return setResourceExtendedProp(store, action.resourceId, action.propName, action.propValue);\n default:\n return store;\n }\n}\nfunction receiveRawResources(existingStore, inputs, fetchId, source, context) {\n if (source.latestFetchId === fetchId) {\n let nextStore = {};\n for (let input of inputs) {\n parseResource(input, '', nextStore, context);\n }\n return nextStore;\n }\n return existingStore;\n}\nfunction addResource(existingStore, additions) {\n // TODO: warn about duplicate IDs\n return Object.assign(Object.assign({}, existingStore), additions);\n}\nfunction removeResource(existingStore, resourceId) {\n let newStore = Object.assign({}, existingStore);\n delete newStore[resourceId];\n // promote children\n for (let childResourceId in newStore) { // a child, *maybe* but probably not\n if (newStore[childResourceId].parentId === resourceId) {\n newStore[childResourceId] = Object.assign(Object.assign({}, newStore[childResourceId]), { parentId: '' });\n }\n }\n return newStore;\n}\nfunction setResourceProp(existingStore, resourceId, name, value) {\n let existingResource = existingStore[resourceId];\n // TODO: sanitization\n if (existingResource) {\n return Object.assign(Object.assign({}, existingStore), { [resourceId]: Object.assign(Object.assign({}, existingResource), { [name]: value }) });\n }\n return existingStore;\n}\nfunction setResourceExtendedProp(existingStore, resourceId, name, value) {\n let existingResource = existingStore[resourceId];\n if (existingResource) {\n return Object.assign(Object.assign({}, existingStore), { [resourceId]: Object.assign(Object.assign({}, existingResource), { extendedProps: Object.assign(Object.assign({}, existingResource.extendedProps), { [name]: value }) }) });\n }\n return existingStore;\n}\n\nfunction reduceResourceEntityExpansions(expansions, action) {\n if (!expansions || !action) {\n return {};\n }\n switch (action.type) {\n case 'SET_RESOURCE_ENTITY_EXPANDED':\n return Object.assign(Object.assign({}, expansions), { [action.id]: action.isExpanded });\n default:\n return expansions;\n }\n}\n\nfunction reduceResources(state, action, context) {\n let resourceSource = reduceResourceSource(state && state.resourceSource, action, context);\n let resourceStore = reduceResourceStore(state && state.resourceStore, action, resourceSource, context);\n let resourceEntityExpansions = reduceResourceEntityExpansions(state && state.resourceEntityExpansions, action);\n return {\n resourceSource,\n resourceStore,\n resourceEntityExpansions,\n };\n}\n\nconst EVENT_REFINERS = {\n resourceId: String,\n resourceIds: identity,\n resourceEditable: Boolean,\n};\nfunction generateEventDefResourceMembers(refined) {\n return {\n resourceIds: ensureStringArray(refined.resourceIds)\n .concat(refined.resourceId ? [refined.resourceId] : []),\n resourceEditable: refined.resourceEditable,\n };\n}\nfunction ensureStringArray(items) {\n return (items || []).map((item) => String(item));\n}\n\nfunction transformDateSelectionJoin(hit0, hit1) {\n let resourceId0 = hit0.dateSpan.resourceId;\n let resourceId1 = hit1.dateSpan.resourceId;\n if (resourceId0 && resourceId1) {\n return { resourceId: resourceId0 };\n }\n return null;\n}\n\nCalendarImpl.prototype.addResource = function (input, scrollTo = true) {\n let currentState = this.getCurrentData();\n let resourceHash;\n let resource;\n if (input instanceof ResourceApi) {\n resource = input._resource;\n resourceHash = { [resource.id]: resource };\n }\n else {\n resourceHash = {};\n resource = parseResource(input, '', resourceHash, currentState);\n }\n this.dispatch({\n type: 'ADD_RESOURCE',\n resourceHash,\n });\n if (scrollTo) {\n // TODO: wait til dispatch completes somehow\n this.trigger('_scrollRequest', { resourceId: resource.id });\n }\n let resourceApi = new ResourceApi(currentState, resource);\n currentState.emitter.trigger('resourceAdd', {\n resource: resourceApi,\n revert: () => {\n this.dispatch({\n type: 'REMOVE_RESOURCE',\n resourceId: resource.id,\n });\n },\n });\n return resourceApi;\n};\nCalendarImpl.prototype.getResourceById = function (id) {\n id = String(id);\n let currentState = this.getCurrentData(); // eslint-disable-line react/no-this-in-sfc\n if (currentState.resourceStore) { // guard against calendar with no resource functionality\n let rawResource = currentState.resourceStore[id];\n if (rawResource) {\n return new ResourceApi(currentState, rawResource);\n }\n }\n return null;\n};\nCalendarImpl.prototype.getResources = function () {\n let currentState = this.getCurrentData();\n let { resourceStore } = currentState;\n let resourceApis = [];\n if (resourceStore) { // guard against calendar with no resource functionality\n for (let resourceId in resourceStore) {\n resourceApis.push(new ResourceApi(currentState, resourceStore[resourceId]));\n }\n }\n return resourceApis;\n};\nCalendarImpl.prototype.getTopLevelResources = function () {\n let currentState = this.getCurrentData();\n let { resourceStore } = currentState;\n let resourceApis = [];\n if (resourceStore) { // guard against calendar with no resource functionality\n for (let resourceId in resourceStore) {\n if (!resourceStore[resourceId].parentId) {\n resourceApis.push(new ResourceApi(currentState, resourceStore[resourceId]));\n }\n }\n }\n return resourceApis;\n};\nCalendarImpl.prototype.refetchResources = function () {\n this.dispatch({\n type: 'REFETCH_RESOURCES',\n });\n};\nfunction transformDatePoint(dateSpan, context) {\n return dateSpan.resourceId ?\n { resource: context.calendarApi.getResourceById(dateSpan.resourceId) } :\n {};\n}\nfunction transformDateSpan(dateSpan, context) {\n return dateSpan.resourceId ?\n { resource: context.calendarApi.getResourceById(dateSpan.resourceId) } :\n {};\n}\n\nfunction isPropsValidWithResources(combinedProps, context) {\n let splitter = new ResourceSplitter();\n let sets = splitter.splitProps(Object.assign(Object.assign({}, combinedProps), { resourceStore: context.getCurrentData().resourceStore }));\n for (let resourceId in sets) {\n let props = sets[resourceId];\n // merge in event data from the non-resource segment\n if (resourceId && sets['']) { // current segment is not the non-resource one, and there IS a non-resource one\n props = Object.assign(Object.assign({}, props), { eventStore: mergeEventStores(sets[''].eventStore, props.eventStore), eventUiBases: Object.assign(Object.assign({}, sets[''].eventUiBases), props.eventUiBases) });\n }\n if (!isPropsValid(props, context, { resourceId }, filterConfig.bind(null, resourceId))) {\n return false;\n }\n }\n return true;\n}\nfunction filterConfig(resourceId, config) {\n return Object.assign(Object.assign({}, config), { constraints: filterConstraints(resourceId, config.constraints) });\n}\nfunction filterConstraints(resourceId, constraints) {\n return constraints.map((constraint) => {\n let defs = constraint.defs;\n if (defs) { // we are dealing with an EventStore\n // if any of the events define constraints to resources that are NOT this resource,\n // then this resource is unconditionally prohibited, which is what a `false` value does.\n for (let defId in defs) {\n let resourceIds = defs[defId].resourceIds;\n if (resourceIds.length && resourceIds.indexOf(resourceId) === -1) { // TODO: use a hash?!!! (for other reasons too)\n return false;\n }\n }\n }\n return constraint;\n });\n}\n\nfunction transformExternalDef(dateSpan) {\n return dateSpan.resourceId ?\n { resourceId: dateSpan.resourceId } :\n {};\n}\n\nconst optionChangeHandlers = {\n resources: handleResources,\n};\nfunction handleResources(newSourceInput, context) {\n let oldSourceInput = context.getCurrentData().resourceSource._raw;\n if (oldSourceInput !== newSourceInput) {\n context.dispatch({\n type: 'RESET_RESOURCE_SOURCE',\n resourceSourceInput: newSourceInput,\n });\n }\n}\n\nconst OPTION_REFINERS = {\n initialResources: identity,\n resources: identity,\n eventResourceEditable: Boolean,\n refetchResourcesOnNavigate: Boolean,\n resourceOrder: parseFieldSpecs,\n filterResourcesWithEvents: Boolean,\n resourceGroupField: String,\n resourceAreaWidth: identity,\n resourceAreaColumns: identity,\n resourcesInitiallyExpanded: Boolean,\n datesAboveResources: Boolean,\n needsResourceData: Boolean,\n resourceAreaHeaderClassNames: identity,\n resourceAreaHeaderContent: identity,\n resourceAreaHeaderDidMount: identity,\n resourceAreaHeaderWillUnmount: identity,\n resourceGroupLabelClassNames: identity,\n resourceGroupLabelContent: identity,\n resourceGroupLabelDidMount: identity,\n resourceGroupLabelWillUnmount: identity,\n resourceLabelClassNames: identity,\n resourceLabelContent: identity,\n resourceLabelDidMount: identity,\n resourceLabelWillUnmount: identity,\n resourceLaneClassNames: identity,\n resourceLaneContent: identity,\n resourceLaneDidMount: identity,\n resourceLaneWillUnmount: identity,\n resourceGroupLaneClassNames: identity,\n resourceGroupLaneContent: identity,\n resourceGroupLaneDidMount: identity,\n resourceGroupLaneWillUnmount: identity,\n};\nconst LISTENER_REFINERS = {\n resourcesSet: identity,\n resourceAdd: identity,\n resourceChange: identity,\n resourceRemove: identity,\n};\n\nEventImpl.prototype.getResources = function () {\n let { calendarApi } = this._context;\n return this._def.resourceIds.map((resourceId) => calendarApi.getResourceById(resourceId));\n};\nEventImpl.prototype.setResources = function (resources) {\n let resourceIds = [];\n // massage resources -> resourceIds\n for (let resource of resources) {\n let resourceId = null;\n if (typeof resource === 'string') {\n resourceId = resource;\n }\n else if (typeof resource === 'number') {\n resourceId = String(resource);\n }\n else if (resource instanceof ResourceApi) {\n resourceId = resource.id; // guaranteed to always have an ID. hmmm\n }\n else {\n console.warn('unknown resource type: ' + resource);\n }\n if (resourceId) {\n resourceIds.push(resourceId);\n }\n }\n this.mutate({\n standardProps: {\n resourceIds,\n },\n });\n};\n\nregisterResourceSourceDef({\n ignoreRange: true,\n parseMeta(refined) {\n if (Array.isArray(refined.resources)) {\n return refined.resources;\n }\n return null;\n },\n fetch(arg, successCallback) {\n successCallback({\n rawResources: arg.resourceSource.meta,\n });\n },\n});\n\nregisterResourceSourceDef({\n parseMeta(refined) {\n if (typeof refined.resources === 'function') {\n return refined.resources;\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const dateEnv = arg.context.dateEnv;\n const func = arg.resourceSource.meta;\n const publicArg = arg.range ? {\n start: dateEnv.toDate(arg.range.start),\n end: dateEnv.toDate(arg.range.end),\n startStr: dateEnv.formatIso(arg.range.start),\n endStr: dateEnv.formatIso(arg.range.end),\n timeZone: dateEnv.timeZone,\n } : {};\n unpromisify(func.bind(null, publicArg), (rawResources) => successCallback({ rawResources }), errorCallback);\n },\n});\n\nregisterResourceSourceDef({\n parseMeta(refined) {\n if (refined.url) {\n return {\n url: refined.url,\n method: (refined.method || 'GET').toUpperCase(),\n extraParams: refined.extraParams,\n };\n }\n return null;\n },\n fetch(arg, successCallback, errorCallback) {\n const meta = arg.resourceSource.meta;\n const requestParams = buildRequestParams(meta, arg.range, arg.context);\n requestJson(meta.method, meta.url, requestParams).then(([rawResources, response]) => {\n successCallback({ rawResources, response });\n }, errorCallback);\n },\n});\n// TODO: somehow consolidate with event json feed\nfunction buildRequestParams(meta, range, context) {\n let { dateEnv, options } = context;\n let startParam;\n let endParam;\n let timeZoneParam;\n let customRequestParams;\n let params = {};\n if (range) {\n startParam = meta.startParam;\n if (startParam == null) {\n startParam = options.startParam;\n }\n endParam = meta.endParam;\n if (endParam == null) {\n endParam = options.endParam;\n }\n timeZoneParam = meta.timeZoneParam;\n if (timeZoneParam == null) {\n timeZoneParam = options.timeZoneParam;\n }\n params[startParam] = dateEnv.formatIso(range.start);\n params[endParam] = dateEnv.formatIso(range.end);\n if (dateEnv.timeZone !== 'local') {\n params[timeZoneParam] = dateEnv.timeZone;\n }\n }\n // retrieve any outbound GET/POST data from the options\n if (typeof meta.extraParams === 'function') {\n // supplied as a function that returns a key/value object\n customRequestParams = meta.extraParams();\n }\n else {\n // probably supplied as a straight key/value object\n customRequestParams = meta.extraParams || {};\n }\n Object.assign(params, customRequestParams);\n return params;\n}\n\nvar index = createPlugin({\n name: '@fullcalendar/resource',\n premiumReleaseDate: '2025-04-02',\n deps: [premiumCommonPlugin],\n reducers: [reduceResources],\n isLoadingFuncs: [\n (state) => state.resourceSource && state.resourceSource.isFetching,\n ],\n eventRefiners: EVENT_REFINERS,\n eventDefMemberAdders: [generateEventDefResourceMembers],\n isDraggableTransformers: [transformIsDraggable],\n eventDragMutationMassagers: [massageEventDragMutation],\n eventDefMutationAppliers: [applyEventDefMutation],\n dateSelectionTransformers: [transformDateSelectionJoin],\n datePointTransforms: [transformDatePoint],\n dateSpanTransforms: [transformDateSpan],\n viewPropsTransformers: [ResourceDataAdder, ResourceEventConfigAdder],\n isPropsValid: isPropsValidWithResources,\n externalDefTransforms: [transformExternalDef],\n eventDropTransformers: [transformEventDrop],\n optionChangeHandlers,\n optionRefiners: OPTION_REFINERS,\n listenerRefiners: LISTENER_REFINERS,\n propSetHandlers: { resourceStore: handleResourceStore },\n});\n\nexport { index as default };\n"],"names":["computeResourceEditable","eventDef","context","resourceEditable","source","sourceId","getCurrentData","eventSources","extendedProps","options","eventResourceEditable","editable","filterResources","resourceStore","doFilterResourcesWithEvents","eventStore","activeRange","instancesInRange","eventInstances","filterHash","eventInstance","rangesIntersect","range","filterEventInstancesInRange","instances","hasEvents","eventDefs","instanceId","instance","resourceId","defId","resourceIds","computeHasEvents","defs","Object","assign","res","resource","parentId","computeAncestorHasEvents","buildResourceEventUis","mapHash","ui","injectResourceEventUis","eventUiBases","resourceEventUis","eventUi","origEventUi","parts","unshift","combineEventUis","injectResourceEventUi","registerResourceSourceDef","def","push","getResourceSourceDef","id","getResourceSourceDefs","RESOURCE_SOURCE_REFINERS","String","resources","identity","url","method","startParam","endParam","timeZoneParam","extraParams","parseResourceSource","input","inputObj","Array","isArray","refined","extra","refineProps","props","propName","console","warn","warnUnknownProps","metaRes","i","length","meta","parseMeta","sourceDefId","buildResourceSourceMeta","_raw","guid","publicId","isFetching","latestFetchId","fetchRange","reduceResourceSource","action","dateProfile","createSource","initialResources","refetchResourcesOnNavigate","type","resourceSourceInput","Boolean","ignoreRange","doesSourceIgnoreRange","rangesEqual","fetchSource","handleRangeChange","fetchId","receiveResponse","sourceDef","fetch","resourceSource","dispatch","rawResources","error","reduceResourceStore","store","existingStore","inputs","nextStore","parseResource","receiveRawResources","additions","resourceHash","newStore","childResourceId","removeResource","name","value","existingResource","setResourceProp","propValue","setResourceExtendedProp","EVENT_REFINERS","filterConfig","config","constraints","filterConstraints","map","constraint","indexOf","CalendarImpl","prototype","addResource","scrollTo","currentState","this","ResourceApi","_resource","trigger","resourceApi","emitter","revert","getResourceById","rawResource","getResources","resourceApis","getTopLevelResources","refetchResources","optionChangeHandlers","newSourceInput","OPTION_REFINERS","resourceOrder","parseFieldSpecs","filterResourcesWithEvents","resourceGroupField","resourceAreaWidth","resourceAreaColumns","resourcesInitiallyExpanded","datesAboveResources","needsResourceData","resourceAreaHeaderClassNames","resourceAreaHeaderContent","resourceAreaHeaderDidMount","resourceAreaHeaderWillUnmount","resourceGroupLabelClassNames","resourceGroupLabelContent","resourceGroupLabelDidMount","resourceGroupLabelWillUnmount","resourceLabelClassNames","resourceLabelContent","resourceLabelDidMount","resourceLabelWillUnmount","resourceLaneClassNames","resourceLaneContent","resourceLaneDidMount","resourceLaneWillUnmount","resourceGroupLaneClassNames","resourceGroupLaneContent","resourceGroupLaneDidMount","resourceGroupLaneWillUnmount","LISTENER_REFINERS","resourcesSet","resourceAdd","resourceChange","resourceRemove","EventImpl","calendarApi","_context","_def","setResources","mutate","standardProps","arg","successCallback","errorCallback","dateEnv","func","publicArg","start","toDate","end","startStr","formatIso","endStr","timeZone","unpromisify","bind","toUpperCase","requestParams","customRequestParams","params","buildRequestParams","requestJson","then","response","index","createPlugin","premiumReleaseDate","deps","premiumCommonPlugin","reducers","state","resourceEntityExpansions","expansions","isExpanded","reduceResourceEntityExpansions","isLoadingFuncs","eventRefiners","eventDefMemberAdders","items","item","concat","isDraggableTransformers","val","viewSpecs","currentViewType","optionDefaults","eventDragMutationMassagers","eventMutation","hit0","hit1","resource0","dateSpan","resource1","resourceMutation","matchResourceId","setResourceId","eventDefMutationAppliers","mutation","slice","splice","dateSelectionTransformers","resourceId0","resourceId1","datePointTransforms","dateSpanTransforms","viewPropsTransformers","constructor","memoize","transform","viewProps","calendarProps","viewSpec","isPropsEqual","isPropsValid","combinedProps","sets","ResourceSplitter","splitProps","mergeEventStores","externalDefTransforms","eventDropTransformers","oldResource","newResource","optionRefiners","listenerRefiners","propSetHandlers","handleResourceStore"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{aW as e,am as t,B as r,A as s,V as o,z as n,a6 as l,bK as i,bL as a,a as u,ag as c,g as d,U as h,S as g,_ as p,C as f,bt as C,bJ as v,n as S,aQ as b,ao as x,an as m}from"../core/internal-common.js";import{createElement as E,Fragment as y}from"../../preact/dist/preact.mjs.js";const D="_fc:",R={id:String,parentId:String,children:S,title:String,businessHours:S,extendedProps:S,eventEditable:Boolean,eventStartEditable:Boolean,eventDurationEditable:Boolean,eventConstraint:S,eventOverlap:Boolean,eventAllow:S,eventClassNames:b,eventBackgroundColor:String,eventBorderColor:String,eventTextColor:String,eventColor:String};function j(e,t="",r,s){let{refined:o,extra:n}=c(e,R),l={id:o.id||D+d(),parentId:o.parentId||t,title:o.title||"",businessHours:o.businessHours?h(o.businessHours,s):null,ui:g({editable:o.eventEditable,startEditable:o.eventStartEditable,durationEditable:o.eventDurationEditable,constraint:o.eventConstraint,overlap:o.eventOverlap,allow:o.eventAllow,classNames:o.eventClassNames,backgroundColor:o.eventBackgroundColor,borderColor:o.eventBorderColor,textColor:o.eventTextColor,color:o.eventColor},s),extendedProps:Object.assign(Object.assign({},n),o.extendedProps)};if(Object.freeze(l.ui.classNames),Object.freeze(l.extendedProps),r[l.id]);else if(r[l.id]=l,o.children)for(let e of o.children)j(e,l.id,r,s);return l}function _(e){return 0===e.indexOf(D)?"":e}class I{constructor(e,t){this._context=e,this._resource=t}setProp(e,t){let r=this._resource;this._context.dispatch({type:"SET_RESOURCE_PROP",resourceId:r.id,propName:e,propValue:t}),this.sync(r)}setExtendedProp(e,t){let r=this._resource;this._context.dispatch({type:"SET_RESOURCE_EXTENDED_PROP",resourceId:r.id,propName:e,propValue:t}),this.sync(r)}sync(e){let t=this._context,r=e.id;this._resource=t.getCurrentData().resourceStore[r],t.emitter.trigger("resourceChange",{oldResource:new I(t,e),resource:this,revert(){t.dispatch({type:"ADD_RESOURCE",resourceHash:{[r]:e}})}})}remove(){let e=this._context,t=this._resource,r=t.id;e.dispatch({type:"REMOVE_RESOURCE",resourceId:r}),e.emitter.trigger("resourceRemove",{resource:this,revert(){e.dispatch({type:"ADD_RESOURCE",resourceHash:{[r]:t}})}})}getParent(){let e=this._context,t=this._resource.parentId;return t?new I(e,e.getCurrentData().resourceStore[t]):null}getChildren(){let e=this._resource.id,t=this._context,{resourceStore:r}=t.getCurrentData(),s=[];for(let o in r)r[o].parentId===e&&s.push(new I(t,r[o]));return s}getEvents(){let e=this._resource.id,t=this._context,{defs:r,instances:s}=t.getCurrentData().eventStore,o=[];for(let n in s){let l=s[n],i=r[l.defId];-1!==i.resourceIds.indexOf(e)&&o.push(new p(t,i,l))}return o}get id(){return _(this._resource.id)}get title(){return this._resource.title}get eventConstraint(){return this._resource.ui.constraints[0]||null}get eventOverlap(){return this._resource.ui.overlap}get eventAllow(){return this._resource.ui.allows[0]||null}get eventBackgroundColor(){return this._resource.ui.backgroundColor}get eventBorderColor(){return this._resource.ui.borderColor}get eventTextColor(){return this._resource.ui.textColor}get eventClassNames(){return this._resource.ui.classNames}get extendedProps(){return this._resource.extendedProps}toPlainObject(e={}){let t=this._resource,{ui:r}=t,s=this.id,o={};return s&&(o.id=s),t.title&&(o.title=t.title),e.collapseEventColor&&r.backgroundColor&&r.backgroundColor===r.borderColor?o.eventColor=r.backgroundColor:(r.backgroundColor&&(o.eventBackgroundColor=r.backgroundColor),r.borderColor&&(o.eventBorderColor=r.borderColor)),r.textColor&&(o.eventTextColor=r.textColor),r.classNames.length&&(o.eventClassNames=r.classNames),Object.keys(t.extendedProps).length&&(e.collapseExtendedProps?Object.assign(o,t.extendedProps):o.extendedProps=t.extendedProps),o}toJSON(){return this.toPlainObject()}}class O extends e{getKeyInfo(e){return Object.assign({"":{}},e.resourceStore)}getKeysForDateSpan(e){return[e.resourceId||""]}getKeysForEventDef(e){let t=e.resourceIds;return t.length?t:[""]}}const w=t("id,title");function P(e,t){let{emitter:r}=t;r.hasHandlers("resourcesSet")&&r.trigger("resourcesSet",function(e,t){let r=[];for(let s in e)r.push(new I(t,e[s]));return r}(e,t))}function k(e){return{resource:new I(e.context,e.resource)}}class T extends r{constructor(){super(...arguments),this.refineRenderProps=s(A)}render(){const{props:e}=this;return E(o.Consumer,null,(t=>{let{options:r}=t,s=this.refineRenderProps({resource:e.resource,date:e.date,context:t});return E(f,Object.assign({},e,{elAttrs:Object.assign(Object.assign({},e.elAttrs),{"data-resource-id":e.resource.id,"data-date":e.date?C(e.date):void 0}),renderProps:s,generatorName:"resourceLabelContent",customGenerator:r.resourceLabelContent,defaultGenerator:B,classNameGenerator:r.resourceLabelClassNames,didMount:r.resourceLabelDidMount,willUnmount:r.resourceLabelWillUnmount}))}))}}function B(e){return e.resource.title||e.resource.id}function A(e){return{resource:new I(e.context,e.resource),date:e.date?e.context.dateEnv.toDate(e.date):null,view:e.context.viewApi}}class F extends r{render(){let{props:e}=this;return E(T,{elTag:"th",elClasses:["fc-col-header-cell","fc-resource"],elAttrs:{role:"columnheader",colSpan:e.colSpan},resource:e.resource,date:e.date},(t=>E("div",{className:"fc-scrollgrid-sync-inner"},E(t,{elTag:"span",elClasses:["fc-col-header-cell-cushion",e.isSticky&&"fc-sticky"]}))))}}class N extends r{constructor(){super(...arguments),this.buildDateFormat=n(H)}render(){let{props:e,context:t}=this,r=this.buildDateFormat(t.options.dayHeaderFormat,e.datesRepDistinctDays,e.dates.length);return E(l,{unit:"day"},((s,o)=>1===e.dates.length?this.renderResourceRow(e.resources,e.dates[0]):t.options.datesAboveResources?this.renderDayAndResourceRows(e.dates,r,o,e.resources):this.renderResourceAndDayRows(e.resources,e.dates,r,o)))}renderResourceRow(e,t){let r=e.map((e=>E(F,{key:e.id,resource:e,colSpan:1,date:t})));return this.buildTr(r,"resources")}renderDayAndResourceRows(e,t,r,s){let o=[],n=[];for(let l of e){o.push(this.renderDateCell(l,t,r,s.length,null,!0));for(let e of s)n.push(E(F,{key:e.id+":"+l.toISOString(),resource:e,colSpan:1,date:l}))}return E(y,null,this.buildTr(o,"day"),this.buildTr(n,"resources"))}renderResourceAndDayRows(e,t,r,s){let o=[],n=[];for(let l of e){o.push(E(F,{key:l.id,resource:l,colSpan:t.length,isSticky:!0}));for(let e of t)n.push(this.renderDateCell(e,r,s,1,l))}return E(y,null,this.buildTr(o,"resources"),this.buildTr(n,"day"))}renderDateCell(e,t,r,s,o,n){let{props:l}=this,u=o?`:${o.id}`:"",c=o?{resource:new I(this.context,o)}:{},d=o?{"data-resource-id":o.id}:{};return l.datesRepDistinctDays?E(i,{key:e.toISOString()+u,date:e,dateProfile:l.dateProfile,todayRange:r,colCnt:l.dates.length*l.resources.length,dayHeaderFormat:t,colSpan:s,isSticky:n,extraRenderProps:c,extraDataAttrs:d}):E(a,{key:e.getUTCDay()+u,dow:e.getUTCDay(),dayHeaderFormat:t,colSpan:s,isSticky:n,extraRenderProps:c,extraDataAttrs:d})}buildTr(e,t){let{renderIntro:r}=this.props;return e.length||(e=[E("td",{key:0}," ")]),E("tr",{key:t,role:"row"},r&&r(t),e)}}function H(e,t,r){return e||v(t,r)}class U{constructor(e){let t={},r=[];for(let s=0;s<e.length;s+=1){let o=e[s].id;r.push(o),t[o]=s}this.ids=r,this.indicesById=t,this.length=e.length}}class z{constructor(e,t,r){this.dayTableModel=e,this.resources=t,this.context=r,this.resourceIndex=new U(t),this.rowCnt=e.rowCnt,this.colCnt=e.colCnt*t.length,this.cells=this.buildCells()}buildCells(){let{rowCnt:e,dayTableModel:t,resources:r}=this,s=[];for(let o=0;o<e;o+=1){let e=[];for(let s=0;s<t.colCnt;s+=1)for(let n=0;n<r.length;n+=1){let l=r[n],i={resource:new I(this.context,l)},a={"data-resource-id":l.id},u=["fc-resource"],c={resourceId:l.id},d=t.cells[o][s].date;e[this.computeCol(s,n)]={key:l.id+":"+d.toISOString(),date:d,extraRenderProps:i,extraDataAttrs:a,extraClassNames:u,extraDateSpan:c}}s.push(e)}return s}}class K extends z{computeCol(e,t){return t*this.dayTableModel.colCnt+e}computeColRanges(e,t,r){return[{firstCol:this.computeCol(e,r),lastCol:this.computeCol(t,r),isStart:!0,isEnd:!0}]}}class M extends z{computeCol(e,t){return e*this.resources.length+t}computeColRanges(e,t,r){let s=[];for(let o=e;o<=t;o+=1){let n=this.computeCol(o,r);s.push({firstCol:n,lastCol:n,isStart:o===e,isEnd:o===t})}return s}}const L=[];class V{constructor(){this.joinDateSelection=n(this.joinSegs),this.joinBusinessHours=n(this.joinSegs),this.joinFgEvents=n(this.joinSegs),this.joinBgEvents=n(this.joinSegs),this.joinEventDrags=n(this.joinInteractions),this.joinEventResizes=n(this.joinInteractions)}joinProps(e,t){let r=[],s=[],o=[],n=[],l=[],i=[],a="",u=t.resourceIndex.ids.concat([""]);for(let t of u){let u=e[t];r.push(u.dateSelectionSegs),s.push(t?u.businessHourSegs:L),o.push(t?u.fgEventSegs:L),n.push(u.bgEventSegs),l.push(u.eventDrag),i.push(u.eventResize),a=a||u.eventSelection}return{dateSelectionSegs:this.joinDateSelection(t,...r),businessHourSegs:this.joinBusinessHours(t,...s),fgEventSegs:this.joinFgEvents(t,...o),bgEventSegs:this.joinBgEvents(t,...n),eventDrag:this.joinEventDrags(t,...l),eventResize:this.joinEventResizes(t,...i),eventSelection:a}}joinSegs(e,...t){let r=e.resources.length,s=[];for(let o=0;o<r;o+=1){for(let r of t[o])s.push(...this.transformSeg(r,e,o));for(let n of t[r])s.push(...this.transformSeg(n,e,o))}return s}expandSegs(e,t){let r=e.resources.length,s=[];for(let o=0;o<r;o+=1)for(let r of t)s.push(...this.transformSeg(r,e,o));return s}joinInteractions(e,...t){let r=e.resources.length,s={},o=[],n=!1,l=!1;for(let i=0;i<r;i+=1){let a=t[i];if(a){n=!0;for(let t of a.segs)o.push(...this.transformSeg(t,e,i));Object.assign(s,a.affectedInstances),l=l||a.isEvent}if(t[r])for(let s of t[r].segs)o.push(...this.transformSeg(s,e,i))}return n?{affectedInstances:s,segs:o,isEvent:l}:null}}class G extends e{getKeyInfo(e){let{resourceDayTableModel:t}=e,r=u(t.resourceIndex.indicesById,(e=>t.resources[e]));return r[""]={},r}getKeysForDateSpan(e){return[e.resourceId||""]}getKeysForEventDef(e){let t=e.resourceIds;return t.length?t:[""]}}function J(e,t){return W(e,[],t,!1,{},!0).map((e=>e.resource))}function W(e,t,r,s,o,n){let l=function(e,t,r,s){let o=function(e,t){let r={};for(let t in e){let s=e[t];r[t]={resource:s,resourceFields:q(s),children:[]}}for(let s in e){let o=e[s];if(o.parentId){let e=r[o.parentId];e&&$(r[s],e.children,t)}}return r}(e,s),n=[];for(let e in o){let l=o[e];l.resource.parentId||X(l,n,r,0,t,s)}return n}(e,s?-1:1,t,r),i=[];return Q(l,i,s,[],0,o,n),i}function Q(e,t,r,s,o,n,l){for(let i=0;i<e.length;i+=1){let a=e[i],u=a.group;if(u)if(r){let e=t.length,i=s.length;if(Q(a.children,t,r,s.concat(0),o,n,l),e<t.length){let r=t[e];(r.rowSpans=r.rowSpans.slice())[i]=t.length-e}}else{let e=u.spec.field+":"+u.value,i=null!=n[e]?n[e]:l;t.push({id:e,group:u,isExpanded:i}),i&&Q(a.children,t,r,s,o+1,n,l)}else if(a.resource){let e=a.resource.id,i=null!=n[e]?n[e]:l;t.push({id:e,rowSpans:s,depth:o,isExpanded:i,hasChildren:Boolean(a.children.length),resource:a.resource,resourceFields:a.resourceFields}),i&&Q(a.children,t,r,s,o+1,n,l)}}}function X(e,t,r,s,o,n){if(r.length&&(-1===o||s<=o)){let l=function(e,t,r){let s,o,n=e.resourceFields[r.field];if(r.order)for(o=0;o<t.length;o+=1){let e=t[o];if(e.group){let t=x(n,e.group.value)*r.order;if(0===t){s=e;break}if(t<0)break}}else for(o=0;o<t.length;o+=1){let e=t[o];if(e.group&&n===e.group.value){s=e;break}}s||(s={group:{value:n,spec:r},children:[]},t.splice(o,0,s));return s}(e,t,r[0]);X(e,l.children,r.slice(1),s+1,o,n)}else $(e,t,n)}function $(e,t,r){let s;for(s=0;s<t.length;s+=1){if(m(t[s].resourceFields,e.resourceFields,r)>0)break}t.splice(s,0,e)}function q(e){let t=Object.assign(Object.assign(Object.assign({},e.extendedProps),e.ui),e);return delete t.ui,delete t.extendedProps,t}function Y(e,t){return e.spec===t.spec&&e.value===t.value}export{z as A,w as D,I as R,V,O as a,N as b,K as c,M as d,G as e,J as f,_ as g,P as h,Y as i,W as j,q as k,T as l,j as p,k as r};
2
+ //# sourceMappingURL=internal-common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal-common.js","sources":["../../../../../node_modules/@fullcalendar/resource/internal-common.js"],"sourcesContent":["import { refineProps, guid, parseBusinessHours, createEventUi, identity, parseClassNames, EventImpl, Splitter, parseFieldSpecs, BaseComponent, memoizeObjArg, ViewContextType, ContentContainer, formatDayString, memoize, NowTimer, TableDateCell, TableDowCell, computeFallbackHeaderFormat, mapHash, flexibleCompare, compareByFieldSpecs } from '@fullcalendar/core/internal.js';\nimport { createElement, Fragment } from '@fullcalendar/core/preact.js';\n\nconst PRIVATE_ID_PREFIX = '_fc:';\nconst RESOURCE_REFINERS = {\n id: String,\n parentId: String,\n children: identity,\n title: String,\n businessHours: identity,\n extendedProps: identity,\n // event-ui\n eventEditable: Boolean,\n eventStartEditable: Boolean,\n eventDurationEditable: Boolean,\n eventConstraint: identity,\n eventOverlap: Boolean,\n eventAllow: identity,\n eventClassNames: parseClassNames,\n eventBackgroundColor: String,\n eventBorderColor: String,\n eventTextColor: String,\n eventColor: String,\n};\n/*\nneeds a full store so that it can populate children too\n*/\nfunction parseResource(raw, parentId = '', store, context) {\n let { refined, extra } = refineProps(raw, RESOURCE_REFINERS);\n let resource = {\n id: refined.id || (PRIVATE_ID_PREFIX + guid()),\n parentId: refined.parentId || parentId,\n title: refined.title || '',\n businessHours: refined.businessHours ? parseBusinessHours(refined.businessHours, context) : null,\n ui: createEventUi({\n editable: refined.eventEditable,\n startEditable: refined.eventStartEditable,\n durationEditable: refined.eventDurationEditable,\n constraint: refined.eventConstraint,\n overlap: refined.eventOverlap,\n allow: refined.eventAllow,\n classNames: refined.eventClassNames,\n backgroundColor: refined.eventBackgroundColor,\n borderColor: refined.eventBorderColor,\n textColor: refined.eventTextColor,\n color: refined.eventColor,\n }, context),\n extendedProps: Object.assign(Object.assign({}, extra), refined.extendedProps),\n };\n // help out ResourceApi from having user modify props\n Object.freeze(resource.ui.classNames);\n Object.freeze(resource.extendedProps);\n if (store[resource.id]) ;\n else {\n store[resource.id] = resource;\n if (refined.children) {\n for (let childInput of refined.children) {\n parseResource(childInput, resource.id, store, context);\n }\n }\n }\n return resource;\n}\n/*\nTODO: use this in more places\n*/\nfunction getPublicId(id) {\n if (id.indexOf(PRIVATE_ID_PREFIX) === 0) {\n return '';\n }\n return id;\n}\n\nclass ResourceApi {\n constructor(_context, _resource) {\n this._context = _context;\n this._resource = _resource;\n }\n setProp(name, value) {\n let oldResource = this._resource;\n this._context.dispatch({\n type: 'SET_RESOURCE_PROP',\n resourceId: oldResource.id,\n propName: name,\n propValue: value,\n });\n this.sync(oldResource);\n }\n setExtendedProp(name, value) {\n let oldResource = this._resource;\n this._context.dispatch({\n type: 'SET_RESOURCE_EXTENDED_PROP',\n resourceId: oldResource.id,\n propName: name,\n propValue: value,\n });\n this.sync(oldResource);\n }\n sync(oldResource) {\n let context = this._context;\n let resourceId = oldResource.id;\n // TODO: what if dispatch didn't complete synchronously?\n this._resource = context.getCurrentData().resourceStore[resourceId];\n context.emitter.trigger('resourceChange', {\n oldResource: new ResourceApi(context, oldResource),\n resource: this,\n revert() {\n context.dispatch({\n type: 'ADD_RESOURCE',\n resourceHash: {\n [resourceId]: oldResource,\n },\n });\n },\n });\n }\n remove() {\n let context = this._context;\n let internalResource = this._resource;\n let resourceId = internalResource.id;\n context.dispatch({\n type: 'REMOVE_RESOURCE',\n resourceId,\n });\n context.emitter.trigger('resourceRemove', {\n resource: this,\n revert() {\n context.dispatch({\n type: 'ADD_RESOURCE',\n resourceHash: {\n [resourceId]: internalResource,\n },\n });\n },\n });\n }\n getParent() {\n let context = this._context;\n let parentId = this._resource.parentId;\n if (parentId) {\n return new ResourceApi(context, context.getCurrentData().resourceStore[parentId]);\n }\n return null;\n }\n getChildren() {\n let thisResourceId = this._resource.id;\n let context = this._context;\n let { resourceStore } = context.getCurrentData();\n let childApis = [];\n for (let resourceId in resourceStore) {\n if (resourceStore[resourceId].parentId === thisResourceId) {\n childApis.push(new ResourceApi(context, resourceStore[resourceId]));\n }\n }\n return childApis;\n }\n /*\n this is really inefficient!\n TODO: make EventApi::resourceIds a hash or keep an index in the Calendar's state\n */\n getEvents() {\n let thisResourceId = this._resource.id;\n let context = this._context;\n let { defs, instances } = context.getCurrentData().eventStore;\n let eventApis = [];\n for (let instanceId in instances) {\n let instance = instances[instanceId];\n let def = defs[instance.defId];\n if (def.resourceIds.indexOf(thisResourceId) !== -1) { // inefficient!!!\n eventApis.push(new EventImpl(context, def, instance));\n }\n }\n return eventApis;\n }\n get id() { return getPublicId(this._resource.id); }\n get title() { return this._resource.title; }\n get eventConstraint() { return this._resource.ui.constraints[0] || null; } // TODO: better type\n get eventOverlap() { return this._resource.ui.overlap; }\n get eventAllow() { return this._resource.ui.allows[0] || null; } // TODO: better type\n get eventBackgroundColor() { return this._resource.ui.backgroundColor; }\n get eventBorderColor() { return this._resource.ui.borderColor; }\n get eventTextColor() { return this._resource.ui.textColor; }\n // NOTE: user can't modify these because Object.freeze was called in event-def parsing\n get eventClassNames() { return this._resource.ui.classNames; }\n get extendedProps() { return this._resource.extendedProps; }\n toPlainObject(settings = {}) {\n let internal = this._resource;\n let { ui } = internal;\n let publicId = this.id;\n let res = {};\n if (publicId) {\n res.id = publicId;\n }\n if (internal.title) {\n res.title = internal.title;\n }\n if (settings.collapseEventColor && ui.backgroundColor && ui.backgroundColor === ui.borderColor) {\n res.eventColor = ui.backgroundColor;\n }\n else {\n if (ui.backgroundColor) {\n res.eventBackgroundColor = ui.backgroundColor;\n }\n if (ui.borderColor) {\n res.eventBorderColor = ui.borderColor;\n }\n }\n if (ui.textColor) {\n res.eventTextColor = ui.textColor;\n }\n if (ui.classNames.length) {\n res.eventClassNames = ui.classNames;\n }\n if (Object.keys(internal.extendedProps).length) {\n if (settings.collapseExtendedProps) {\n Object.assign(res, internal.extendedProps);\n }\n else {\n res.extendedProps = internal.extendedProps;\n }\n }\n return res;\n }\n toJSON() {\n return this.toPlainObject();\n }\n}\nfunction buildResourceApis(resourceStore, context) {\n let resourceApis = [];\n for (let resourceId in resourceStore) {\n resourceApis.push(new ResourceApi(context, resourceStore[resourceId]));\n }\n return resourceApis;\n}\n\n/*\nsplits things BASED OFF OF which resources they are associated with.\ncreates a '' entry which is when something has NO resource.\n*/\nclass ResourceSplitter extends Splitter {\n getKeyInfo(props) {\n return Object.assign({ '': {} }, props.resourceStore);\n }\n getKeysForDateSpan(dateSpan) {\n return [dateSpan.resourceId || ''];\n }\n getKeysForEventDef(eventDef) {\n let resourceIds = eventDef.resourceIds;\n if (!resourceIds.length) {\n return [''];\n }\n return resourceIds;\n }\n}\n\nconst DEFAULT_RESOURCE_ORDER = parseFieldSpecs('id,title');\nfunction handleResourceStore(resourceStore, calendarData) {\n let { emitter } = calendarData;\n if (emitter.hasHandlers('resourcesSet')) {\n emitter.trigger('resourcesSet', buildResourceApis(resourceStore, calendarData));\n }\n}\n\nfunction refineRenderProps$1(input) {\n return {\n resource: new ResourceApi(input.context, input.resource),\n };\n}\n\n// TODO: not used for Spreadsheet. START USING. difficult because of col-specific rendering props\nclass ResourceLabelContainer extends BaseComponent {\n constructor() {\n super(...arguments);\n this.refineRenderProps = memoizeObjArg(refineRenderProps);\n }\n render() {\n const { props } = this;\n return (createElement(ViewContextType.Consumer, null, (context) => {\n let { options } = context;\n let renderProps = this.refineRenderProps({\n resource: props.resource,\n date: props.date,\n context,\n });\n return (createElement(ContentContainer, Object.assign({}, props, { elAttrs: Object.assign(Object.assign({}, props.elAttrs), { 'data-resource-id': props.resource.id, 'data-date': props.date ? formatDayString(props.date) : undefined }), renderProps: renderProps, generatorName: \"resourceLabelContent\", customGenerator: options.resourceLabelContent, defaultGenerator: renderInnerContent, classNameGenerator: options.resourceLabelClassNames, didMount: options.resourceLabelDidMount, willUnmount: options.resourceLabelWillUnmount })));\n }));\n }\n}\nfunction renderInnerContent(props) {\n return props.resource.title || props.resource.id;\n}\nfunction refineRenderProps(input) {\n return {\n resource: new ResourceApi(input.context, input.resource),\n date: input.date ? input.context.dateEnv.toDate(input.date) : null,\n view: input.context.viewApi,\n };\n}\n\nclass ResourceCell extends BaseComponent {\n render() {\n let { props } = this;\n return (createElement(ResourceLabelContainer, { elTag: \"th\", elClasses: ['fc-col-header-cell', 'fc-resource'], elAttrs: {\n role: 'columnheader',\n colSpan: props.colSpan,\n }, resource: props.resource, date: props.date }, (InnerContent) => (createElement(\"div\", { className: \"fc-scrollgrid-sync-inner\" },\n createElement(InnerContent, { elTag: \"span\", elClasses: [\n 'fc-col-header-cell-cushion',\n props.isSticky && 'fc-sticky',\n ] })))));\n }\n}\n\nclass ResourceDayHeader extends BaseComponent {\n constructor() {\n super(...arguments);\n this.buildDateFormat = memoize(buildDateFormat);\n }\n render() {\n let { props, context } = this;\n let dateFormat = this.buildDateFormat(context.options.dayHeaderFormat, props.datesRepDistinctDays, props.dates.length);\n return (createElement(NowTimer, { unit: \"day\" }, (nowDate, todayRange) => {\n if (props.dates.length === 1) {\n return this.renderResourceRow(props.resources, props.dates[0]);\n }\n if (context.options.datesAboveResources) {\n return this.renderDayAndResourceRows(props.dates, dateFormat, todayRange, props.resources);\n }\n return this.renderResourceAndDayRows(props.resources, props.dates, dateFormat, todayRange);\n }));\n }\n renderResourceRow(resources, date) {\n let resourceCells = resources.map((resource) => (createElement(ResourceCell, { key: resource.id, resource: resource, colSpan: 1, date: date })));\n return this.buildTr(resourceCells, 'resources');\n }\n renderDayAndResourceRows(dates, dateFormat, todayRange, resources) {\n let dateCells = [];\n let resourceCells = [];\n for (let date of dates) {\n dateCells.push(this.renderDateCell(date, dateFormat, todayRange, resources.length, null, true));\n for (let resource of resources) {\n resourceCells.push(createElement(ResourceCell, { key: resource.id + ':' + date.toISOString(), resource: resource, colSpan: 1, date: date }));\n }\n }\n return (createElement(Fragment, null,\n this.buildTr(dateCells, 'day'),\n this.buildTr(resourceCells, 'resources')));\n }\n renderResourceAndDayRows(resources, dates, dateFormat, todayRange) {\n let resourceCells = [];\n let dateCells = [];\n for (let resource of resources) {\n resourceCells.push(createElement(ResourceCell, { key: resource.id, resource: resource, colSpan: dates.length, isSticky: true }));\n for (let date of dates) {\n dateCells.push(this.renderDateCell(date, dateFormat, todayRange, 1, resource));\n }\n }\n return (createElement(Fragment, null,\n this.buildTr(resourceCells, 'resources'),\n this.buildTr(dateCells, 'day')));\n }\n // a cell with date text. might have a resource associated with it\n renderDateCell(date, dateFormat, todayRange, colSpan, resource, isSticky) {\n let { props } = this;\n let keyPostfix = resource ? `:${resource.id}` : '';\n let extraRenderProps = resource ? { resource: new ResourceApi(this.context, resource) } : {};\n let extraDataAttrs = resource ? { 'data-resource-id': resource.id } : {};\n return props.datesRepDistinctDays ? (createElement(TableDateCell, { key: date.toISOString() + keyPostfix, date: date, dateProfile: props.dateProfile, todayRange: todayRange, colCnt: props.dates.length * props.resources.length, dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraRenderProps: extraRenderProps, extraDataAttrs: extraDataAttrs })) : (createElement(TableDowCell // we can't leverage the pure-componentness becausae the extra* props are new every time :(\n , { key: date.getUTCDay() + keyPostfix, dow: date.getUTCDay(), dayHeaderFormat: dateFormat, colSpan: colSpan, isSticky: isSticky, extraRenderProps: extraRenderProps, extraDataAttrs: extraDataAttrs }));\n }\n buildTr(cells, key) {\n let { renderIntro } = this.props;\n if (!cells.length) {\n cells = [createElement(\"td\", { key: 0 }, \"\\u00A0\")];\n }\n return (createElement(\"tr\", { key: key, role: \"row\" },\n renderIntro && renderIntro(key),\n cells));\n }\n}\nfunction buildDateFormat(dayHeaderFormat, datesRepDistinctDays, dayCnt) {\n return dayHeaderFormat || computeFallbackHeaderFormat(datesRepDistinctDays, dayCnt);\n}\n\nclass ResourceIndex {\n constructor(resources) {\n let indicesById = {};\n let ids = [];\n for (let i = 0; i < resources.length; i += 1) {\n let id = resources[i].id;\n ids.push(id);\n indicesById[id] = i;\n }\n this.ids = ids;\n this.indicesById = indicesById;\n this.length = resources.length;\n }\n}\n\nclass AbstractResourceDayTableModel {\n constructor(dayTableModel, resources, context) {\n this.dayTableModel = dayTableModel;\n this.resources = resources;\n this.context = context;\n this.resourceIndex = new ResourceIndex(resources);\n this.rowCnt = dayTableModel.rowCnt;\n this.colCnt = dayTableModel.colCnt * resources.length;\n this.cells = this.buildCells();\n }\n buildCells() {\n let { rowCnt, dayTableModel, resources } = this;\n let rows = [];\n for (let row = 0; row < rowCnt; row += 1) {\n let rowCells = [];\n for (let dateCol = 0; dateCol < dayTableModel.colCnt; dateCol += 1) {\n for (let resourceCol = 0; resourceCol < resources.length; resourceCol += 1) {\n let resource = resources[resourceCol];\n let extraRenderProps = { resource: new ResourceApi(this.context, resource) };\n let extraDataAttrs = { 'data-resource-id': resource.id };\n let extraClassNames = ['fc-resource'];\n let extraDateSpan = { resourceId: resource.id };\n let date = dayTableModel.cells[row][dateCol].date;\n rowCells[this.computeCol(dateCol, resourceCol)] = {\n key: resource.id + ':' + date.toISOString(),\n date,\n extraRenderProps,\n extraDataAttrs,\n extraClassNames,\n extraDateSpan,\n };\n }\n }\n rows.push(rowCells);\n }\n return rows;\n }\n}\n\n/*\nresources over dates\n*/\nclass ResourceDayTableModel extends AbstractResourceDayTableModel {\n computeCol(dateI, resourceI) {\n return resourceI * this.dayTableModel.colCnt + dateI;\n }\n /*\n all date ranges are intact\n */\n computeColRanges(dateStartI, dateEndI, resourceI) {\n return [\n {\n firstCol: this.computeCol(dateStartI, resourceI),\n lastCol: this.computeCol(dateEndI, resourceI),\n isStart: true,\n isEnd: true,\n },\n ];\n }\n}\n\n/*\ndates over resources\n*/\nclass DayResourceTableModel extends AbstractResourceDayTableModel {\n computeCol(dateI, resourceI) {\n return dateI * this.resources.length + resourceI;\n }\n /*\n every single day is broken up\n */\n computeColRanges(dateStartI, dateEndI, resourceI) {\n let segs = [];\n for (let i = dateStartI; i <= dateEndI; i += 1) {\n let col = this.computeCol(i, resourceI);\n segs.push({\n firstCol: col,\n lastCol: col,\n isStart: i === dateStartI,\n isEnd: i === dateEndI,\n });\n }\n return segs;\n }\n}\n\nconst NO_SEGS = []; // for memoizing\nclass VResourceJoiner {\n constructor() {\n this.joinDateSelection = memoize(this.joinSegs);\n this.joinBusinessHours = memoize(this.joinSegs);\n this.joinFgEvents = memoize(this.joinSegs);\n this.joinBgEvents = memoize(this.joinSegs);\n this.joinEventDrags = memoize(this.joinInteractions);\n this.joinEventResizes = memoize(this.joinInteractions);\n }\n /*\n propSets also has a '' key for things with no resource\n */\n joinProps(propSets, resourceDayTable) {\n let dateSelectionSets = [];\n let businessHoursSets = [];\n let fgEventSets = [];\n let bgEventSets = [];\n let eventDrags = [];\n let eventResizes = [];\n let eventSelection = '';\n let keys = resourceDayTable.resourceIndex.ids.concat(['']); // add in the all-resource key\n for (let key of keys) {\n let props = propSets[key];\n dateSelectionSets.push(props.dateSelectionSegs);\n businessHoursSets.push(key ? props.businessHourSegs : NO_SEGS); // don't include redundant all-resource businesshours\n fgEventSets.push(key ? props.fgEventSegs : NO_SEGS); // don't include fg all-resource segs\n bgEventSets.push(props.bgEventSegs);\n eventDrags.push(props.eventDrag);\n eventResizes.push(props.eventResize);\n eventSelection = eventSelection || props.eventSelection;\n }\n return {\n dateSelectionSegs: this.joinDateSelection(resourceDayTable, ...dateSelectionSets),\n businessHourSegs: this.joinBusinessHours(resourceDayTable, ...businessHoursSets),\n fgEventSegs: this.joinFgEvents(resourceDayTable, ...fgEventSets),\n bgEventSegs: this.joinBgEvents(resourceDayTable, ...bgEventSets),\n eventDrag: this.joinEventDrags(resourceDayTable, ...eventDrags),\n eventResize: this.joinEventResizes(resourceDayTable, ...eventResizes),\n eventSelection,\n };\n }\n joinSegs(resourceDayTable, ...segGroups) {\n let resourceCnt = resourceDayTable.resources.length;\n let transformedSegs = [];\n for (let i = 0; i < resourceCnt; i += 1) {\n for (let seg of segGroups[i]) {\n transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n }\n for (let seg of segGroups[resourceCnt]) { // one beyond. the all-resource\n transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n }\n }\n return transformedSegs;\n }\n /*\n for expanding non-resource segs to all resources.\n only for public use.\n no memoizing.\n */\n expandSegs(resourceDayTable, segs) {\n let resourceCnt = resourceDayTable.resources.length;\n let transformedSegs = [];\n for (let i = 0; i < resourceCnt; i += 1) {\n for (let seg of segs) {\n transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n }\n }\n return transformedSegs;\n }\n joinInteractions(resourceDayTable, ...interactions) {\n let resourceCnt = resourceDayTable.resources.length;\n let affectedInstances = {};\n let transformedSegs = [];\n let anyInteractions = false;\n let isEvent = false;\n for (let i = 0; i < resourceCnt; i += 1) {\n let interaction = interactions[i];\n if (interaction) {\n anyInteractions = true;\n for (let seg of interaction.segs) {\n transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n }\n Object.assign(affectedInstances, interaction.affectedInstances);\n isEvent = isEvent || interaction.isEvent;\n }\n if (interactions[resourceCnt]) { // one beyond. the all-resource\n for (let seg of interactions[resourceCnt].segs) {\n transformedSegs.push(...this.transformSeg(seg, resourceDayTable, i));\n }\n }\n }\n if (anyInteractions) {\n return {\n affectedInstances,\n segs: transformedSegs,\n isEvent,\n };\n }\n return null;\n }\n}\n\n/*\nTODO: just use ResourceHash somehow? could then use the generic ResourceSplitter\n*/\nclass VResourceSplitter extends Splitter {\n getKeyInfo(props) {\n let { resourceDayTableModel } = props;\n let hash = mapHash(resourceDayTableModel.resourceIndex.indicesById, (i) => resourceDayTableModel.resources[i]); // :(\n hash[''] = {};\n return hash;\n }\n getKeysForDateSpan(dateSpan) {\n return [dateSpan.resourceId || ''];\n }\n getKeysForEventDef(eventDef) {\n let resourceIds = eventDef.resourceIds;\n if (!resourceIds.length) {\n return [''];\n }\n return resourceIds;\n }\n}\n\n/*\ndoesn't accept grouping\n*/\nfunction flattenResources(resourceStore, orderSpecs) {\n return buildRowNodes(resourceStore, [], orderSpecs, false, {}, true)\n .map((node) => node.resource);\n}\nfunction buildRowNodes(resourceStore, groupSpecs, orderSpecs, isVGrouping, expansions, expansionDefault) {\n let complexNodes = buildHierarchy(resourceStore, isVGrouping ? -1 : 1, groupSpecs, orderSpecs);\n let flatNodes = [];\n flattenNodes(complexNodes, flatNodes, isVGrouping, [], 0, expansions, expansionDefault);\n return flatNodes;\n}\nfunction flattenNodes(complexNodes, res, isVGrouping, rowSpans, depth, expansions, expansionDefault) {\n for (let i = 0; i < complexNodes.length; i += 1) {\n let complexNode = complexNodes[i];\n let group = complexNode.group;\n if (group) {\n if (isVGrouping) {\n let firstRowIndex = res.length;\n let rowSpanIndex = rowSpans.length;\n flattenNodes(complexNode.children, res, isVGrouping, rowSpans.concat(0), depth, expansions, expansionDefault);\n if (firstRowIndex < res.length) {\n let firstRow = res[firstRowIndex];\n let firstRowSpans = firstRow.rowSpans = firstRow.rowSpans.slice();\n firstRowSpans[rowSpanIndex] = res.length - firstRowIndex;\n }\n }\n else {\n let id = group.spec.field + ':' + group.value;\n let isExpanded = expansions[id] != null ? expansions[id] : expansionDefault;\n res.push({ id, group, isExpanded });\n if (isExpanded) {\n flattenNodes(complexNode.children, res, isVGrouping, rowSpans, depth + 1, expansions, expansionDefault);\n }\n }\n }\n else if (complexNode.resource) {\n let id = complexNode.resource.id;\n let isExpanded = expansions[id] != null ? expansions[id] : expansionDefault;\n res.push({\n id,\n rowSpans,\n depth,\n isExpanded,\n hasChildren: Boolean(complexNode.children.length),\n resource: complexNode.resource,\n resourceFields: complexNode.resourceFields,\n });\n if (isExpanded) {\n flattenNodes(complexNode.children, res, isVGrouping, rowSpans, depth + 1, expansions, expansionDefault);\n }\n }\n }\n}\nfunction buildHierarchy(resourceStore, maxDepth, groupSpecs, orderSpecs) {\n let resourceNodes = buildResourceNodes(resourceStore, orderSpecs);\n let builtNodes = [];\n for (let resourceId in resourceNodes) {\n let resourceNode = resourceNodes[resourceId];\n if (!resourceNode.resource.parentId) {\n insertResourceNode(resourceNode, builtNodes, groupSpecs, 0, maxDepth, orderSpecs);\n }\n }\n return builtNodes;\n}\nfunction buildResourceNodes(resourceStore, orderSpecs) {\n let nodeHash = {};\n for (let resourceId in resourceStore) {\n let resource = resourceStore[resourceId];\n nodeHash[resourceId] = {\n resource,\n resourceFields: buildResourceFields(resource),\n children: [],\n };\n }\n for (let resourceId in resourceStore) {\n let resource = resourceStore[resourceId];\n if (resource.parentId) {\n let parentNode = nodeHash[resource.parentId];\n if (parentNode) {\n insertResourceNodeInSiblings(nodeHash[resourceId], parentNode.children, orderSpecs);\n }\n }\n }\n return nodeHash;\n}\nfunction insertResourceNode(resourceNode, nodes, groupSpecs, depth, maxDepth, orderSpecs) {\n if (groupSpecs.length && (maxDepth === -1 || depth <= maxDepth)) {\n let groupNode = ensureGroupNodes(resourceNode, nodes, groupSpecs[0]);\n insertResourceNode(resourceNode, groupNode.children, groupSpecs.slice(1), depth + 1, maxDepth, orderSpecs);\n }\n else {\n insertResourceNodeInSiblings(resourceNode, nodes, orderSpecs);\n }\n}\nfunction ensureGroupNodes(resourceNode, nodes, groupSpec) {\n let groupValue = resourceNode.resourceFields[groupSpec.field];\n let groupNode;\n let newGroupIndex;\n // find an existing group that matches, or determine the position for a new group\n if (groupSpec.order) {\n for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {\n let node = nodes[newGroupIndex];\n if (node.group) {\n let cmp = flexibleCompare(groupValue, node.group.value) * groupSpec.order;\n if (cmp === 0) {\n groupNode = node;\n break;\n }\n else if (cmp < 0) {\n break;\n }\n }\n }\n }\n else { // the groups are unordered\n for (newGroupIndex = 0; newGroupIndex < nodes.length; newGroupIndex += 1) {\n let node = nodes[newGroupIndex];\n if (node.group && groupValue === node.group.value) {\n groupNode = node;\n break;\n }\n }\n }\n if (!groupNode) {\n groupNode = {\n group: {\n value: groupValue,\n spec: groupSpec,\n },\n children: [],\n };\n nodes.splice(newGroupIndex, 0, groupNode);\n }\n return groupNode;\n}\nfunction insertResourceNodeInSiblings(resourceNode, siblings, orderSpecs) {\n let i;\n for (i = 0; i < siblings.length; i += 1) {\n let cmp = compareByFieldSpecs(siblings[i].resourceFields, resourceNode.resourceFields, orderSpecs); // TODO: pass in ResourceApi?\n if (cmp > 0) { // went 1 past. insert at i\n break;\n }\n }\n siblings.splice(i, 0, resourceNode);\n}\nfunction buildResourceFields(resource) {\n let obj = Object.assign(Object.assign(Object.assign({}, resource.extendedProps), resource.ui), resource);\n delete obj.ui;\n delete obj.extendedProps;\n return obj;\n}\nfunction isGroupsEqual(group0, group1) {\n return group0.spec === group1.spec && group0.value === group1.value;\n}\n\nexport { AbstractResourceDayTableModel as A, DEFAULT_RESOURCE_ORDER as D, ResourceApi as R, VResourceJoiner as V, ResourceSplitter as a, ResourceDayHeader as b, ResourceDayTableModel as c, DayResourceTableModel as d, VResourceSplitter as e, flattenResources as f, getPublicId as g, handleResourceStore as h, isGroupsEqual as i, buildRowNodes as j, buildResourceFields as k, ResourceLabelContainer as l, parseResource as p, refineRenderProps$1 as r };\n"],"names":["PRIVATE_ID_PREFIX","RESOURCE_REFINERS","id","String","parentId","children","identity","title","businessHours","extendedProps","eventEditable","Boolean","eventStartEditable","eventDurationEditable","eventConstraint","eventOverlap","eventAllow","eventClassNames","parseClassNames","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","parseResource","raw","store","context","refined","extra","refineProps","resource","guid","parseBusinessHours","ui","createEventUi","editable","startEditable","durationEditable","constraint","overlap","allow","classNames","backgroundColor","borderColor","textColor","color","Object","assign","freeze","childInput","getPublicId","indexOf","ResourceApi","constructor","_context","_resource","this","setProp","name","value","oldResource","dispatch","type","resourceId","propName","propValue","sync","setExtendedProp","getCurrentData","resourceStore","emitter","trigger","revert","resourceHash","remove","internalResource","getParent","getChildren","thisResourceId","childApis","push","getEvents","defs","instances","eventStore","eventApis","instanceId","instance","def","defId","resourceIds","EventImpl","constraints","allows","toPlainObject","settings","internal","publicId","res","collapseEventColor","length","keys","collapseExtendedProps","toJSON","ResourceSplitter","Splitter","getKeyInfo","props","getKeysForDateSpan","dateSpan","getKeysForEventDef","eventDef","DEFAULT_RESOURCE_ORDER","parseFieldSpecs","handleResourceStore","calendarData","hasHandlers","resourceApis","buildResourceApis","refineRenderProps$1","input","ResourceLabelContainer","BaseComponent","super","arguments","refineRenderProps","memoizeObjArg","render","createElement","ViewContextType","Consumer","options","renderProps","date","ContentContainer","elAttrs","formatDayString","undefined","generatorName","customGenerator","resourceLabelContent","defaultGenerator","renderInnerContent","classNameGenerator","resourceLabelClassNames","didMount","resourceLabelDidMount","willUnmount","resourceLabelWillUnmount","dateEnv","toDate","view","viewApi","ResourceCell","elTag","elClasses","role","colSpan","InnerContent","className","isSticky","ResourceDayHeader","buildDateFormat","memoize","dateFormat","dayHeaderFormat","datesRepDistinctDays","dates","NowTimer","unit","nowDate","todayRange","renderResourceRow","resources","datesAboveResources","renderDayAndResourceRows","renderResourceAndDayRows","resourceCells","map","key","buildTr","dateCells","renderDateCell","toISOString","Fragment","keyPostfix","extraRenderProps","extraDataAttrs","TableDateCell","dateProfile","colCnt","TableDowCell","getUTCDay","dow","cells","renderIntro","dayCnt","computeFallbackHeaderFormat","ResourceIndex","indicesById","ids","i","AbstractResourceDayTableModel","dayTableModel","resourceIndex","rowCnt","buildCells","rows","row","rowCells","dateCol","resourceCol","extraClassNames","extraDateSpan","computeCol","ResourceDayTableModel","dateI","resourceI","computeColRanges","dateStartI","dateEndI","firstCol","lastCol","isStart","isEnd","DayResourceTableModel","segs","col","NO_SEGS","VResourceJoiner","joinDateSelection","joinSegs","joinBusinessHours","joinFgEvents","joinBgEvents","joinEventDrags","joinInteractions","joinEventResizes","joinProps","propSets","resourceDayTable","dateSelectionSets","businessHoursSets","fgEventSets","bgEventSets","eventDrags","eventResizes","eventSelection","concat","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","eventDrag","eventResize","segGroups","resourceCnt","transformedSegs","seg","transformSeg","expandSegs","interactions","affectedInstances","anyInteractions","isEvent","interaction","VResourceSplitter","resourceDayTableModel","hash","mapHash","flattenResources","orderSpecs","buildRowNodes","node","groupSpecs","isVGrouping","expansions","expansionDefault","complexNodes","maxDepth","resourceNodes","nodeHash","resourceFields","buildResourceFields","parentNode","insertResourceNodeInSiblings","buildResourceNodes","builtNodes","resourceNode","insertResourceNode","buildHierarchy","flatNodes","flattenNodes","rowSpans","depth","complexNode","group","firstRowIndex","rowSpanIndex","firstRow","slice","spec","field","isExpanded","hasChildren","nodes","groupNode","groupSpec","newGroupIndex","groupValue","order","cmp","flexibleCompare","splice","ensureGroupNodes","siblings","compareByFieldSpecs","obj","isGroupsEqual","group0","group1"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{DayTableSlicer as e,Table as s}from"../daygrid/internal.js";import{e as t,V as r}from"../resource/internal-common.js";import{bc as o,a as i}from"../core/internal-common.js";import{createRef as a,createElement as l}from"../../preact/dist/preact.mjs.js";class n extends r{transformSeg(e,s,t){return s.computeColRanges(e.firstCol,e.lastCol,t).map((s=>Object.assign(Object.assign(Object.assign({},e),s),{isStart:e.isStart&&s.isStart,isEnd:e.isEnd&&s.isEnd})))}}class d extends o{constructor(){super(...arguments),this.splitter=new t,this.slicers={},this.joiner=new n,this.tableRef=a(),this.isHitComboAllowed=(e,s)=>1===this.props.resourceDayTableModel.dayTableModel.colCnt||e.dateSpan.resourceId===s.dateSpan.resourceId}render(){let{props:t,context:r}=this,{resourceDayTableModel:o,nextDayThreshold:a,dateProfile:n}=t,d=this.splitter.splitProps(t);this.slicers=i(d,((s,t)=>this.slicers[t]||new e));let c=i(this.slicers,((e,s)=>e.sliceProps(d[s],n,a,r,o.dayTableModel)));return l(s,Object.assign({forPrint:t.forPrint,ref:this.tableRef},this.joiner.joinProps(c,o),{cells:o.cells,dateProfile:n,colGroupNode:t.colGroupNode,tableMinWidth:t.tableMinWidth,renderRowIntro:t.renderRowIntro,dayMaxEvents:t.dayMaxEvents,dayMaxEventRows:t.dayMaxEventRows,showWeekNumbers:t.showWeekNumbers,expandRows:t.expandRows,headerAlignElRef:t.headerAlignElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,isHitComboAllowed:this.isHitComboAllowed}))}}export{d as ResourceDayTable};
2
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sources":["../../../../../node_modules/@fullcalendar/resource-daygrid/internal.js"],"sourcesContent":["import { DateComponent, mapHash, memoize } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement } from '@fullcalendar/core/preact.js';\nimport { DayTableSlicer, Table, TableView, buildDayTableModel } from '@fullcalendar/daygrid/internal.js';\nimport { VResourceJoiner, VResourceSplitter, flattenResources, DEFAULT_RESOURCE_ORDER, ResourceDayHeader, DayResourceTableModel, ResourceDayTableModel } from '@fullcalendar/resource/internal.js';\n\nclass ResourceDayTableJoiner extends VResourceJoiner {\n transformSeg(seg, resourceDayTableModel, resourceI) {\n let colRanges = resourceDayTableModel.computeColRanges(seg.firstCol, seg.lastCol, resourceI);\n return colRanges.map((colRange) => (Object.assign(Object.assign(Object.assign({}, seg), colRange), { isStart: seg.isStart && colRange.isStart, isEnd: seg.isEnd && colRange.isEnd })));\n }\n}\n\nclass ResourceDayTable extends DateComponent {\n constructor() {\n super(...arguments);\n this.splitter = new VResourceSplitter();\n this.slicers = {};\n this.joiner = new ResourceDayTableJoiner();\n this.tableRef = createRef();\n this.isHitComboAllowed = (hit0, hit1) => {\n let allowAcrossResources = this.props.resourceDayTableModel.dayTableModel.colCnt === 1;\n return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;\n };\n }\n render() {\n let { props, context } = this;\n let { resourceDayTableModel, nextDayThreshold, dateProfile } = props;\n let splitProps = this.splitter.splitProps(props);\n this.slicers = mapHash(splitProps, (split, resourceId) => this.slicers[resourceId] || new DayTableSlicer());\n let slicedProps = mapHash(this.slicers, (slicer, resourceId) => slicer.sliceProps(splitProps[resourceId], dateProfile, nextDayThreshold, context, resourceDayTableModel.dayTableModel));\n return (createElement(Table, Object.assign({ forPrint: props.forPrint, ref: this.tableRef }, this.joiner.joinProps(slicedProps, resourceDayTableModel), { cells: resourceDayTableModel.cells, dateProfile: dateProfile, colGroupNode: props.colGroupNode, tableMinWidth: props.tableMinWidth, renderRowIntro: props.renderRowIntro, dayMaxEvents: props.dayMaxEvents, dayMaxEventRows: props.dayMaxEventRows, showWeekNumbers: props.showWeekNumbers, expandRows: props.expandRows, headerAlignElRef: props.headerAlignElRef, clientWidth: props.clientWidth, clientHeight: props.clientHeight, isHitComboAllowed: this.isHitComboAllowed })));\n }\n}\n\nclass ResourceDayTableView extends TableView {\n constructor() {\n super(...arguments);\n this.flattenResources = memoize(flattenResources);\n this.buildResourceDayTableModel = memoize(buildResourceDayTableModel);\n this.headerRef = createRef();\n this.tableRef = createRef();\n // can't override any lifecycle methods from parent\n }\n render() {\n let { props, context } = this;\n let { options } = context;\n let resourceOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER;\n let resources = this.flattenResources(props.resourceStore, resourceOrderSpecs);\n let resourceDayTableModel = this.buildResourceDayTableModel(props.dateProfile, context.dateProfileGenerator, resources, options.datesAboveResources, context);\n let headerContent = options.dayHeaders && (createElement(ResourceDayHeader, { ref: this.headerRef, resources: resources, dateProfile: props.dateProfile, dates: resourceDayTableModel.dayTableModel.headerDates, datesRepDistinctDays: true }));\n let bodyContent = (contentArg) => (createElement(ResourceDayTable, { ref: this.tableRef, dateProfile: props.dateProfile, resourceDayTableModel: resourceDayTableModel, businessHours: props.businessHours, eventStore: props.eventStore, eventUiBases: props.eventUiBases, dateSelection: props.dateSelection, eventSelection: props.eventSelection, eventDrag: props.eventDrag, eventResize: props.eventResize, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, dayMaxEvents: options.dayMaxEvents, dayMaxEventRows: options.dayMaxEventRows, showWeekNumbers: options.weekNumbers, expandRows: !props.isHeightAuto, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }));\n return options.dayMinWidth\n ? this.renderHScrollLayout(headerContent, bodyContent, resourceDayTableModel.colCnt, options.dayMinWidth)\n : this.renderSimpleLayout(headerContent, bodyContent);\n }\n}\nfunction buildResourceDayTableModel(dateProfile, dateProfileGenerator, resources, datesAboveResources, context) {\n let dayTable = buildDayTableModel(dateProfile, dateProfileGenerator);\n return datesAboveResources ?\n new DayResourceTableModel(dayTable, resources, context) :\n new ResourceDayTableModel(dayTable, resources, context);\n}\n\nexport { ResourceDayTable, ResourceDayTableView };\n"],"names":["ResourceDayTableJoiner","VResourceJoiner","transformSeg","seg","resourceDayTableModel","resourceI","computeColRanges","firstCol","lastCol","map","colRange","Object","assign","isStart","isEnd","ResourceDayTable","DateComponent","constructor","super","arguments","this","splitter","VResourceSplitter","slicers","joiner","tableRef","createRef","isHitComboAllowed","hit0","hit1","props","dayTableModel","colCnt","dateSpan","resourceId","render","context","nextDayThreshold","dateProfile","splitProps","mapHash","split","DayTableSlicer","slicedProps","slicer","sliceProps","createElement","Table","forPrint","ref","joinProps","cells","colGroupNode","tableMinWidth","renderRowIntro","dayMaxEvents","dayMaxEventRows","showWeekNumbers","expandRows","headerAlignElRef","clientWidth","clientHeight"],"mappings":"mQAKA,MAAMA,UAA+BC,EACjC,YAAAC,CAAaC,EAAKC,EAAuBC,GAErC,OADgBD,EAAsBE,iBAAiBH,EAAII,SAAUJ,EAAIK,QAASH,GACjEI,KAAKC,GAAcC,OAAOC,OAAOD,OAAOC,OAAOD,OAAOC,OAAO,CAAE,EAAET,GAAMO,GAAW,CAAEG,QAASV,EAAIU,SAAWH,EAASG,QAASC,MAAOX,EAAIW,OAASJ,EAASI,SAC/K,EAGL,MAAMC,UAAyBC,EAC3B,WAAAC,GACIC,SAASC,WACTC,KAAKC,SAAW,IAAIC,EACpBF,KAAKG,QAAU,GACfH,KAAKI,OAAS,IAAIxB,EAClBoB,KAAKK,SAAWC,IAChBN,KAAKO,kBAAoB,CAACC,EAAMC,IACyD,IAA1DT,KAAKU,MAAM1B,sBAAsB2B,cAAcC,QAC3CJ,EAAKK,SAASC,aAAeL,EAAKI,SAASC,UAEjF,CACD,MAAAC,GACI,IAAIL,MAAEA,EAAKM,QAAEA,GAAYhB,MACrBhB,sBAAEA,EAAqBiC,iBAAEA,EAAgBC,YAAEA,GAAgBR,EAC3DS,EAAanB,KAAKC,SAASkB,WAAWT,GAC1CV,KAAKG,QAAUiB,EAAQD,GAAY,CAACE,EAAOP,IAAed,KAAKG,QAAQW,IAAe,IAAIQ,IAC1F,IAAIC,EAAcH,EAAQpB,KAAKG,SAAS,CAACqB,EAAQV,IAAeU,EAAOC,WAAWN,EAAWL,GAAaI,EAAaD,EAAkBD,EAAShC,EAAsB2B,iBACxK,OAAQe,EAAcC,EAAOpC,OAAOC,OAAO,CAAEoC,SAAUlB,EAAMkB,SAAUC,IAAK7B,KAAKK,UAAYL,KAAKI,OAAO0B,UAAUP,EAAavC,GAAwB,CAAE+C,MAAO/C,EAAsB+C,MAAOb,YAAaA,EAAac,aAActB,EAAMsB,aAAcC,cAAevB,EAAMuB,cAAeC,eAAgBxB,EAAMwB,eAAgBC,aAAczB,EAAMyB,aAAcC,gBAAiB1B,EAAM0B,gBAAiBC,gBAAiB3B,EAAM2B,gBAAiBC,WAAY5B,EAAM4B,WAAYC,iBAAkB7B,EAAM6B,iBAAkBC,YAAa9B,EAAM8B,YAAaC,aAAc/B,EAAM+B,aAAclC,kBAAmBP,KAAKO,oBAC3lB"}
@@ -0,0 +1,2 @@
1
+ import{createPlugin as e}from"../core/index.js";import r from"../premium-common/index.js";import i from"../resource/index.js";import o from"../timegrid/index.js";import{ResourceDayTimeColsView as m}from"./internal.js";import"../resource/internal-common.js";var s=e({name:"@fullcalendar/resource-timegrid",premiumReleaseDate:"2025-04-02",deps:[r,i,o],initialView:"resourceTimeGridDay",views:{resourceTimeGrid:{type:"timeGrid",component:m,needsResourceData:!0},resourceTimeGridDay:{type:"resourceTimeGrid",duration:{days:1}},resourceTimeGridWeek:{type:"resourceTimeGrid",duration:{weeks:1}}}});export{s as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@fullcalendar/resource-timegrid/index.js"],"sourcesContent":["import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport resourcePlugin from '@fullcalendar/resource/index.js';\nimport timeGridPlugin from '@fullcalendar/timegrid/index.js';\nimport { ResourceDayTimeColsView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/timegrid/internal.js';\nimport '@fullcalendar/resource/internal.js';\nimport '@fullcalendar/resource-daygrid/internal.js';\n\nvar index = createPlugin({\n name: '@fullcalendar/resource-timegrid',\n premiumReleaseDate: '2025-04-02',\n deps: [\n premiumCommonPlugin,\n resourcePlugin,\n timeGridPlugin,\n ],\n initialView: 'resourceTimeGridDay',\n views: {\n resourceTimeGrid: {\n type: 'timeGrid',\n component: ResourceDayTimeColsView,\n needsResourceData: true,\n },\n resourceTimeGridDay: {\n type: 'resourceTimeGrid',\n duration: { days: 1 },\n },\n resourceTimeGridWeek: {\n type: 'resourceTimeGrid',\n duration: { weeks: 1 },\n },\n },\n});\n\nexport { index as default };\n"],"names":["index","createPlugin","name","premiumReleaseDate","deps","premiumCommonPlugin","resourcePlugin","timeGridPlugin","initialView","views","resourceTimeGrid","type","component","ResourceDayTimeColsView","needsResourceData","resourceTimeGridDay","duration","days","resourceTimeGridWeek","weeks"],"mappings":"iQAWG,IAACA,EAAQC,EAAa,CACrBC,KAAM,kCACNC,mBAAoB,aACpBC,KAAM,CACFC,EACAC,EACAC,GAEJC,YAAa,sBACbC,MAAO,CACHC,iBAAkB,CACdC,KAAM,WACNC,UAAWC,EACXC,mBAAmB,GAEvBC,oBAAqB,CACjBJ,KAAM,mBACNK,SAAU,CAAEC,KAAM,IAEtBC,qBAAsB,CAClBP,KAAM,mBACNK,SAAU,CAAEG,MAAO"}
@@ -0,0 +1,2 @@
1
+ import{TimeColsView as e,buildSlatMetas as t,buildTimeColsModel as s,buildDayRanges as o,DayTimeColsSlicer as i,TimeCols as r}from"../timegrid/internal.js";import{f as l,D as a,b as n,d,c,e as h,V as u}from"../resource/internal-common.js";import{ResourceDayTable as p}from"../resource-daygrid/internal.js";import{z as b,bc as m,a as f,a6 as R}from"../core/internal-common.js";import{createElement as g,createRef as y}from"../../preact/dist/preact.mjs.js";class x extends u{transformSeg(e,t,s){return[Object.assign(Object.assign({},e),{col:t.computeCol(e.col,s)})]}}class D extends m{constructor(){super(...arguments),this.buildDayRanges=b(o),this.splitter=new h,this.slicers={},this.joiner=new x,this.timeColsRef=y(),this.isHitComboAllowed=(e,t)=>1===this.dayRanges.length||e.dateSpan.resourceId===t.dateSpan.resourceId}render(){let{props:e,context:t}=this,{dateEnv:s,options:o}=t,{dateProfile:l,resourceDayTableModel:a}=e,n=this.dayRanges=this.buildDayRanges(a.dayTableModel,l,s),d=this.splitter.splitProps(e);this.slicers=f(d,((e,t)=>this.slicers[t]||new i));let c=f(this.slicers,((e,s)=>e.sliceProps(d[s],l,null,t,n)));return g(R,{unit:o.nowIndicator?"minute":"day"},((t,s)=>g(r,Object.assign({ref:this.timeColsRef},this.joiner.joinProps(c,a),{dateProfile:l,axis:e.axis,slotDuration:e.slotDuration,slatMetas:e.slatMetas,cells:a.cells[0],tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,clientWidth:e.clientWidth,clientHeight:e.clientHeight,expandRows:e.expandRows,nowDate:t,nowIndicatorSegs:o.nowIndicator&&this.buildNowIndicatorSegs(t),todayRange:s,onScrollTopRequest:e.onScrollTopRequest,forPrint:e.forPrint,onSlatCoords:e.onSlatCoords,isHitComboAllowed:this.isHitComboAllowed}))))}buildNowIndicatorSegs(e){let t=this.slicers[""].sliceNowDate(e,this.props.dateProfile,this.context.options.nextDayThreshold,this.context,this.dayRanges);return this.joiner.expandSegs(this.props.resourceDayTableModel,t)}}class w extends e{constructor(){super(...arguments),this.flattenResources=b(l),this.buildResourceTimeColsModel=b(M),this.buildSlatMetas=b(t)}render(){let{props:e,context:t}=this,{options:s,dateEnv:o}=t,{dateProfile:i}=e,r=this.allDaySplitter.splitProps(e),l=s.resourceOrder||a,d=this.flattenResources(e.resourceStore,l),c=this.buildResourceTimeColsModel(i,t.dateProfileGenerator,d,s.datesAboveResources,t),h=this.buildSlatMetas(i.slotMinTime,i.slotMaxTime,s.slotLabelInterval,s.slotDuration,o),{dayMinWidth:u}=s,b=!u,m=u,f=s.dayHeaders&&g(n,{resources:d,dates:c.dayTableModel.headerDates,dateProfile:i,datesRepDistinctDays:!0,renderIntro:b?this.renderHeadAxis:null}),R=!1!==s.allDaySlot&&(t=>g(p,Object.assign({},r.allDay,{dateProfile:i,resourceDayTableModel:c,nextDayThreshold:s.nextDayThreshold,tableMinWidth:t.tableMinWidth,colGroupNode:t.tableColGroupNode,renderRowIntro:b?this.renderTableRowAxis:null,showWeekNumbers:!1,expandRows:!1,headerAlignElRef:this.headerElRef,clientWidth:t.clientWidth,clientHeight:t.clientHeight,forPrint:e.forPrint},this.getAllDayMaxEventProps()))),y=t=>g(D,Object.assign({},r.timed,{dateProfile:i,axis:b,slotDuration:s.slotDuration,slatMetas:h,resourceDayTableModel:c,tableColGroupNode:t.tableColGroupNode,tableMinWidth:t.tableMinWidth,clientWidth:t.clientWidth,clientHeight:t.clientHeight,onSlatCoords:this.handleSlatCoords,expandRows:t.expandRows,forPrint:e.forPrint,onScrollTopRequest:this.handleScrollTopRequest}));return m?this.renderHScrollLayout(f,R,y,c.colCnt,u,h,this.state.slatCoords):this.renderSimpleLayout(f,R,y)}}function M(e,t,o,i,r){let l=s(e,t);return i?new d(l,o,r):new c(l,o,r)}export{D as ResourceDayTimeCols,w as ResourceDayTimeColsView};
2
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sources":["../../../../../node_modules/@fullcalendar/resource-timegrid/internal.js"],"sourcesContent":["import { DateComponent, memoize, mapHash, NowTimer } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement } from '@fullcalendar/core/preact.js';\nimport { buildDayRanges, DayTimeColsSlicer, TimeCols, TimeColsView, buildSlatMetas, buildTimeColsModel } from '@fullcalendar/timegrid/internal.js';\nimport { VResourceJoiner, VResourceSplitter, flattenResources, DEFAULT_RESOURCE_ORDER, ResourceDayHeader, DayResourceTableModel, ResourceDayTableModel } from '@fullcalendar/resource/internal.js';\nimport { ResourceDayTable } from '@fullcalendar/resource-daygrid/internal.js';\n\nclass ResourceDayTimeColsJoiner extends VResourceJoiner {\n transformSeg(seg, resourceDayTable, resourceI) {\n return [\n Object.assign(Object.assign({}, seg), { col: resourceDayTable.computeCol(seg.col, resourceI) }),\n ];\n }\n}\n\nclass ResourceDayTimeCols extends DateComponent {\n constructor() {\n super(...arguments);\n this.buildDayRanges = memoize(buildDayRanges);\n this.splitter = new VResourceSplitter();\n this.slicers = {};\n this.joiner = new ResourceDayTimeColsJoiner();\n this.timeColsRef = createRef();\n this.isHitComboAllowed = (hit0, hit1) => {\n let allowAcrossResources = this.dayRanges.length === 1;\n return allowAcrossResources || hit0.dateSpan.resourceId === hit1.dateSpan.resourceId;\n };\n }\n render() {\n let { props, context } = this;\n let { dateEnv, options } = context;\n let { dateProfile, resourceDayTableModel } = props;\n let dayRanges = this.dayRanges = this.buildDayRanges(resourceDayTableModel.dayTableModel, dateProfile, dateEnv);\n let splitProps = this.splitter.splitProps(props);\n this.slicers = mapHash(splitProps, (split, resourceId) => this.slicers[resourceId] || new DayTimeColsSlicer());\n let slicedProps = mapHash(this.slicers, (slicer, resourceId) => slicer.sliceProps(splitProps[resourceId], dateProfile, null, context, dayRanges));\n return ( // TODO: would move this further down hierarchy, but sliceNowDate needs it\n createElement(NowTimer, { unit: options.nowIndicator ? 'minute' : 'day' }, (nowDate, todayRange) => (createElement(TimeCols, Object.assign({ ref: this.timeColsRef }, this.joiner.joinProps(slicedProps, resourceDayTableModel), { dateProfile: dateProfile, axis: props.axis, slotDuration: props.slotDuration, slatMetas: props.slatMetas, cells: resourceDayTableModel.cells[0], tableColGroupNode: props.tableColGroupNode, tableMinWidth: props.tableMinWidth, clientWidth: props.clientWidth, clientHeight: props.clientHeight, expandRows: props.expandRows, nowDate: nowDate, nowIndicatorSegs: options.nowIndicator && this.buildNowIndicatorSegs(nowDate), todayRange: todayRange, onScrollTopRequest: props.onScrollTopRequest, forPrint: props.forPrint, onSlatCoords: props.onSlatCoords, isHitComboAllowed: this.isHitComboAllowed })))));\n }\n buildNowIndicatorSegs(date) {\n let nonResourceSegs = this.slicers[''].sliceNowDate(date, this.props.dateProfile, this.context.options.nextDayThreshold, this.context, this.dayRanges);\n return this.joiner.expandSegs(this.props.resourceDayTableModel, nonResourceSegs);\n }\n}\n\nclass ResourceDayTimeColsView extends TimeColsView {\n constructor() {\n super(...arguments);\n this.flattenResources = memoize(flattenResources);\n this.buildResourceTimeColsModel = memoize(buildResourceTimeColsModel);\n this.buildSlatMetas = memoize(buildSlatMetas);\n }\n render() {\n let { props, context } = this;\n let { options, dateEnv } = context;\n let { dateProfile } = props;\n let splitProps = this.allDaySplitter.splitProps(props);\n let resourceOrderSpecs = options.resourceOrder || DEFAULT_RESOURCE_ORDER;\n let resources = this.flattenResources(props.resourceStore, resourceOrderSpecs);\n let resourceDayTableModel = this.buildResourceTimeColsModel(dateProfile, context.dateProfileGenerator, resources, options.datesAboveResources, context);\n let slatMetas = this.buildSlatMetas(dateProfile.slotMinTime, dateProfile.slotMaxTime, options.slotLabelInterval, options.slotDuration, dateEnv);\n let { dayMinWidth } = options;\n let hasAttachedAxis = !dayMinWidth;\n let hasDetachedAxis = dayMinWidth;\n let headerContent = options.dayHeaders && (createElement(ResourceDayHeader, { resources: resources, dates: resourceDayTableModel.dayTableModel.headerDates, dateProfile: dateProfile, datesRepDistinctDays: true, renderIntro: hasAttachedAxis ? this.renderHeadAxis : null }));\n let allDayContent = (options.allDaySlot !== false) && ((contentArg) => (createElement(ResourceDayTable, Object.assign({}, splitProps.allDay, { dateProfile: dateProfile, resourceDayTableModel: resourceDayTableModel, nextDayThreshold: options.nextDayThreshold, tableMinWidth: contentArg.tableMinWidth, colGroupNode: contentArg.tableColGroupNode, renderRowIntro: hasAttachedAxis ? this.renderTableRowAxis : null, showWeekNumbers: false, expandRows: false, headerAlignElRef: this.headerElRef, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, forPrint: props.forPrint }, this.getAllDayMaxEventProps()))));\n let timeGridContent = (contentArg) => (createElement(ResourceDayTimeCols, Object.assign({}, splitProps.timed, { dateProfile: dateProfile, axis: hasAttachedAxis, slotDuration: options.slotDuration, slatMetas: slatMetas, resourceDayTableModel: resourceDayTableModel, tableColGroupNode: contentArg.tableColGroupNode, tableMinWidth: contentArg.tableMinWidth, clientWidth: contentArg.clientWidth, clientHeight: contentArg.clientHeight, onSlatCoords: this.handleSlatCoords, expandRows: contentArg.expandRows, forPrint: props.forPrint, onScrollTopRequest: this.handleScrollTopRequest })));\n return hasDetachedAxis\n ? this.renderHScrollLayout(headerContent, allDayContent, timeGridContent, resourceDayTableModel.colCnt, dayMinWidth, slatMetas, this.state.slatCoords)\n : this.renderSimpleLayout(headerContent, allDayContent, timeGridContent);\n }\n}\nfunction buildResourceTimeColsModel(dateProfile, dateProfileGenerator, resources, datesAboveResources, context) {\n let dayTable = buildTimeColsModel(dateProfile, dateProfileGenerator);\n return datesAboveResources ?\n new DayResourceTableModel(dayTable, resources, context) :\n new ResourceDayTableModel(dayTable, resources, context);\n}\n\nexport { ResourceDayTimeCols, ResourceDayTimeColsView };\n"],"names":["ResourceDayTimeColsJoiner","VResourceJoiner","transformSeg","seg","resourceDayTable","resourceI","Object","assign","col","computeCol","ResourceDayTimeCols","DateComponent","constructor","super","arguments","this","buildDayRanges","memoize","splitter","VResourceSplitter","slicers","joiner","timeColsRef","createRef","isHitComboAllowed","hit0","hit1","dayRanges","length","dateSpan","resourceId","render","props","context","dateEnv","options","dateProfile","resourceDayTableModel","dayTableModel","splitProps","mapHash","split","DayTimeColsSlicer","slicedProps","slicer","sliceProps","createElement","NowTimer","unit","nowIndicator","nowDate","todayRange","TimeCols","ref","joinProps","axis","slotDuration","slatMetas","cells","tableColGroupNode","tableMinWidth","clientWidth","clientHeight","expandRows","nowIndicatorSegs","buildNowIndicatorSegs","onScrollTopRequest","forPrint","onSlatCoords","date","nonResourceSegs","sliceNowDate","nextDayThreshold","expandSegs","ResourceDayTimeColsView","TimeColsView","flattenResources","buildResourceTimeColsModel","buildSlatMetas","allDaySplitter","resourceOrderSpecs","resourceOrder","DEFAULT_RESOURCE_ORDER","resources","resourceStore","dateProfileGenerator","datesAboveResources","slotMinTime","slotMaxTime","slotLabelInterval","dayMinWidth","hasAttachedAxis","hasDetachedAxis","headerContent","dayHeaders","ResourceDayHeader","dates","headerDates","datesRepDistinctDays","renderIntro","renderHeadAxis","allDayContent","allDaySlot","contentArg","ResourceDayTable","allDay","colGroupNode","renderRowIntro","renderTableRowAxis","showWeekNumbers","headerAlignElRef","headerElRef","getAllDayMaxEventProps","timeGridContent","timed","handleSlatCoords","handleScrollTopRequest","renderHScrollLayout","colCnt","state","slatCoords","renderSimpleLayout","dayTable","buildTimeColsModel","DayResourceTableModel","ResourceDayTableModel"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{createPlugin as e}from"../core/index.js";import r from"../premium-common/index.js";import i from"../timeline/index.js";import o from"../resource/index.js";import{ResourceTimelineView as n}from"./internal.js";import"../resource/internal-common.js";var m=e({name:"@fullcalendar/resource-timeline",premiumReleaseDate:"2025-04-02",deps:[r,o,i],initialView:"resourceTimelineDay",views:{resourceTimeline:{type:"timeline",component:n,needsResourceData:!0,resourceAreaWidth:"30%",resourcesInitiallyExpanded:!0,eventResizableFromStart:!0},resourceTimelineDay:{type:"resourceTimeline",duration:{days:1}},resourceTimelineWeek:{type:"resourceTimeline",duration:{weeks:1}},resourceTimelineMonth:{type:"resourceTimeline",duration:{months:1}},resourceTimelineYear:{type:"resourceTimeline",duration:{years:1}}}});export{m as default};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@fullcalendar/resource-timeline/index.js"],"sourcesContent":["import { createPlugin } from '@fullcalendar/core/index.js';\nimport premiumCommonPlugin from '@fullcalendar/premium-common/index.js';\nimport timelinePlugin from '@fullcalendar/timeline/index.js';\nimport resourcePlugin from '@fullcalendar/resource/index.js';\nimport { ResourceTimelineView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/timeline/internal.js';\nimport '@fullcalendar/resource/internal.js';\nimport '@fullcalendar/scrollgrid/internal.js';\n\nvar index = createPlugin({\n name: '@fullcalendar/resource-timeline',\n premiumReleaseDate: '2025-04-02',\n deps: [\n premiumCommonPlugin,\n resourcePlugin,\n timelinePlugin,\n ],\n initialView: 'resourceTimelineDay',\n views: {\n resourceTimeline: {\n type: 'timeline',\n component: ResourceTimelineView,\n needsResourceData: true,\n resourceAreaWidth: '30%',\n resourcesInitiallyExpanded: true,\n eventResizableFromStart: true, // TODO: not DRY with this same setting in the main timeline config\n },\n resourceTimelineDay: {\n type: 'resourceTimeline',\n duration: { days: 1 },\n },\n resourceTimelineWeek: {\n type: 'resourceTimeline',\n duration: { weeks: 1 },\n },\n resourceTimelineMonth: {\n type: 'resourceTimeline',\n duration: { months: 1 },\n },\n resourceTimelineYear: {\n type: 'resourceTimeline',\n duration: { years: 1 },\n },\n },\n});\n\nexport { index as default };\n"],"names":["index","createPlugin","name","premiumReleaseDate","deps","premiumCommonPlugin","resourcePlugin","timelinePlugin","initialView","views","resourceTimeline","type","component","ResourceTimelineView","needsResourceData","resourceAreaWidth","resourcesInitiallyExpanded","eventResizableFromStart","resourceTimelineDay","duration","days","resourceTimelineWeek","weeks","resourceTimelineMonth","months","resourceTimelineYear","years"],"mappings":"8PAWG,IAACA,EAAQC,EAAa,CACrBC,KAAM,kCACNC,mBAAoB,aACpBC,KAAM,CACFC,EACAC,EACAC,GAEJC,YAAa,sBACbC,MAAO,CACHC,iBAAkB,CACdC,KAAM,WACNC,UAAWC,EACXC,mBAAmB,EACnBC,kBAAmB,MACnBC,4BAA4B,EAC5BC,yBAAyB,GAE7BC,oBAAqB,CACjBP,KAAM,mBACNQ,SAAU,CAAEC,KAAM,IAEtBC,qBAAsB,CAClBV,KAAM,mBACNQ,SAAU,CAAEG,MAAO,IAEvBC,sBAAuB,CACnBZ,KAAM,mBACNQ,SAAU,CAAEK,OAAQ,IAExBC,qBAAsB,CAClBd,KAAM,mBACNQ,SAAU,CAAEO,MAAO"}
@@ -0,0 +1,2 @@
1
+ import{buildTimelineDateProfile as e,buildSlatCols as t,TimelineHeader as r,TimelineLaneSlicer as s,TimelineSlats as o,TimelineLaneBg as i,coordToCss as l,TimelineLane as n}from"../timeline/internal.js";import{i as a,j as d,D as c,k as u,g as h,a as p,R as f,r as g}from"../resource/internal-common.js";import"../resource/index.js";import{ScrollGrid as m}from"../scrollgrid/internal.js";import{i as C,B as R,z as w,cq as S,ct as b,C as x,cd as y,aK as H,Z as N,bc as v,c as D,a6 as E,ch as W,bG as P,ca as M,c9 as G,c8 as k,A,b8 as T}from"../core/internal-common.js";import{createRef as U,createElement as z,Fragment as L}from"../../preact/dist/preact.mjs.js";function I({depth:e,hasChildren:t,isExpanded:r,onExpanderClick:s}){let o=[];for(let t=0;t<e;t+=1)o.push(z("span",{className:"fc-icon"}));let i=["fc-icon"];return t&&(r?i.push("fc-icon-minus-square"):i.push("fc-icon-plus-square")),o.push(z("span",{className:"fc-datagrid-expander"+(t?"":" fc-datagrid-expander-placeholder"),onClick:s},z("span",{className:i.join(" ")}))),z(L,{},...o)}class B extends R{constructor(){super(...arguments),this.refineRenderProps=A(V),this.onExpanderClick=e=>{let{props:t}=this;t.hasChildren&&this.context.dispatch({type:"SET_RESOURCE_ENTITY_EXPANDED",id:t.resource.id,isExpanded:!t.isExpanded})}}render(){let{props:e,context:t}=this,{colSpec:r}=e,s=this.refineRenderProps({resource:e.resource,fieldValue:e.fieldValue,context:t});return z(x,{elTag:"td",elClasses:["fc-datagrid-cell","fc-resource"],elAttrs:{role:"gridcell","data-resource-id":e.resource.id},renderProps:s,generatorName:r.isMain?"resourceLabelContent":void 0,customGenerator:r.cellContent,defaultGenerator:q,classNameGenerator:r.cellClassNames,didMount:r.cellDidMount,willUnmount:r.cellWillUnmount},(t=>z("div",{className:"fc-datagrid-cell-frame",style:{height:e.innerHeight}},z("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},r.isMain&&z(I,{depth:e.depth,hasChildren:e.hasChildren,isExpanded:e.isExpanded,onExpanderClick:this.onExpanderClick}),z(t,{elTag:"span",elClasses:["fc-datagrid-cell-main"]})))))}}function q(e){return e.fieldValue||z(L,null," ")}function V(e){return{resource:new f(e.context,e.resource),fieldValue:e.fieldValue,view:e.context.viewApi}}class j extends R{render(){let{props:e,context:t}=this,{colSpec:r}=e,s={groupValue:e.fieldValue,view:t.viewApi};return z(x,{elTag:"td",elClasses:["fc-datagrid-cell","fc-resource-group"],elAttrs:{role:"gridcell",rowSpan:e.rowSpan},renderProps:s,generatorName:"resourceGroupLabelContent",customGenerator:r.cellContent,defaultGenerator:O,classNameGenerator:r.cellClassNames,didMount:r.cellDidMount,willUnmount:r.cellWillUnmount},(e=>z("div",{className:"fc-datagrid-cell-frame fc-datagrid-cell-frame-liquid"},z(e,{elTag:"div",elClasses:["fc-datagrid-cell-cushion","fc-sticky"]}))))}}function O(e){return e.groupValue||z(L,null," ")}class _ extends R{render(){let{props:e}=this,{resource:t,rowSpans:r,depth:s}=e,o=u(t);return z("tr",{role:"row"},e.colSpecs.map(((i,l)=>{let n=r[l];if(0===n)return null;null==n&&(n=1);let a=i.field?o[i.field]:t.title||h(t.id);return n>1?z(j,{key:l,colSpec:i,fieldValue:a,rowSpan:n}):z(B,{key:l,colSpec:i,resource:t,fieldValue:a,depth:s,hasChildren:e.hasChildren,isExpanded:e.isExpanded,innerHeight:e.innerHeight})})))}}_.addPropsEquality({rowSpans:C});class F extends R{constructor(){super(...arguments),this.innerInnerRef=U(),this.onExpanderClick=()=>{let{props:e}=this;this.context.dispatch({type:"SET_RESOURCE_ENTITY_EXPANDED",id:e.id,isExpanded:!e.isExpanded})}}render(){let{props:e,context:t}=this,r={groupValue:e.group.value,view:t.viewApi},s=e.group.spec;return z("tr",{role:"row"},z(x,{elTag:"th",elClasses:["fc-datagrid-cell","fc-resource-group",t.theme.getClass("tableCellShaded")],elAttrs:{role:"columnheader",scope:"colgroup",colSpan:e.spreadsheetColCnt},renderProps:r,generatorName:"resourceGroupLabelContent",customGenerator:s.labelContent,defaultGenerator:X,classNameGenerator:s.labelClassNames,didMount:s.labelDidMount,willUnmount:s.labelWillUnmount},(t=>z("div",{className:"fc-datagrid-cell-frame",style:{height:e.innerHeight}},z("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner",ref:this.innerInnerRef},z(I,{depth:0,hasChildren:!0,isExpanded:e.isExpanded,onExpanderClick:this.onExpanderClick}),z(t,{elTag:"span",elClasses:["fc-datagrid-cell-main"]}))))))}}function X(e){return e.groupValue||z(L,null," ")}F.addPropsEquality({group:a});class Y extends R{constructor(){super(...arguments),this.resizerElRefs=new y(this._handleColResizerEl.bind(this)),this.colDraggings={}}render(){let{colSpecs:e,superHeaderRendering:t,rowInnerHeights:r}=this.props,s={view:this.context.viewApi},o=[];if(r=r.slice(),t){let i=r.shift();o.push(z("tr",{key:"row-super",role:"row"},z(x,{elTag:"th",elClasses:["fc-datagrid-cell","fc-datagrid-cell-super"],elAttrs:{role:"columnheader",scope:"colgroup",colSpan:e.length},renderProps:s,generatorName:"resourceAreaHeaderContent",customGenerator:t.headerContent,defaultGenerator:t.headerDefault,classNameGenerator:t.headerClassNames,didMount:t.headerDidMount,willUnmount:t.headerWillUnmount},(e=>z("div",{className:"fc-datagrid-cell-frame",style:{height:i}},z(e,{elTag:"div",elClasses:["fc-datagrid-cell-cushion","fc-scrollgrid-sync-inner"]}))))))}let i=r.shift();return o.push(z("tr",{key:"row",role:"row"},e.map(((t,r)=>{let o=r===e.length-1;return z(x,{key:r,elTag:"th",elClasses:["fc-datagrid-cell"],elAttrs:{role:"columnheader"},renderProps:s,generatorName:"resourceAreaHeaderContent",customGenerator:t.headerContent,defaultGenerator:t.headerDefault,classNameGenerator:t.headerClassNames,didMount:t.headerDidMount,willUnmount:t.headerWillUnmount},(e=>z("div",{className:"fc-datagrid-cell-frame",style:{height:i}},z("div",{className:"fc-datagrid-cell-cushion fc-scrollgrid-sync-inner"},t.isMain&&z("span",{className:"fc-datagrid-expander fc-datagrid-expander-placeholder"},z("span",{className:"fc-icon"})),z(e,{elTag:"span",elClasses:["fc-datagrid-cell-main"]})),!o&&z("div",{className:"fc-datagrid-cell-resizer",ref:this.resizerElRefs.createRef(r)}))))})))),z(L,null,o)}_handleColResizerEl(e,t){let{colDraggings:r}=this;if(e){let s=this.initColResizing(e,parseInt(t,10));s&&(r[t]=s)}else{let e=r[t];e&&(e.destroy(),delete r[t])}}initColResizing(e,t){let{pluginHooks:r,isRtl:s}=this.context,{onColWidthChange:o}=this.props,i=r.elementDraggingImpl;if(i){let r,l,n=new i(e);return n.emitter.on("dragstart",(()=>{let s=H(N(e,"tr"),"th");l=s.map((e=>e.getBoundingClientRect().width)),r=l[t]})),n.emitter.on("dragmove",(e=>{l[t]=Math.max(r+e.deltaX*(s?-1:1),20),o&&o(l.slice())})),n.setAutoScrollEnabled(!1),n}return null}}class Z extends R{constructor(){super(...arguments),this.refineRenderProps=A(g),this.handleHeightChange=(e,t)=>{this.props.onHeightChange&&this.props.onHeightChange(N(e,"tr"),t)}}render(){let{props:e,context:t}=this,{options:r}=t,s=this.refineRenderProps({resource:e.resource,context:t});return z("tr",{ref:e.elRef},z(x,{elTag:"td",elClasses:["fc-timeline-lane","fc-resource"],elAttrs:{"data-resource-id":e.resource.id},renderProps:s,generatorName:"resourceLaneContent",customGenerator:r.resourceLaneContent,classNameGenerator:r.resourceLaneClassNames,didMount:r.resourceLaneDidMount,willUnmount:r.resourceLaneWillUnmount},(t=>z("div",{className:"fc-timeline-lane-frame",style:{height:e.innerHeight}},z(t,{elTag:"div",elClasses:["fc-timeline-lane-misc"]}),z(n,{dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange,nextDayThreshold:e.nextDayThreshold,businessHours:e.businessHours,eventStore:e.eventStore,eventUiBases:e.eventUiBases,dateSelection:e.dateSelection,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,timelineCoords:e.timelineCoords,onHeightChange:this.handleHeightChange,resourceId:e.resource.id})))))}}class K extends R{render(){let{props:e,context:t}=this,{renderHooks:r}=e,s={groupValue:e.groupValue,view:t.viewApi};return z("tr",{ref:e.elRef},z(x,{elTag:"td",elRef:e.elRef,elClasses:["fc-timeline-lane","fc-resource-group",t.theme.getClass("tableCellShaded")],renderProps:s,generatorName:"resourceGroupLaneContent",customGenerator:r.laneContent,classNameGenerator:r.laneClassNames,didMount:r.laneDidMount,willUnmount:r.laneWillUnmount},(t=>z(t,{elTag:"div",elStyle:{height:e.innerHeight}}))))}}class J extends R{render(){let{props:e,context:t}=this,{rowElRefs:r,innerHeights:s}=e;return z("tbody",null,e.rowNodes.map(((o,i)=>{if(o.group)return z(K,{key:o.id,elRef:r.createRef(o.id),groupValue:o.group.value,renderHooks:o.group.spec,innerHeight:s[i]||""});if(o.resource){let l=o.resource;return z(Z,Object.assign({key:o.id,elRef:r.createRef(o.id)},e.splitProps[l.id],{resource:l,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange,nextDayThreshold:t.options.nextDayThreshold,businessHours:l.businessHours||e.fallbackBusinessHours,innerHeight:s[i]||"",timelineCoords:e.slatCoords,onHeightChange:e.onRowHeightChange}))}return null})))}}class Q extends R{constructor(){super(...arguments),this.rootElRef=U(),this.rowElRefs=new y}render(){let{props:e,context:t}=this;return z("table",{ref:this.rootElRef,"aria-hidden":!0,className:"fc-scrollgrid-sync-table "+t.theme.getClass("table"),style:{minWidth:e.tableMinWidth,width:e.clientWidth,height:e.minHeight}},z(J,{rowElRefs:this.rowElRefs,rowNodes:e.rowNodes,dateProfile:e.dateProfile,tDateProfile:e.tDateProfile,nowDate:e.nowDate,todayRange:e.todayRange,splitProps:e.splitProps,fallbackBusinessHours:e.fallbackBusinessHours,slatCoords:e.slatCoords,innerHeights:e.innerHeights,onRowHeightChange:e.onRowHeightChange}))}componentDidMount(){this.updateCoords()}componentDidUpdate(){this.updateCoords()}componentWillUnmount(){this.props.onRowCoords&&this.props.onRowCoords(null)}updateCoords(){let{props:e}=this;var t;e.onRowCoords&&null!==e.clientWidth&&this.props.onRowCoords(new T(this.rootElRef.current,(t=this.rowElRefs.currentMap,e.rowNodes.map((e=>t[e.id]))),!1,!0))}}class $ extends v{constructor(){super(...arguments),this.computeHasResourceBusinessHours=w(ee),this.resourceSplitter=new p,this.bgSlicer=new s,this.slatsRef=U(),this.state={slatCoords:null},this.handleEl=e=>{e?this.context.registerInteractiveComponent(this,{el:e}):this.context.unregisterInteractiveComponent(this)},this.handleSlatCoords=e=>{this.setState({slatCoords:e}),this.props.onSlatCoords&&this.props.onSlatCoords(e)},this.handleRowCoords=e=>{this.rowCoords=e,this.props.onRowCoords&&this.props.onRowCoords(e)}}render(){let{props:e,state:t,context:r}=this,{dateProfile:s,tDateProfile:n}=e,a=D(n.slotDuration).unit,d=this.computeHasResourceBusinessHours(e.rowNodes),c=this.resourceSplitter.splitProps(e),u=c[""],h=this.bgSlicer.sliceProps(u,s,n.isTimeScale?null:e.nextDayThreshold,r,s,r.dateProfileGenerator,n,r.dateEnv),p=t.slatCoords&&t.slatCoords.dateProfile===e.dateProfile?t.slatCoords:null;return z("div",{ref:this.handleEl,className:["fc-timeline-body",e.expandRows?"fc-timeline-body-expandrows":""].join(" "),style:{minWidth:e.tableMinWidth}},z(E,{unit:a},((t,a)=>z(L,null,z(o,{ref:this.slatsRef,dateProfile:s,tDateProfile:n,nowDate:t,todayRange:a,clientWidth:e.clientWidth,tableColGroupNode:e.tableColGroupNode,tableMinWidth:e.tableMinWidth,onCoords:this.handleSlatCoords,onScrollLeftRequest:e.onScrollLeftRequest}),z(i,{businessHourSegs:d?null:h.businessHourSegs,bgEventSegs:h.bgEventSegs,timelineCoords:p,eventResizeSegs:h.eventResize?h.eventResize.segs:[],dateSelectionSegs:h.dateSelectionSegs,nowDate:t,todayRange:a}),z(Q,{rowNodes:e.rowNodes,dateProfile:s,tDateProfile:e.tDateProfile,nowDate:t,todayRange:a,splitProps:c,fallbackBusinessHours:d?e.businessHours:null,clientWidth:e.clientWidth,minHeight:e.expandRows?e.clientHeight:"",tableMinWidth:e.tableMinWidth,innerHeights:e.rowInnerHeights,slatCoords:p,onRowCoords:this.handleRowCoords,onRowHeightChange:e.onRowHeightChange}),r.options.nowIndicator&&p&&p.isDateInRange(t)&&z("div",{className:"fc-timeline-now-indicator-container"},z(W,{elClasses:["fc-timeline-now-indicator-line"],elStyle:l(p.dateToCoord(t),r.isRtl),isAxis:!1,date:t}))))))}queryHit(e,t){let r=this.rowCoords,s=r.topToIndex(t);if(null!=s){let t=this.props.rowNodes[s].resource;if(t){let o=this.slatsRef.current.positionToHit(e);if(o)return{dateProfile:this.props.dateProfile,dateSpan:{range:o.dateSpan.range,allDay:o.dateSpan.allDay,resourceId:t.id},rect:{left:o.left,right:o.right,top:r.tops[s],bottom:r.bottoms[s]},dayEl:o.dayEl,layer:0}}}return null}}function ee(e){for(let t of e){let e=t.resource;if(e&&e.businessHours)return!0}return!1}class te extends R{constructor(){super(...arguments),this.scrollGridRef=U(),this.timeBodyScrollerElRef=U(),this.spreadsheetHeaderChunkElRef=U(),this.rootElRef=U(),this.ensureScrollGridResizeId=0,this.state={resourceAreaWidthOverride:null},this.ensureScrollGridResize=()=>{this.ensureScrollGridResizeId&&clearTimeout(this.ensureScrollGridResizeId),this.ensureScrollGridResizeId=setTimeout((()=>{this.scrollGridRef.current.handleSizing(!1)}),P.SCROLLGRID_RESIZE_INTERVAL+1)}}render(){let{props:e,state:t,context:r}=this,{options:s}=r,o=!e.forPrint&&M(s),i=!e.forPrint&&G(s),l=[{type:"header",key:"header",syncRowHeights:!0,isSticky:o,chunks:[{key:"datagrid",elRef:this.spreadsheetHeaderChunkElRef,tableClassName:"fc-datagrid-header",rowContent:e.spreadsheetHeaderRows},{key:"divider",outerContent:z("td",{role:"presentation",className:"fc-resource-timeline-divider "+r.theme.getClass("tableCellShaded")})},{key:"timeline",content:e.timeHeaderContent}]},{type:"body",key:"body",syncRowHeights:!0,liquid:!0,expandRows:Boolean(s.expandRows),chunks:[{key:"datagrid",tableClassName:"fc-datagrid-body",rowContent:e.spreadsheetBodyRows},{key:"divider",outerContent:z("td",{role:"presentation",className:"fc-resource-timeline-divider "+r.theme.getClass("tableCellShaded")})},{key:"timeline",scrollerElRef:this.timeBodyScrollerElRef,content:e.timeBodyContent}]}];i&&l.push({type:"footer",key:"footer",isSticky:!0,chunks:[{key:"datagrid",content:k},{key:"divider",outerContent:z("td",{role:"presentation",className:"fc-resource-timeline-divider "+r.theme.getClass("tableCellShaded")})},{key:"timeline",content:k}]});let n=null!=t.resourceAreaWidthOverride?t.resourceAreaWidthOverride:s.resourceAreaWidth;return z(m,{ref:this.scrollGridRef,elRef:this.rootElRef,liquid:!e.isHeightAuto&&!e.forPrint,forPrint:e.forPrint,collapsibleWidth:!1,colGroups:[{cols:e.spreadsheetCols,width:n},{cols:[]},{cols:e.timeCols}],sections:l})}forceTimeScroll(e){this.scrollGridRef.current.forceScrollLeft(2,e)}forceResourceScroll(e){this.scrollGridRef.current.forceScrollTop(1,e)}getResourceScroll(){return this.timeBodyScrollerElRef.current.scrollTop}componentDidMount(){this.initSpreadsheetResizing()}componentWillUnmount(){this.destroySpreadsheetResizing()}initSpreadsheetResizing(){let{isRtl:e,pluginHooks:t}=this.context,r=t.elementDraggingImpl,s=this.spreadsheetHeaderChunkElRef.current;if(r){let t,o,i=this.rootElRef.current,l=this.spreadsheetResizerDragging=new r(i,".fc-resource-timeline-divider");l.emitter.on("dragstart",(()=>{t=s.getBoundingClientRect().width,o=i.getBoundingClientRect().width})),l.emitter.on("dragmove",(r=>{let s=t+r.deltaX*(e?-1:1);s=Math.max(s,30),s=Math.min(s,o-30),this.setState({resourceAreaWidthOverride:s},this.ensureScrollGridResize)})),l.setAutoScrollEnabled(!1)}}destroySpreadsheetResizing(){this.spreadsheetResizerDragging&&this.spreadsheetResizerDragging.destroy()}}class re extends R{constructor(t,r){super(t,r),this.processColOptions=w(le),this.buildTimelineDateProfile=w(e),this.hasNesting=w(ie),this.buildRowNodes=w(d),this.layoutRef=U(),this.rowNodes=[],this.renderedRowNodes=[],this.buildRowIndex=w(se),this.handleSlatCoords=e=>{this.setState({slatCoords:e})},this.handleRowCoords=e=>{this.rowCoords=e,this.scrollResponder.update(!1)},this.handleMaxCushionWidth=e=>{this.setState({slotCushionMaxWidth:Math.ceil(e)})},this.handleScrollLeftRequest=e=>{this.layoutRef.current.forceTimeScroll(e)},this.handleScrollRequest=e=>{let{rowCoords:t}=this,r=this.layoutRef.current,s=e.rowId||e.resourceId;if(t){if(s){let o=this.buildRowIndex(this.renderedRowNodes)[s];if(null!=o){let s=null!=e.fromBottom?t.bottoms[o]-e.fromBottom:t.tops[o];r.forceResourceScroll(s)}}return!0}return null},this.handleColWidthChange=e=>{this.setState({spreadsheetColWidths:e})},this.state={resourceAreaWidth:r.options.resourceAreaWidth,spreadsheetColWidths:[]}}render(){let{props:e,state:s,context:o}=this,{options:i,viewSpec:l}=o,{superHeaderRendering:n,groupSpecs:a,orderSpecs:d,isVGrouping:c,colSpecs:u}=this.processColOptions(o.options),h=this.buildTimelineDateProfile(e.dateProfile,o.dateEnv,i,o.dateProfileGenerator),p=this.rowNodes=this.buildRowNodes(e.resourceStore,a,d,c,e.resourceEntityExpansions,i.resourcesInitiallyExpanded),{slotMinWidth:f}=i,g=t(h,f||this.computeFallbackSlotMinWidth(h));return z(S,{elClasses:["fc-resource-timeline",!this.hasNesting(p)&&"fc-resource-timeline-flat","fc-timeline",!1===i.eventOverlap?"fc-timeline-overlap-disabled":"fc-timeline-overlap-enabled"],viewSpec:l},z(te,{ref:this.layoutRef,forPrint:e.forPrint,isHeightAuto:e.isHeightAuto,spreadsheetCols:oe(u,s.spreadsheetColWidths,""),spreadsheetHeaderRows:e=>z(Y,{superHeaderRendering:n,colSpecs:u,onColWidthChange:this.handleColWidthChange,rowInnerHeights:e.rowSyncHeights}),spreadsheetBodyRows:e=>z(L,null,this.renderSpreadsheetRows(p,u,e.rowSyncHeights)),timeCols:g,timeHeaderContent:t=>z(r,{clientWidth:t.clientWidth,clientHeight:t.clientHeight,tableMinWidth:t.tableMinWidth,tableColGroupNode:t.tableColGroupNode,dateProfile:e.dateProfile,tDateProfile:h,slatCoords:s.slatCoords,rowInnerHeights:t.rowSyncHeights,onMaxCushionWidth:f?null:this.handleMaxCushionWidth}),timeBodyContent:t=>z($,{dateProfile:e.dateProfile,clientWidth:t.clientWidth,clientHeight:t.clientHeight,tableMinWidth:t.tableMinWidth,tableColGroupNode:t.tableColGroupNode,expandRows:t.expandRows,tDateProfile:h,rowNodes:p,businessHours:e.businessHours,dateSelection:e.dateSelection,eventStore:e.eventStore,eventUiBases:e.eventUiBases,eventSelection:e.eventSelection,eventDrag:e.eventDrag,eventResize:e.eventResize,resourceStore:e.resourceStore,nextDayThreshold:o.options.nextDayThreshold,rowInnerHeights:t.rowSyncHeights,onSlatCoords:this.handleSlatCoords,onRowCoords:this.handleRowCoords,onScrollLeftRequest:this.handleScrollLeftRequest,onRowHeightChange:t.reportRowHeightChange})}))}renderSpreadsheetRows(e,t,r){return e.map(((e,s)=>e.group?z(F,{key:e.id,id:e.id,spreadsheetColCnt:t.length,isExpanded:e.isExpanded,group:e.group,innerHeight:r[s]||""}):e.resource?z(_,{key:e.id,colSpecs:t,rowSpans:e.rowSpans,depth:e.depth,isExpanded:e.isExpanded,hasChildren:e.hasChildren,resource:e.resource,innerHeight:r[s]||""}):null))}componentDidMount(){this.renderedRowNodes=this.rowNodes,this.scrollResponder=this.context.createScrollResponder(this.handleScrollRequest)}getSnapshotBeforeUpdate(){return this.props.forPrint?{}:{resourceScroll:this.queryResourceScroll()}}componentDidUpdate(e,t,r){this.renderedRowNodes=this.rowNodes,this.scrollResponder.update(e.dateProfile!==this.props.dateProfile),r.resourceScroll&&this.handleScrollRequest(r.resourceScroll)}componentWillUnmount(){this.scrollResponder.detach()}computeFallbackSlotMinWidth(e){return Math.max(30,(this.state.slotCushionMaxWidth||0)/e.slotsPerLabel)}queryResourceScroll(){let{rowCoords:e,renderedRowNodes:t}=this;if(e){let r=this.layoutRef.current,s=e.bottoms,o=r.getResourceScroll(),i={};for(let e=0;e<s.length;e+=1){let r=t[e],l=s[e]-o;if(l>0){i.rowId=r.id,i.fromBottom=l;break}}return i}return null}}function se(e){let t={};for(let r=0;r<e.length;r+=1)t[e[r].id]=r;return t}function oe(e,t,r=""){return e.map(((e,s)=>({className:e.isMain?"fc-main-col":"",width:t[s]||e.width||r})))}function ie(e){for(let t of e){if(t.group)return!0;if(t.resource&&t.hasChildren)return!0}return!1}function le(e){let t=e.resourceAreaColumns||[],r=null;t.length?e.resourceAreaHeaderContent&&(r={headerClassNames:e.resourceAreaHeaderClassNames,headerContent:e.resourceAreaHeaderContent,headerDidMount:e.resourceAreaHeaderDidMount,headerWillUnmount:e.resourceAreaHeaderWillUnmount}):t.push({headerClassNames:e.resourceAreaHeaderClassNames,headerContent:e.resourceAreaHeaderContent,headerDefault:()=>"Resources",headerDidMount:e.resourceAreaHeaderDidMount,headerWillUnmount:e.resourceAreaHeaderWillUnmount});let s=[],o=[],i=[],l=!1;for(let r of t)r.group?o.push(Object.assign(Object.assign({},r),{cellClassNames:r.cellClassNames||e.resourceGroupLabelClassNames,cellContent:r.cellContent||e.resourceGroupLabelContent,cellDidMount:r.cellDidMount||e.resourceGroupLabelDidMount,cellWillUnmount:r.cellWillUnmount||e.resourceGroupLaneWillUnmount})):s.push(r);let n=s[0];if(n.isMain=!0,n.cellClassNames=n.cellClassNames||e.resourceLabelClassNames,n.cellContent=n.cellContent||e.resourceLabelContent,n.cellDidMount=n.cellDidMount||e.resourceLabelDidMount,n.cellWillUnmount=n.cellWillUnmount||e.resourceLabelWillUnmount,o.length)i=o,l=!0;else{let t=e.resourceGroupField;t&&i.push({field:t,labelClassNames:e.resourceGroupLabelClassNames,labelContent:e.resourceGroupLabelContent,labelDidMount:e.resourceGroupLabelDidMount,labelWillUnmount:e.resourceGroupLabelWillUnmount,laneClassNames:e.resourceGroupLaneClassNames,laneContent:e.resourceGroupLaneContent,laneDidMount:e.resourceGroupLaneDidMount,laneWillUnmount:e.resourceGroupLaneWillUnmount})}let a=e.resourceOrder||c,d=[];for(let e of a){let t=!1;for(let r of i)if(r.field===e.field){r.order=e.order,t=!0;break}t||d.push(e)}return{superHeaderRendering:r,isVGrouping:l,groupSpecs:i,colSpecs:o.concat(s),orderSpecs:d}}re.addStateEquality({spreadsheetColWidths:C});b(".fc .fc-resource-timeline-divider{cursor:col-resize;width:3px}.fc .fc-resource-group{font-weight:inherit;text-align:inherit}.fc .fc-resource-timeline .fc-resource-group:not([rowspan]){background:var(--fc-neutral-bg-color)}.fc .fc-timeline-lane-frame{position:relative}.fc .fc-timeline-overlap-enabled .fc-timeline-lane-frame .fc-timeline-events{box-sizing:content-box;padding-bottom:10px}.fc-timeline-body-expandrows td.fc-timeline-lane{position:relative}.fc-timeline-body-expandrows .fc-timeline-lane-frame{position:static}.fc-datagrid-cell-frame-liquid{height:100%}.fc-liquid-hack .fc-datagrid-cell-frame-liquid{bottom:0;height:auto;left:0;position:absolute;right:0;top:0}.fc .fc-datagrid-header .fc-datagrid-cell-frame{align-items:center;display:flex;justify-content:flex-start;position:relative}.fc .fc-datagrid-cell-resizer{bottom:0;cursor:col-resize;position:absolute;top:0;width:5px;z-index:1}.fc .fc-datagrid-cell-cushion{overflow:hidden;padding:8px;white-space:nowrap}.fc .fc-datagrid-expander{cursor:pointer;opacity:.65}.fc .fc-datagrid-expander .fc-icon{display:inline-block;width:1em}.fc .fc-datagrid-expander-placeholder{cursor:auto}.fc .fc-resource-timeline-flat .fc-datagrid-expander-placeholder{display:none}.fc-direction-ltr .fc-datagrid-cell-resizer{right:-3px}.fc-direction-rtl .fc-datagrid-cell-resizer{left:-3px}.fc-direction-ltr .fc-datagrid-expander{margin-right:3px}.fc-direction-rtl .fc-datagrid-expander{margin-left:3px}");export{Z as ResourceTimelineLane,re as ResourceTimelineView,_ as SpreadsheetRow};
2
+ //# sourceMappingURL=internal.js.map