@zealicsolutions/web-ui 1.0.43 → 1.0.44-beta-0
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.
- package/dist/cjs/containers/types/moleculeTypes.d.ts +10 -2
- package/dist/cjs/index.js +1582 -1582
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/molecules/Calendar/CalendarMolecule.d.ts +33 -0
- package/dist/cjs/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
- package/dist/cjs/molecules/Visit/VisitMolecule.d.ts +11 -0
- package/dist/esm/containers/types/moleculeTypes.d.ts +10 -2
- package/dist/esm/molecules/BaseMolecule.js +1 -1
- package/dist/esm/molecules/BaseMolecule.js.map +1 -1
- package/dist/esm/molecules/Calendar/CalendarMolecule.d.ts +33 -0
- package/dist/esm/molecules/Calendar/CalendarMolecule.js +2 -0
- package/dist/esm/molecules/Calendar/CalendarMolecule.js.map +1 -0
- package/dist/esm/molecules/Calendar/CalendarMolecule.stories.d.ts +3 -0
- package/dist/esm/molecules/Visit/VisitMolecule.d.ts +11 -0
- package/dist/esm/node_modules/@fullcalendar/core/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/core/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/core/internal-common.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/core/internal-common.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/daygrid/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/daygrid/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/daygrid/internal.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/interaction/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/interaction/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/list/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/list/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/list/internal.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/list/internal.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/premium-common/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/premium-common/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/react/dist/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/react/dist/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/resource/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/resource/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/resource/internal-common.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/resource-daygrid/internal.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/resource-timegrid/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/resource-timegrid/internal.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/scrollgrid/internal.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/timegrid/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/timegrid/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/timegrid/internal.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/timeline/index.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/timeline/index.js.map +1 -0
- package/dist/esm/node_modules/@fullcalendar/timeline/internal.js +2 -0
- package/dist/esm/node_modules/@fullcalendar/timeline/internal.js.map +1 -0
- package/dist/esm/node_modules/is-hotkey/lib/index.js +1 -1
- package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js +2 -0
- package/dist/esm/node_modules/preact/compat/dist/compat.mjs.js.map +1 -0
- package/dist/esm/node_modules/preact/dist/preact.mjs.js +2 -0
- package/dist/esm/node_modules/preact/dist/preact.mjs.js.map +1 -0
- package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js +2 -0
- package/dist/esm/node_modules/preact/hooks/dist/hooks.mjs.js.map +1 -0
- package/dist/esm/node_modules/react-slick/lib/index.js +1 -1
- package/dist/index.d.ts +41 -3
- 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))}class k extends r{constructor(){super(...arguments),this.refineRenderProps=s(B)}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:T,classNameGenerator:r.resourceLabelClassNames,didMount:r.resourceLabelDidMount,willUnmount:r.resourceLabelWillUnmount}))}))}}function T(e){return e.resource.title||e.resource.id}function B(e){return{resource:new I(e.context,e.resource),date:e.date?e.context.dateEnv.toDate(e.date):null,view:e.context.viewApi}}class A extends r{render(){let{props:e}=this;return E(k,{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 F extends r{constructor(){super(...arguments),this.buildDateFormat=n(N)}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(A,{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(A,{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(A,{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 N(e,t,r){return e||v(t,r)}class H{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 U{constructor(e,t,r){this.dayTableModel=e,this.resources=t,this.context=r,this.resourceIndex=new H(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 z extends U{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 K extends U{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 M=[];class L{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:M),o.push(t?u.fgEventSegs:M),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 V 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 G(e,t){return J(e,[],t,!1,{},!0).map((e=>e.resource))}function J(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:$(s),children:[]}}for(let s in e){let o=e[s];if(o.parentId){let e=r[o.parentId];e&&X(r[s],e.children,t)}}return r}(e,s),n=[];for(let e in o){let l=o[e];l.resource.parentId||Q(l,n,r,0,t,s)}return n}(e,s?-1:1,t,r),i=[];return W(l,i,s,[],0,o,n),i}function W(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(W(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&&W(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&&W(a.children,t,r,s,o+1,n,l)}}}function Q(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]);Q(e,l.children,r.slice(1),s+1,o,n)}else X(e,t,n)}function X(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 $(e){let t=Object.assign(Object.assign(Object.assign({},e.extendedProps),e.ui),e);return delete t.ui,delete t.extendedProps,t}export{U as A,w as D,I as R,L as V,O as a,F as b,z as c,K as d,V as e,G as f,_ as g,P as h,J as j,$ as k,k as l,j as p};
|
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","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","input","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"],"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{bG as e,B as t,aA as l,cd as s,c0 as i,aR as r,c1 as o,ce as n,c3 as h,c2 as c,c4 as a,aB as d,c5 as u,aK as f,cc as p,aJ as g,a as S,W as y,i as m,E as R,c6 as w,cb as C,b$ as W,b_ as b,aI as E,aM as x,aH as M,b1 as v,aN as k,F as H,D as L,c7 as B,b2 as z}from"../core/internal-common.js";import{createElement as D,Fragment as T,createRef as I}from"../../preact/dist/preact.mjs.js";function P(e){let t=e.scrollLeft;if("rtl"===window.getComputedStyle(e).direction)switch(X()){case"negative":t*=-1;case"reverse":t=e.scrollWidth-t-e.clientWidth}return t}function q(e,t){if("rtl"===window.getComputedStyle(e).direction)switch(X()){case"reverse":t=e.scrollWidth-t;break;case"negative":t=-(e.scrollWidth-t)}e.scrollLeft=t}let G;function X(){return G||(G=function(){let e=document.createElement("div");e.style.position="absolute",e.style.top="-1000px",e.style.width="100px",e.style.height="100px",e.style.overflow="scroll",e.style.direction="rtl";let t,l=document.createElement("div");l.style.width="200px",l.style.height="200px",e.appendChild(l),document.body.appendChild(e),e.scrollLeft>0?t="positive":(e.scrollLeft=1,t=e.scrollLeft>0?"reverse":"negative");return x(e),t}())}class _{constructor(e,t){this.scrollEl=e,this.isRtl=t,this.updateSize=()=>{let{scrollEl:e}=this,t=f(e,".fc-sticky");!function(e,t,l){e.forEach(((e,s)=>{let i,{textAlign:r,elWidth:o,parentBound:n}=t[s],h=n.right-n.left;i="center"===r&&h>l?(l-o)/2:"",k(e,{left:i,right:i,top:0})}))}(t,this.queryElGeoms(t),e.clientWidth)}}queryElGeoms(e){let{scrollEl:t,isRtl:l}=this,s=function(e){let t=e.getBoundingClientRect(),l=z(e);return{left:t.left+l.borderLeft+l.scrollbarLeft-P(e),top:t.top+l.borderTop-e.scrollTop}}(t),i=[];for(let t of e){let e=M(v(t.parentNode,!0,!0),-s.left,-s.top),r=t.getBoundingClientRect(),o=window.getComputedStyle(t),n=window.getComputedStyle(t.parentNode).textAlign,h=null;"start"===n?n=l?"right":"left":"end"===n&&(n=l?"left":"right"),"sticky"!==o.position&&(h=M(r,-s.left-(parseFloat(o.left)||0),-s.top-(parseFloat(o.top)||0))),i.push({parentBound:e,naturalBound:h,elWidth:r.width,elHeight:r.height,textAlign:n})}return i}}class Y extends t{constructor(){super(...arguments),this.elRef=I(),this.state={xScrollbarWidth:0,yScrollbarWidth:0},this.handleScroller=e=>{this.scroller=e,y(this.props.scrollerRef,e)},this.handleSizing=()=>{let{props:e}=this;"scroll-hidden"===e.overflowY&&this.setState({yScrollbarWidth:this.scroller.getYScrollbarWidth()}),"scroll-hidden"===e.overflowX&&this.setState({xScrollbarWidth:this.scroller.getXScrollbarWidth()})}}render(){let{props:e,state:t,context:l}=this,s=l.isRtl&&n(),i=0,r=0,o=0,{overflowX:h,overflowY:c}=e;return e.forPrint&&(h="visible",c="visible"),"scroll-hidden"===h&&(o=t.xScrollbarWidth),"scroll-hidden"===c&&null!=t.yScrollbarWidth&&(s?i=t.yScrollbarWidth:r=t.yScrollbarWidth),D("div",{ref:this.elRef,className:"fc-scroller-harness"+(e.liquid?" fc-scroller-harness-liquid":"")},D(C,{ref:this.handleScroller,elRef:this.props.scrollerElRef,overflowX:"scroll-hidden"===h?"scroll":h,overflowY:"scroll-hidden"===c?"scroll":c,overcomeLeft:i,overcomeRight:r,overcomeBottom:o,maxHeight:"number"==typeof e.maxHeight?e.maxHeight+("scroll-hidden"===h?t.xScrollbarWidth:0):"",liquid:e.liquid,liquidIsAbsolute:!0},e.children))}componentDidMount(){this.handleSizing(),this.context.addResizeHandler(this.handleSizing)}getSnapshotBeforeUpdate(e){return this.props.forPrint&&!e.forPrint?{simulateScrollLeft:this.scroller.el.scrollLeft}:{}}componentDidUpdate(e,t,l){const{props:s,scroller:{el:i}}=this;if(R(e,s)||this.handleSizing(),void 0!==l.simulateScrollLeft)i.style.left=-l.simulateScrollLeft+"px";else if(!s.forPrint&&e.forPrint){const e=-parseInt(i.style.left);i.style.left="",i.scrollLeft=e}}componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing)}needsXScrolling(){return this.scroller.needsXScrolling()}needsYScrolling(){return this.scroller.needsYScrolling()}}const N="wheel mousewheel DomMouseScroll MozMousePixelScroll".split(" ");class U{constructor(e){this.el=e,this.emitter=new H,this.isScrolling=!1,this.isTouching=!1,this.isRecentlyWheeled=!1,this.isRecentlyScrolled=!1,this.wheelWaiter=new L(this._handleWheelWaited.bind(this)),this.scrollWaiter=new L(this._handleScrollWaited.bind(this)),this.handleScroll=()=>{this.startScroll(),this.emitter.trigger("scroll",this.isRecentlyWheeled,this.isTouching),this.isRecentlyScrolled=!0,this.scrollWaiter.request(500)},this.handleWheel=()=>{this.isRecentlyWheeled=!0,this.wheelWaiter.request(500)},this.handleTouchStart=()=>{this.isTouching=!0},this.handleTouchEnd=()=>{this.isTouching=!1,this.isRecentlyScrolled||this.endScroll()},e.addEventListener("scroll",this.handleScroll),e.addEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.addEventListener("touchend",this.handleTouchEnd);for(let t of N)e.addEventListener(t,this.handleWheel)}destroy(){let{el:e}=this;e.removeEventListener("scroll",this.handleScroll),e.removeEventListener("touchstart",this.handleTouchStart,{passive:!0}),e.removeEventListener("touchend",this.handleTouchEnd);for(let t of N)e.removeEventListener(t,this.handleWheel)}startScroll(){this.isScrolling||(this.isScrolling=!0,this.emitter.trigger("scrollStart",this.isRecentlyWheeled,this.isTouching))}endScroll(){this.isScrolling&&(this.emitter.trigger("scrollEnd"),this.isScrolling=!1,this.isRecentlyScrolled=!0,this.isRecentlyWheeled=!1,this.scrollWaiter.clear(),this.wheelWaiter.clear())}_handleScrollWaited(){this.isRecentlyScrolled=!1,this.isTouching||this.endScroll()}_handleWheelWaited(){this.isRecentlyWheeled=!1}}class A{constructor(e,t){this.isVertical=e,this.scrollEls=t,this.isPaused=!1,this.scrollListeners=t.map((e=>this.bindScroller(e)))}destroy(){for(let e of this.scrollListeners)e.destroy()}bindScroller(e){let{scrollEls:t,isVertical:l}=this,s=new U(e);return s.emitter.on("scroll",((s,i)=>{if(!this.isPaused&&((!this.masterEl||this.masterEl!==e&&(s||i))&&this.assignMaster(e),this.masterEl===e))for(let s of t)s!==e&&(l?s.scrollTop=e.scrollTop:s.scrollLeft=e.scrollLeft)})),s.emitter.on("scrollEnd",(()=>{this.masterEl===e&&(this.masterEl=null)})),s}assignMaster(e){this.masterEl=e;for(let t of this.scrollListeners)t.el!==e&&t.endScroll()}forceScrollLeft(e){this.isPaused=!0;for(let t of this.scrollListeners)q(t.el,e);this.isPaused=!1}forceScrollTop(e){this.isPaused=!0;for(let t of this.scrollListeners)t.el.scrollTop=e;this.isPaused=!1}}e.SCROLLGRID_RESIZE_INTERVAL=500;class j extends t{constructor(){super(...arguments),this.compileColGroupStats=l(Z,$),this.renderMicroColGroups=l(W),this.clippedScrollerRefs=new s,this.scrollerElRefs=new s(this._handleScrollerEl.bind(this)),this.chunkElRefs=new s(this._handleChunkEl.bind(this)),this.scrollSyncersBySection={},this.scrollSyncersByColumn={},this.rowUnstableMap=new Map,this.rowInnerMaxHeightMap=new Map,this.anyRowHeightsChanged=!1,this.recentSizingCnt=0,this.state={shrinkWidths:[],forceYScrollbars:!1,forceXScrollbars:!1,scrollerClientWidths:{},scrollerClientHeights:{},sectionRowMaxHeights:[]},this.handleSizing=(e,t)=>{if(!this.allowSizing())return;t||(this.anyRowHeightsChanged=!0);let l={};(e||!t&&!this.rowUnstableMap.size)&&(l.sectionRowMaxHeights=this.computeSectionRowMaxHeights()),this.setState(Object.assign(Object.assign({shrinkWidths:this.computeShrinkWidths()},this.computeScrollerDims()),l),(()=>{this.rowUnstableMap.size||this.updateStickyScrolling()}))},this.handleRowHeightChange=(e,t)=>{let{rowUnstableMap:l,rowInnerMaxHeightMap:s}=this;if(t){l.delete(e);let t=F(e);s.has(e)&&s.get(e)===t||(s.set(e,t),this.anyRowHeightsChanged=!0),!l.size&&this.anyRowHeightsChanged&&(this.anyRowHeightsChanged=!1,this.setState({sectionRowMaxHeights:this.computeSectionRowMaxHeights()}))}else l.set(e,!0)}}render(){let{props:e,state:t,context:l}=this,{shrinkWidths:s}=t,o=this.compileColGroupStats(e.colGroups.map((e=>[e]))),n=this.renderMicroColGroups(o.map(((e,t)=>[e.cols,s[t]]))),h=i(e.liquid,l);this.getDims();let c,a=e.sections,d=a.length,u=0,f=[],p=[],g=[];for(;u<d&&"header"===(c=a[u]).type;)f.push(this.renderSection(c,u,o,n,t.sectionRowMaxHeights,!0)),u+=1;for(;u<d&&"body"===(c=a[u]).type;)p.push(this.renderSection(c,u,o,n,t.sectionRowMaxHeights,!1)),u+=1;for(;u<d&&"footer"===(c=a[u]).type;)g.push(this.renderSection(c,u,o,n,t.sectionRowMaxHeights,!0)),u+=1;const S=!r(),y={role:"rowgroup"};return D("table",{ref:e.elRef,role:"grid",className:h.join(" ")},function(e,t){let l=e.map(((e,l)=>{let s=e.width;return"shrink"===s&&(s=e.totalColWidth+w(t[l])+1),D("col",{style:{width:s}})}));return D("colgroup",{},...l)}(o,s),Boolean(!S&&f.length)&&D("thead",y,...f),Boolean(!S&&p.length)&&D("tbody",y,...p),Boolean(!S&&g.length)&&D("tfoot",y,...g),S&&D("tbody",y,...f,...p,...g))}renderSection(e,t,l,s,i,r){return"outerContent"in e?D(T,{key:e.key},e.outerContent):D("tr",{key:e.key,role:"presentation",className:o(e,this.props.liquid).join(" ")},e.chunks.map(((o,n)=>this.renderChunk(e,t,l[n],s[n],o,n,(i[t]||[])[n]||[],r))))}renderChunk(e,t,l,s,i,r,o,d){if("outerContent"in i)return D(T,{key:i.key},i.outerContent);let{state:u}=this,{scrollerClientWidths:f,scrollerClientHeights:p}=u,[g,S]=this.getDims(),y=t*S+r,m=r===(!this.context.isRtl||n()?S-1:0),R=t===g-1,w=R&&u.forceXScrollbars,C=m&&u.forceYScrollbars,W=l&&l.allowXScrolling,b=h(this.props,e),E=c(this.props,e),x=e.expandRows&&E,M=l&&l.totalColMinWidth||"",v=a(e,i,{tableColGroupNode:s,tableMinWidth:M,clientWidth:void 0!==f[y]?f[y]:null,clientHeight:void 0!==p[y]?p[y]:null,expandRows:x,syncRowHeights:Boolean(e.syncRowHeights),rowSyncHeights:o,reportRowHeightChange:this.handleRowHeightChange},d),k=w?R?"scroll":"scroll-hidden":W?R?"auto":"scroll-hidden":"hidden",H=C?m?"scroll":"scroll-hidden":b?m?"auto":"scroll-hidden":"hidden";return v=D(Y,{ref:this.clippedScrollerRefs.createRef(y),scrollerElRef:this.scrollerElRefs.createRef(y),overflowX:k,overflowY:H,forPrint:this.props.forPrint,liquid:E,maxHeight:e.maxHeight},v),D(d?"th":"td",{key:i.key,ref:this.chunkElRefs.createRef(y),role:"presentation"},v)}componentDidMount(){this.getStickyScrolling=l(te),this.getScrollSyncersBySection=d(Q.bind(this,!0),null,ee),this.getScrollSyncersByColumn=d(Q.bind(this,!1),null,ee),this.updateScrollSyncers(),this.handleSizing(!1),this.context.addResizeHandler(this.handleSizing)}componentDidUpdate(e,t){this.updateScrollSyncers(),this.handleSizing(!1,t.sectionRowMaxHeights!==this.state.sectionRowMaxHeights)}componentWillUnmount(){this.context.removeResizeHandler(this.handleSizing),this.destroyScrollSyncers()}allowSizing(){let t=new Date;return!this.lastSizingDate||t.valueOf()>this.lastSizingDate.valueOf()+e.SCROLLGRID_RESIZE_INTERVAL?(this.lastSizingDate=t,this.recentSizingCnt=0,!0):(this.recentSizingCnt+=1)<=10}computeShrinkWidths(){let e=this.compileColGroupStats(this.props.colGroups.map((e=>[e]))),[t,l]=this.getDims(),s=t*l,i=[];return e.forEach(((e,t)=>{if(e.hasShrinkCol){let e=this.chunkElRefs.collect(t,s,l);i[t]=u(e)}})),i}computeSectionRowMaxHeights(){let e=new Map,[t,l]=this.getDims(),s=[];for(let i=0;i<t;i+=1){let t=this.props.sections[i],r=[];if(t&&t.syncRowHeights){let s=[];for(let t=0;t<l;t+=1){let r=i*l+t,o=[],n=this.chunkElRefs.currentMap[r];o=n?f(n,".fc-scrollgrid-sync-table tr").map((t=>{let l=F(t);return e.set(t,l),l})):[],s.push(o)}let o=s[0].length,n=!0;for(let e=1;e<l;e+=1){if(!(t.chunks[e]&&void 0!==t.chunks[e].outerContent)&&s[e].length!==o){n=!1;break}}if(n){for(let e=0;e<l;e+=1)r.push([]);for(let e=0;e<o;e+=1){let t=[];for(let i=0;i<l;i+=1){let l=s[i][e];null!=l&&t.push(l)}let i=Math.max(...t);for(let e=0;e<l;e+=1)r[e].push(i)}}else{let e=[];for(let t=0;t<l;t+=1)e.push(O(s[t])+s[t].length);let t=Math.max(...e);for(let e=0;e<l;e+=1){let l=s[e].length,i=t-l,o=Math.floor(i/l),n=i-o*(l-1),h=[],c=0;for(c<l&&(h.push(n),c+=1);c<l;)h.push(o),c+=1;r.push(h)}}}s.push(r)}return this.rowInnerMaxHeightMap=e,s}computeScrollerDims(){let e=p(),[t,l]=this.getDims(),s=!this.context.isRtl||n()?l-1:0,i=t-1,r=this.clippedScrollerRefs.currentMap,o=this.scrollerElRefs.currentMap,h=!1,c=!1,a={},d={};for(let e=0;e<t;e+=1){let t=r[e*l+s];if(t&&t.needsYScrolling()){h=!0;break}}for(let e=0;e<l;e+=1){let t=r[i*l+e];if(t&&t.needsXScrolling()){c=!0;break}}for(let r=0;r<t;r+=1)for(let t=0;t<l;t+=1){let n=r*l+t,u=o[n];if(u){let l=u.parentNode;a[n]=Math.floor(l.getBoundingClientRect().width-(t===s&&h?e.y:0)),d[n]=Math.floor(l.getBoundingClientRect().height-(r===i&&c?e.x:0))}}return{forceYScrollbars:h,forceXScrollbars:c,scrollerClientWidths:a,scrollerClientHeights:d}}updateStickyScrolling(){let{isRtl:e}=this.context,t=this.scrollerElRefs.getAll().map((t=>[t,e]));this.getStickyScrolling(t).forEach((e=>e.updateSize()))}updateScrollSyncers(){let[e,t]=this.getDims(),l=e*t,s={},i={},r=this.scrollerElRefs.currentMap;for(let l=0;l<e;l+=1){let e=l*t,i=e+t;s[l]=g(r,e,i,1)}for(let e=0;e<t;e+=1)i[e]=this.scrollerElRefs.collect(e,l,t);this.scrollSyncersBySection=this.getScrollSyncersBySection(s),this.scrollSyncersByColumn=this.getScrollSyncersByColumn(i)}destroyScrollSyncers(){S(this.scrollSyncersBySection,ee),S(this.scrollSyncersByColumn,ee)}getChunkConfigByIndex(e){let t=this.getDims()[1],l=Math.floor(e/t),s=e%t,i=this.props.sections[l];return i&&i.chunks[s]}forceScrollLeft(e,t){let l=this.scrollSyncersByColumn[e];l&&l.forceScrollLeft(t)}forceScrollTop(e,t){let l=this.scrollSyncersBySection[e];l&&l.forceScrollTop(t)}_handleChunkEl(e,t){let l=this.getChunkConfigByIndex(parseInt(t,10));l&&y(l.elRef,e)}_handleScrollerEl(e,t){let l=this.getChunkConfigByIndex(parseInt(t,10));l&&y(l.scrollerElRef,e)}getDims(){let e=this.props.sections.length;return[e,e?this.props.sections[0].chunks.length:0]}}function O(e){let t=0;for(let l of e)t+=l;return t}function F(e){let t=f(e,".fc-scrollgrid-sync-inner").map(V);return t.length?Math.max(...t):0}function V(e){return e.offsetHeight}function Z(e){let t=J(e.cols,"width"),l=J(e.cols,"minWidth"),s=b(e.cols);return{hasShrinkCol:s,totalColWidth:t,totalColMinWidth:l,allowXScrolling:"shrink"!==e.width&&Boolean(t||l||s),cols:e.cols,width:e.width}}function J(e,t){let l=0;for(let s of e){let e=s[t];"number"==typeof e&&(l+=e*(s.span||1))}return l}j.addStateEquality({shrinkWidths:m,scrollerClientWidths:R,scrollerClientHeights:R});const K={cols:B};function $(e,t){return E(e,t,K)}function Q(e,...t){return new A(e,t)}function ee(e){e.destroy()}function te(e,t){return new _(e,t)}export{j as ScrollGrid};
|
2
|
+
//# sourceMappingURL=internal.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"internal.js","sources":["../../../../../node_modules/@fullcalendar/scrollgrid/internal.js"],"sourcesContent":["import { computeEdges, removeElement, findElements, translateRect, computeInnerRect, applyStyle, BaseComponent, setRef, getIsRtlScrollbarOnLeft, Scroller, isPropsEqual, Emitter, DelayedRunner, config, memoizeArraylike, renderMicroColGroup, RefMap, getScrollGridClassNames, getCanVGrowWithinCell, getSectionClassNames, getAllowYScrolling, getSectionHasLiquidHeight, renderChunkContent, memoizeHashlike, computeShrinkWidth, getScrollbarWidths, collectFromHash, mapHash, isArraysEqual, sanitizeShrinkWidth, hasShrinkWidth, compareObjs, isColPropsEqual } from '@fullcalendar/core/internal.js';\nimport { createRef, createElement, Fragment } from '@fullcalendar/core/preact.js';\n\n// TODO: assume the el has no borders?\nfunction getScrollCanvasOrigin(scrollEl) {\n let rect = scrollEl.getBoundingClientRect();\n let edges = computeEdges(scrollEl); // TODO: pass in isRtl?\n return {\n left: rect.left + edges.borderLeft + edges.scrollbarLeft - getScrollFromLeftEdge(scrollEl),\n top: rect.top + edges.borderTop - scrollEl.scrollTop,\n };\n}\nfunction getScrollFromLeftEdge(el) {\n let scrollLeft = el.scrollLeft;\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'negative':\n scrollLeft *= -1; // convert to 'reverse'. fall through...\n case 'reverse': // scrollLeft is distance between scrollframe's right edge scrollcanvas's right edge\n scrollLeft = el.scrollWidth - scrollLeft - el.clientWidth;\n }\n }\n return scrollLeft;\n}\nfunction setScrollFromLeftEdge(el, scrollLeft) {\n let computedStyles = window.getComputedStyle(el); // TODO: pass in isRtl instead?\n if (computedStyles.direction === 'rtl') {\n switch (getRtlScrollSystem()) {\n case 'reverse':\n scrollLeft = el.scrollWidth - scrollLeft;\n break;\n case 'negative':\n scrollLeft = -(el.scrollWidth - scrollLeft);\n break;\n }\n }\n el.scrollLeft = scrollLeft;\n}\n// Horizontal Scroll System Detection\n// ----------------------------------------------------------------------------------------------\nlet _rtlScrollSystem;\nfunction getRtlScrollSystem() {\n return _rtlScrollSystem || (_rtlScrollSystem = detectRtlScrollSystem());\n}\nfunction detectRtlScrollSystem() {\n let el = document.createElement('div');\n el.style.position = 'absolute';\n el.style.top = '-1000px';\n el.style.width = '100px'; // must be at least the side of scrollbars or you get inaccurate values (#7335)\n el.style.height = '100px'; // \"\n el.style.overflow = 'scroll';\n el.style.direction = 'rtl';\n let innerEl = document.createElement('div');\n innerEl.style.width = '200px';\n innerEl.style.height = '200px';\n el.appendChild(innerEl);\n document.body.appendChild(el);\n let system;\n if (el.scrollLeft > 0) {\n system = 'positive'; // scroll is a positive number from the left edge\n }\n else {\n el.scrollLeft = 1;\n if (el.scrollLeft > 0) {\n system = 'reverse'; // scroll is a positive number from the right edge\n }\n else {\n system = 'negative'; // scroll is a negative number from the right edge\n }\n }\n removeElement(el);\n return system;\n}\n\nconst STICKY_SELECTOR = '.fc-sticky';\n/*\nGoes beyond mere position:sticky, allows horizontal centering\n\nREQUIREMENT: fc-sticky elements, if the fc-sticky className is taken away, should NOT have relative or absolute positioning.\nThis is because we attach the coords with JS, and the VDOM might take away the fc-sticky class but doesn't know kill the positioning.\n\nTODO: don't query text-align:center. isn't compatible with flexbox centering. instead, check natural X coord within parent container\n*/\nclass StickyScrolling {\n constructor(scrollEl, isRtl) {\n this.scrollEl = scrollEl;\n this.isRtl = isRtl;\n this.updateSize = () => {\n let { scrollEl } = this;\n let els = findElements(scrollEl, STICKY_SELECTOR);\n let elGeoms = this.queryElGeoms(els);\n let viewportWidth = scrollEl.clientWidth;\n assignStickyPositions(els, elGeoms, viewportWidth);\n };\n }\n queryElGeoms(els) {\n let { scrollEl, isRtl } = this;\n let canvasOrigin = getScrollCanvasOrigin(scrollEl);\n let elGeoms = [];\n for (let el of els) {\n let parentBound = translateRect(computeInnerRect(el.parentNode, true, true), // weird way to call this!!!\n -canvasOrigin.left, -canvasOrigin.top);\n let elRect = el.getBoundingClientRect();\n let computedStyles = window.getComputedStyle(el);\n let textAlign = window.getComputedStyle(el.parentNode).textAlign; // ask the parent\n let naturalBound = null;\n if (textAlign === 'start') {\n textAlign = isRtl ? 'right' : 'left';\n }\n else if (textAlign === 'end') {\n textAlign = isRtl ? 'left' : 'right';\n }\n if (computedStyles.position !== 'sticky') {\n naturalBound = translateRect(elRect, -canvasOrigin.left - (parseFloat(computedStyles.left) || 0), // could be 'auto'\n -canvasOrigin.top - (parseFloat(computedStyles.top) || 0));\n }\n elGeoms.push({\n parentBound,\n naturalBound,\n elWidth: elRect.width,\n elHeight: elRect.height,\n textAlign,\n });\n }\n return elGeoms;\n }\n}\nfunction assignStickyPositions(els, elGeoms, viewportWidth) {\n els.forEach((el, i) => {\n let { textAlign, elWidth, parentBound } = elGeoms[i];\n let parentWidth = parentBound.right - parentBound.left;\n let left;\n if (textAlign === 'center' &&\n parentWidth > viewportWidth) {\n left = (viewportWidth - elWidth) / 2;\n }\n else { // if parent container can be completely in view, we don't need stickiness\n left = '';\n }\n applyStyle(el, {\n left,\n right: left,\n top: 0,\n });\n });\n}\n\nclass ClippedScroller extends BaseComponent {\n constructor() {\n super(...arguments);\n this.elRef = createRef();\n this.state = {\n xScrollbarWidth: 0,\n yScrollbarWidth: 0,\n };\n this.handleScroller = (scroller) => {\n this.scroller = scroller;\n setRef(this.props.scrollerRef, scroller);\n };\n this.handleSizing = () => {\n let { props } = this;\n if (props.overflowY === 'scroll-hidden') {\n this.setState({ yScrollbarWidth: this.scroller.getYScrollbarWidth() });\n }\n if (props.overflowX === 'scroll-hidden') {\n this.setState({ xScrollbarWidth: this.scroller.getXScrollbarWidth() });\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let isScrollbarOnLeft = context.isRtl && getIsRtlScrollbarOnLeft();\n let overcomeLeft = 0;\n let overcomeRight = 0;\n let overcomeBottom = 0;\n let { overflowX, overflowY } = props;\n if (props.forPrint) {\n overflowX = 'visible';\n overflowY = 'visible';\n }\n if (overflowX === 'scroll-hidden') {\n overcomeBottom = state.xScrollbarWidth;\n }\n if (overflowY === 'scroll-hidden') {\n if (state.yScrollbarWidth != null) {\n if (isScrollbarOnLeft) {\n overcomeLeft = state.yScrollbarWidth;\n }\n else {\n overcomeRight = state.yScrollbarWidth;\n }\n }\n }\n return (createElement(\"div\", { ref: this.elRef, className: 'fc-scroller-harness' + (props.liquid ? ' fc-scroller-harness-liquid' : '') },\n createElement(Scroller, { ref: this.handleScroller, elRef: this.props.scrollerElRef, overflowX: overflowX === 'scroll-hidden' ? 'scroll' : overflowX, overflowY: overflowY === 'scroll-hidden' ? 'scroll' : overflowY, overcomeLeft: overcomeLeft, overcomeRight: overcomeRight, overcomeBottom: overcomeBottom, maxHeight: typeof props.maxHeight === 'number'\n ? (props.maxHeight + (overflowX === 'scroll-hidden' ? state.xScrollbarWidth : 0))\n : '', liquid: props.liquid, liquidIsAbsolute: true }, props.children)));\n }\n componentDidMount() {\n this.handleSizing();\n this.context.addResizeHandler(this.handleSizing);\n }\n getSnapshotBeforeUpdate(prevProps) {\n if (this.props.forPrint && !prevProps.forPrint) {\n return { simulateScrollLeft: this.scroller.el.scrollLeft };\n }\n return {};\n }\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { props, scroller: { el: scrollerEl } } = this;\n if (!isPropsEqual(prevProps, props)) { // an external change?\n this.handleSizing();\n }\n if (snapshot.simulateScrollLeft !== undefined) {\n scrollerEl.style.left = -snapshot.simulateScrollLeft + 'px';\n }\n else if (!props.forPrint && prevProps.forPrint) {\n const restoredScrollLeft = -parseInt(scrollerEl.style.left);\n scrollerEl.style.left = '';\n scrollerEl.scrollLeft = restoredScrollLeft;\n }\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n }\n needsXScrolling() {\n return this.scroller.needsXScrolling();\n }\n needsYScrolling() {\n return this.scroller.needsYScrolling();\n }\n}\n\nconst WHEEL_EVENT_NAMES = 'wheel mousewheel DomMouseScroll MozMousePixelScroll'.split(' ');\n/*\nALSO, with the ability to disable touch\n*/\nclass ScrollListener {\n constructor(el) {\n this.el = el;\n this.emitter = new Emitter();\n this.isScrolling = false;\n this.isTouching = false; // user currently has finger down?\n this.isRecentlyWheeled = false;\n this.isRecentlyScrolled = false;\n this.wheelWaiter = new DelayedRunner(this._handleWheelWaited.bind(this));\n this.scrollWaiter = new DelayedRunner(this._handleScrollWaited.bind(this));\n // Handlers\n // ----------------------------------------------------------------------------------------------\n this.handleScroll = () => {\n this.startScroll();\n this.emitter.trigger('scroll', this.isRecentlyWheeled, this.isTouching);\n this.isRecentlyScrolled = true;\n this.scrollWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleWheel = () => {\n this.isRecentlyWheeled = true;\n this.wheelWaiter.request(500);\n };\n // will fire *before* the scroll event is fired (might not cause a scroll)\n this.handleTouchStart = () => {\n this.isTouching = true;\n };\n this.handleTouchEnd = () => {\n this.isTouching = false;\n // if the user ended their touch, and the scroll area wasn't moving,\n // we consider this to be the end of the scroll.\n if (!this.isRecentlyScrolled) {\n this.endScroll(); // won't fire if already ended\n }\n };\n el.addEventListener('scroll', this.handleScroll);\n el.addEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.addEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.addEventListener(eventName, this.handleWheel);\n }\n }\n destroy() {\n let { el } = this;\n el.removeEventListener('scroll', this.handleScroll);\n el.removeEventListener('touchstart', this.handleTouchStart, { passive: true });\n el.removeEventListener('touchend', this.handleTouchEnd);\n for (let eventName of WHEEL_EVENT_NAMES) {\n el.removeEventListener(eventName, this.handleWheel);\n }\n }\n // Start / Stop\n // ----------------------------------------------------------------------------------------------\n startScroll() {\n if (!this.isScrolling) {\n this.isScrolling = true;\n this.emitter.trigger('scrollStart', this.isRecentlyWheeled, this.isTouching);\n }\n }\n endScroll() {\n if (this.isScrolling) {\n this.emitter.trigger('scrollEnd');\n this.isScrolling = false;\n this.isRecentlyScrolled = true;\n this.isRecentlyWheeled = false;\n this.scrollWaiter.clear();\n this.wheelWaiter.clear();\n }\n }\n _handleScrollWaited() {\n this.isRecentlyScrolled = false;\n // only end the scroll if not currently touching.\n // if touching, the scrolling will end later, on touchend.\n if (!this.isTouching) {\n this.endScroll(); // won't fire if already ended\n }\n }\n _handleWheelWaited() {\n this.isRecentlyWheeled = false;\n }\n}\n\nclass ScrollSyncer {\n constructor(isVertical, scrollEls) {\n this.isVertical = isVertical;\n this.scrollEls = scrollEls;\n this.isPaused = false;\n this.scrollListeners = scrollEls.map((el) => this.bindScroller(el));\n }\n destroy() {\n for (let scrollListener of this.scrollListeners) {\n scrollListener.destroy();\n }\n }\n bindScroller(el) {\n let { scrollEls, isVertical } = this;\n let scrollListener = new ScrollListener(el);\n const onScroll = (isWheel, isTouch) => {\n if (!this.isPaused) {\n if (!this.masterEl || (this.masterEl !== el && (isWheel || isTouch))) {\n this.assignMaster(el);\n }\n if (this.masterEl === el) { // dealing with current\n for (let otherEl of scrollEls) {\n if (otherEl !== el) {\n if (isVertical) {\n otherEl.scrollTop = el.scrollTop;\n }\n else {\n otherEl.scrollLeft = el.scrollLeft;\n }\n }\n }\n }\n }\n };\n const onScrollEnd = () => {\n if (this.masterEl === el) {\n this.masterEl = null;\n }\n };\n scrollListener.emitter.on('scroll', onScroll);\n scrollListener.emitter.on('scrollEnd', onScrollEnd);\n return scrollListener;\n }\n assignMaster(el) {\n this.masterEl = el;\n for (let scrollListener of this.scrollListeners) {\n if (scrollListener.el !== el) {\n scrollListener.endScroll(); // to prevent residual scrolls from reclaiming master\n }\n }\n }\n /*\n will normalize the scrollLeft value\n */\n forceScrollLeft(scrollLeft) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n setScrollFromLeftEdge(listener.el, scrollLeft);\n }\n this.isPaused = false;\n }\n forceScrollTop(top) {\n this.isPaused = true;\n for (let listener of this.scrollListeners) {\n listener.el.scrollTop = top;\n }\n this.isPaused = false;\n }\n}\n\nconfig.SCROLLGRID_RESIZE_INTERVAL = 500;\n/*\nTODO: make <ScrollGridSection> subcomponent\nNOTE: doesn't support collapsibleWidth (which is sortof a hack anyway)\n*/\nclass ScrollGrid extends BaseComponent {\n constructor() {\n super(...arguments);\n this.compileColGroupStats = memoizeArraylike(compileColGroupStat, isColGroupStatsEqual);\n this.renderMicroColGroups = memoizeArraylike(renderMicroColGroup); // yucky to memoize VNodes, but much more efficient for consumers\n this.clippedScrollerRefs = new RefMap();\n // doesn't hold non-scrolling els used just for padding\n this.scrollerElRefs = new RefMap(this._handleScrollerEl.bind(this));\n this.chunkElRefs = new RefMap(this._handleChunkEl.bind(this));\n this.scrollSyncersBySection = {};\n this.scrollSyncersByColumn = {};\n // for row-height-syncing\n this.rowUnstableMap = new Map(); // no need to groom. always self-cancels\n this.rowInnerMaxHeightMap = new Map();\n this.anyRowHeightsChanged = false;\n this.recentSizingCnt = 0;\n this.state = {\n shrinkWidths: [],\n forceYScrollbars: false,\n forceXScrollbars: false,\n scrollerClientWidths: {},\n scrollerClientHeights: {},\n sectionRowMaxHeights: [],\n };\n this.handleSizing = (isForcedResize, sectionRowMaxHeightsChanged) => {\n if (!this.allowSizing()) {\n return;\n }\n if (!sectionRowMaxHeightsChanged) { // something else changed, probably external\n this.anyRowHeightsChanged = true;\n }\n let otherState = {};\n // if reacting to self-change of sectionRowMaxHeightsChanged, or not stable, don't do anything\n if (isForcedResize || (!sectionRowMaxHeightsChanged && !this.rowUnstableMap.size)) {\n otherState.sectionRowMaxHeights = this.computeSectionRowMaxHeights();\n }\n this.setState(Object.assign(Object.assign({ shrinkWidths: this.computeShrinkWidths() }, this.computeScrollerDims()), otherState), () => {\n if (!this.rowUnstableMap.size) {\n this.updateStickyScrolling(); // needs to happen AFTER final positioning committed to DOM\n }\n });\n };\n this.handleRowHeightChange = (rowEl, isStable) => {\n let { rowUnstableMap, rowInnerMaxHeightMap } = this;\n if (!isStable) {\n rowUnstableMap.set(rowEl, true);\n }\n else {\n rowUnstableMap.delete(rowEl);\n let innerMaxHeight = getRowInnerMaxHeight(rowEl);\n if (!rowInnerMaxHeightMap.has(rowEl) || rowInnerMaxHeightMap.get(rowEl) !== innerMaxHeight) {\n rowInnerMaxHeightMap.set(rowEl, innerMaxHeight);\n this.anyRowHeightsChanged = true;\n }\n if (!rowUnstableMap.size && this.anyRowHeightsChanged) {\n this.anyRowHeightsChanged = false;\n this.setState({\n sectionRowMaxHeights: this.computeSectionRowMaxHeights(),\n });\n }\n }\n };\n }\n render() {\n let { props, state, context } = this;\n let { shrinkWidths } = state;\n let colGroupStats = this.compileColGroupStats(props.colGroups.map((colGroup) => [colGroup]));\n let microColGroupNodes = this.renderMicroColGroups(colGroupStats.map((stat, i) => [stat.cols, shrinkWidths[i]]));\n let classNames = getScrollGridClassNames(props.liquid, context);\n this.getDims();\n // TODO: make DRY\n let sectionConfigs = props.sections;\n let configCnt = sectionConfigs.length;\n let configI = 0;\n let currentConfig;\n let headSectionNodes = [];\n let bodySectionNodes = [];\n let footSectionNodes = [];\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'header') {\n headSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'body') {\n bodySectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, false));\n configI += 1;\n }\n while (configI < configCnt && (currentConfig = sectionConfigs[configI]).type === 'footer') {\n footSectionNodes.push(this.renderSection(currentConfig, configI, colGroupStats, microColGroupNodes, state.sectionRowMaxHeights, true));\n configI += 1;\n }\n const isBuggy = !getCanVGrowWithinCell(); // see NOTE in SimpleScrollGrid\n const roleAttrs = { role: 'rowgroup' };\n return createElement('table', {\n ref: props.elRef,\n role: 'grid',\n className: classNames.join(' '),\n }, renderMacroColGroup(colGroupStats, shrinkWidths), Boolean(!isBuggy && headSectionNodes.length) && createElement('thead', roleAttrs, ...headSectionNodes), Boolean(!isBuggy && bodySectionNodes.length) && createElement('tbody', roleAttrs, ...bodySectionNodes), Boolean(!isBuggy && footSectionNodes.length) && createElement('tfoot', roleAttrs, ...footSectionNodes), isBuggy && createElement('tbody', roleAttrs, ...headSectionNodes, ...bodySectionNodes, ...footSectionNodes));\n }\n renderSection(sectionConfig, sectionIndex, colGroupStats, microColGroupNodes, sectionRowMaxHeights, isHeader) {\n if ('outerContent' in sectionConfig) {\n return (createElement(Fragment, { key: sectionConfig.key }, sectionConfig.outerContent));\n }\n return (createElement(\"tr\", { key: sectionConfig.key, role: \"presentation\", className: getSectionClassNames(sectionConfig, this.props.liquid).join(' ') }, sectionConfig.chunks.map((chunkConfig, i) => this.renderChunk(sectionConfig, sectionIndex, colGroupStats[i], microColGroupNodes[i], chunkConfig, i, (sectionRowMaxHeights[sectionIndex] || [])[i] || [], isHeader))));\n }\n renderChunk(sectionConfig, sectionIndex, colGroupStat, microColGroupNode, chunkConfig, chunkIndex, rowHeights, isHeader) {\n if ('outerContent' in chunkConfig) {\n return (createElement(Fragment, { key: chunkConfig.key }, chunkConfig.outerContent));\n }\n let { state } = this;\n let { scrollerClientWidths, scrollerClientHeights } = state;\n let [sectionCnt, chunksPerSection] = this.getDims();\n let index = sectionIndex * chunksPerSection + chunkIndex;\n let sideScrollIndex = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let isVScrollSide = chunkIndex === sideScrollIndex;\n let isLastSection = sectionIndex === sectionCnt - 1;\n let forceXScrollbars = isLastSection && state.forceXScrollbars; // NOOOO can result in `null`\n let forceYScrollbars = isVScrollSide && state.forceYScrollbars; // NOOOO can result in `null`\n let allowXScrolling = colGroupStat && colGroupStat.allowXScrolling; // rename?\n let allowYScrolling = getAllowYScrolling(this.props, sectionConfig); // rename? do in section func?\n let chunkVGrow = getSectionHasLiquidHeight(this.props, sectionConfig); // do in section func?\n let expandRows = sectionConfig.expandRows && chunkVGrow;\n let tableMinWidth = (colGroupStat && colGroupStat.totalColMinWidth) || '';\n let content = renderChunkContent(sectionConfig, chunkConfig, {\n tableColGroupNode: microColGroupNode,\n tableMinWidth,\n clientWidth: scrollerClientWidths[index] !== undefined ? scrollerClientWidths[index] : null,\n clientHeight: scrollerClientHeights[index] !== undefined ? scrollerClientHeights[index] : null,\n expandRows,\n syncRowHeights: Boolean(sectionConfig.syncRowHeights),\n rowSyncHeights: rowHeights,\n reportRowHeightChange: this.handleRowHeightChange,\n }, isHeader);\n let overflowX = forceXScrollbars ? (isLastSection ? 'scroll' : 'scroll-hidden') :\n !allowXScrolling ? 'hidden' :\n (isLastSection ? 'auto' : 'scroll-hidden');\n let overflowY = forceYScrollbars ? (isVScrollSide ? 'scroll' : 'scroll-hidden') :\n !allowYScrolling ? 'hidden' :\n (isVScrollSide ? 'auto' : 'scroll-hidden');\n // it *could* be possible to reduce DOM wrappers by only doing a ClippedScroller when allowXScrolling or allowYScrolling,\n // but if these values were to change, the inner components would be unmounted/remounted because of the parent change.\n content = (createElement(ClippedScroller, { ref: this.clippedScrollerRefs.createRef(index), scrollerElRef: this.scrollerElRefs.createRef(index), overflowX: overflowX, overflowY: overflowY, forPrint: this.props.forPrint, liquid: chunkVGrow, maxHeight: sectionConfig.maxHeight }, content));\n return createElement(isHeader ? 'th' : 'td', {\n key: chunkConfig.key,\n ref: this.chunkElRefs.createRef(index),\n role: 'presentation',\n }, content);\n }\n componentDidMount() {\n this.getStickyScrolling = memoizeArraylike(initStickyScrolling);\n this.getScrollSyncersBySection = memoizeHashlike(initScrollSyncer.bind(this, true), null, destroyScrollSyncer);\n this.getScrollSyncersByColumn = memoizeHashlike(initScrollSyncer.bind(this, false), null, destroyScrollSyncer);\n this.updateScrollSyncers();\n this.handleSizing(false);\n this.context.addResizeHandler(this.handleSizing);\n }\n componentDidUpdate(prevProps, prevState) {\n this.updateScrollSyncers();\n // TODO: need better solution when state contains non-sizing things\n this.handleSizing(false, prevState.sectionRowMaxHeights !== this.state.sectionRowMaxHeights);\n }\n componentWillUnmount() {\n this.context.removeResizeHandler(this.handleSizing);\n this.destroyScrollSyncers();\n }\n allowSizing() {\n let now = new Date();\n if (!this.lastSizingDate ||\n now.valueOf() > this.lastSizingDate.valueOf() + config.SCROLLGRID_RESIZE_INTERVAL) {\n this.lastSizingDate = now;\n this.recentSizingCnt = 0;\n return true;\n }\n return (this.recentSizingCnt += 1) <= 10;\n }\n computeShrinkWidths() {\n let colGroupStats = this.compileColGroupStats(this.props.colGroups.map((colGroup) => [colGroup]));\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let shrinkWidths = [];\n colGroupStats.forEach((colGroupStat, i) => {\n if (colGroupStat.hasShrinkCol) {\n let chunkEls = this.chunkElRefs.collect(i, cnt, chunksPerSection); // in one col\n shrinkWidths[i] = computeShrinkWidth(chunkEls);\n }\n });\n return shrinkWidths;\n }\n // has the side effect of grooming rowInnerMaxHeightMap\n // TODO: somehow short-circuit if there are no new height changes\n computeSectionRowMaxHeights() {\n let newHeightMap = new Map();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sectionRowMaxHeights = [];\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let sectionConfig = this.props.sections[sectionI];\n let assignableHeights = []; // chunk, row\n if (sectionConfig && sectionConfig.syncRowHeights) {\n let rowHeightsByChunk = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let rowHeights = [];\n let chunkEl = this.chunkElRefs.currentMap[index];\n if (chunkEl) {\n rowHeights = findElements(chunkEl, '.fc-scrollgrid-sync-table tr').map((rowEl) => {\n let max = getRowInnerMaxHeight(rowEl);\n newHeightMap.set(rowEl, max);\n return max;\n });\n }\n else {\n rowHeights = [];\n }\n rowHeightsByChunk.push(rowHeights);\n }\n let rowCnt = rowHeightsByChunk[0].length;\n let isEqualRowCnt = true;\n for (let chunkI = 1; chunkI < chunksPerSection; chunkI += 1) {\n let isOuterContent = sectionConfig.chunks[chunkI] && sectionConfig.chunks[chunkI].outerContent !== undefined; // can be null\n if (!isOuterContent && rowHeightsByChunk[chunkI].length !== rowCnt) { // skip outer content\n isEqualRowCnt = false;\n break;\n }\n }\n if (!isEqualRowCnt) {\n let chunkHeightSums = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n chunkHeightSums.push(sumNumbers(rowHeightsByChunk[chunkI]) + rowHeightsByChunk[chunkI].length);\n }\n let maxTotalSum = Math.max(...chunkHeightSums);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let rowInChunkCnt = rowHeightsByChunk[chunkI].length;\n let rowInChunkTotalHeight = maxTotalSum - rowInChunkCnt; // subtract border\n // height of non-first row. we do this to avoid rounding, because it's unreliable within a table\n let rowInChunkHeightOthers = Math.floor(rowInChunkTotalHeight / rowInChunkCnt);\n // whatever is leftover goes to the first row\n let rowInChunkHeightFirst = rowInChunkTotalHeight - rowInChunkHeightOthers * (rowInChunkCnt - 1);\n let rowInChunkHeights = [];\n let row = 0;\n if (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightFirst);\n row += 1;\n }\n while (row < rowInChunkCnt) {\n rowInChunkHeights.push(rowInChunkHeightOthers);\n row += 1;\n }\n assignableHeights.push(rowInChunkHeights);\n }\n }\n else {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights.push([]);\n }\n for (let row = 0; row < rowCnt; row += 1) {\n let rowHeightsAcrossChunks = [];\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let h = rowHeightsByChunk[chunkI][row];\n if (h != null) { // protect against outerContent\n rowHeightsAcrossChunks.push(h);\n }\n }\n let maxHeight = Math.max(...rowHeightsAcrossChunks);\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n assignableHeights[chunkI].push(maxHeight);\n }\n }\n }\n }\n sectionRowMaxHeights.push(assignableHeights);\n }\n this.rowInnerMaxHeightMap = newHeightMap;\n return sectionRowMaxHeights;\n }\n computeScrollerDims() {\n let scrollbarWidth = getScrollbarWidths();\n let [sectionCnt, chunksPerSection] = this.getDims();\n let sideScrollI = (!this.context.isRtl || getIsRtlScrollbarOnLeft()) ? chunksPerSection - 1 : 0;\n let lastSectionI = sectionCnt - 1;\n let currentScrollers = this.clippedScrollerRefs.currentMap;\n let scrollerEls = this.scrollerElRefs.currentMap;\n let forceYScrollbars = false;\n let forceXScrollbars = false;\n let scrollerClientWidths = {};\n let scrollerClientHeights = {};\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) { // along edge\n let index = sectionI * chunksPerSection + sideScrollI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsYScrolling()) {\n forceYScrollbars = true;\n break;\n }\n }\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) { // along last row\n let index = lastSectionI * chunksPerSection + chunkI;\n let scroller = currentScrollers[index];\n if (scroller && scroller.needsXScrolling()) {\n forceXScrollbars = true;\n break;\n }\n }\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n for (let chunkI = 0; chunkI < chunksPerSection; chunkI += 1) {\n let index = sectionI * chunksPerSection + chunkI;\n let scrollerEl = scrollerEls[index];\n if (scrollerEl) {\n // TODO: weird way to get this. need harness b/c doesn't include table borders\n let harnessEl = scrollerEl.parentNode;\n scrollerClientWidths[index] = Math.floor(harnessEl.getBoundingClientRect().width - ((chunkI === sideScrollI && forceYScrollbars)\n ? scrollbarWidth.y // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n scrollerClientHeights[index] = Math.floor(harnessEl.getBoundingClientRect().height - ((sectionI === lastSectionI && forceXScrollbars)\n ? scrollbarWidth.x // use global because scroller might not have scrollbars yet but will need them in future\n : 0));\n }\n }\n }\n return { forceYScrollbars, forceXScrollbars, scrollerClientWidths, scrollerClientHeights };\n }\n updateStickyScrolling() {\n let { isRtl } = this.context;\n let argsByKey = this.scrollerElRefs.getAll().map((scrollEl) => [scrollEl, isRtl]);\n this.getStickyScrolling(argsByKey)\n .forEach((stickyScrolling) => stickyScrolling.updateSize());\n }\n updateScrollSyncers() {\n let [sectionCnt, chunksPerSection] = this.getDims();\n let cnt = sectionCnt * chunksPerSection;\n let scrollElsBySection = {};\n let scrollElsByColumn = {};\n let scrollElMap = this.scrollerElRefs.currentMap;\n for (let sectionI = 0; sectionI < sectionCnt; sectionI += 1) {\n let startIndex = sectionI * chunksPerSection;\n let endIndex = startIndex + chunksPerSection;\n scrollElsBySection[sectionI] = collectFromHash(scrollElMap, startIndex, endIndex, 1); // use the filtered\n }\n for (let col = 0; col < chunksPerSection; col += 1) {\n scrollElsByColumn[col] = this.scrollerElRefs.collect(col, cnt, chunksPerSection); // DON'T use the filtered\n }\n this.scrollSyncersBySection = this.getScrollSyncersBySection(scrollElsBySection);\n this.scrollSyncersByColumn = this.getScrollSyncersByColumn(scrollElsByColumn);\n }\n destroyScrollSyncers() {\n mapHash(this.scrollSyncersBySection, destroyScrollSyncer);\n mapHash(this.scrollSyncersByColumn, destroyScrollSyncer);\n }\n getChunkConfigByIndex(index) {\n let chunksPerSection = this.getDims()[1];\n let sectionI = Math.floor(index / chunksPerSection);\n let chunkI = index % chunksPerSection;\n let sectionConfig = this.props.sections[sectionI];\n return sectionConfig && sectionConfig.chunks[chunkI];\n }\n forceScrollLeft(col, scrollLeft) {\n let scrollSyncer = this.scrollSyncersByColumn[col];\n if (scrollSyncer) {\n scrollSyncer.forceScrollLeft(scrollLeft);\n }\n }\n forceScrollTop(sectionI, scrollTop) {\n let scrollSyncer = this.scrollSyncersBySection[sectionI];\n if (scrollSyncer) {\n scrollSyncer.forceScrollTop(scrollTop);\n }\n }\n _handleChunkEl(chunkEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.elRef, chunkEl);\n }\n }\n _handleScrollerEl(scrollerEl, key) {\n let chunkConfig = this.getChunkConfigByIndex(parseInt(key, 10));\n if (chunkConfig) { // null if section disappeared. bad, b/c won't null-set the elRef\n setRef(chunkConfig.scrollerElRef, scrollerEl);\n }\n }\n getDims() {\n let sectionCnt = this.props.sections.length;\n let chunksPerSection = sectionCnt ? this.props.sections[0].chunks.length : 0;\n return [sectionCnt, chunksPerSection];\n }\n}\nScrollGrid.addStateEquality({\n shrinkWidths: isArraysEqual,\n scrollerClientWidths: isPropsEqual,\n scrollerClientHeights: isPropsEqual,\n});\nfunction sumNumbers(numbers) {\n let sum = 0;\n for (let n of numbers) {\n sum += n;\n }\n return sum;\n}\nfunction getRowInnerMaxHeight(rowEl) {\n let innerHeights = findElements(rowEl, '.fc-scrollgrid-sync-inner').map(getElHeight);\n if (innerHeights.length) {\n return Math.max(...innerHeights);\n }\n return 0;\n}\nfunction getElHeight(el) {\n return el.offsetHeight; // better to deal with integers, for rounding, for PureComponent\n}\nfunction renderMacroColGroup(colGroupStats, shrinkWidths) {\n let children = colGroupStats.map((colGroupStat, i) => {\n let width = colGroupStat.width;\n if (width === 'shrink') {\n width = colGroupStat.totalColWidth + sanitizeShrinkWidth(shrinkWidths[i]) + 1; // +1 for border :(\n }\n return ( // eslint-disable-next-line react/jsx-key\n createElement(\"col\", { style: { width } }));\n });\n return createElement('colgroup', {}, ...children);\n}\nfunction compileColGroupStat(colGroupConfig) {\n let totalColWidth = sumColProp(colGroupConfig.cols, 'width'); // excludes \"shrink\"\n let totalColMinWidth = sumColProp(colGroupConfig.cols, 'minWidth');\n let hasShrinkCol = hasShrinkWidth(colGroupConfig.cols);\n let allowXScrolling = colGroupConfig.width !== 'shrink' && Boolean(totalColWidth || totalColMinWidth || hasShrinkCol);\n return {\n hasShrinkCol,\n totalColWidth,\n totalColMinWidth,\n allowXScrolling,\n cols: colGroupConfig.cols,\n width: colGroupConfig.width,\n };\n}\nfunction sumColProp(cols, propName) {\n let total = 0;\n for (let col of cols) {\n let val = col[propName];\n if (typeof val === 'number') {\n total += val * (col.span || 1);\n }\n }\n return total;\n}\nconst COL_GROUP_STAT_EQUALITY = {\n cols: isColPropsEqual,\n};\nfunction isColGroupStatsEqual(stat0, stat1) {\n return compareObjs(stat0, stat1, COL_GROUP_STAT_EQUALITY);\n}\n// for memoizers...\nfunction initScrollSyncer(isVertical, ...scrollEls) {\n return new ScrollSyncer(isVertical, scrollEls);\n}\nfunction destroyScrollSyncer(scrollSyncer) {\n scrollSyncer.destroy();\n}\nfunction initStickyScrolling(scrollEl, isRtl) {\n return new StickyScrolling(scrollEl, isRtl);\n}\n\nexport { ScrollGrid };\n"],"names":["getScrollFromLeftEdge","el","scrollLeft","window","getComputedStyle","direction","getRtlScrollSystem","scrollWidth","clientWidth","setScrollFromLeftEdge","_rtlScrollSystem","document","createElement","style","position","top","width","height","overflow","system","innerEl","appendChild","body","removeElement","detectRtlScrollSystem","StickyScrolling","constructor","scrollEl","isRtl","this","updateSize","els","findElements","elGeoms","viewportWidth","forEach","i","left","textAlign","elWidth","parentBound","parentWidth","right","applyStyle","assignStickyPositions","queryElGeoms","canvasOrigin","rect","getBoundingClientRect","edges","computeEdges","borderLeft","scrollbarLeft","borderTop","scrollTop","getScrollCanvasOrigin","translateRect","computeInnerRect","parentNode","elRect","computedStyles","naturalBound","parseFloat","push","elHeight","ClippedScroller","BaseComponent","super","arguments","elRef","createRef","state","xScrollbarWidth","yScrollbarWidth","handleScroller","scroller","setRef","props","scrollerRef","handleSizing","overflowY","setState","getYScrollbarWidth","overflowX","getXScrollbarWidth","render","context","isScrollbarOnLeft","getIsRtlScrollbarOnLeft","overcomeLeft","overcomeRight","overcomeBottom","forPrint","ref","className","liquid","Scroller","scrollerElRef","maxHeight","liquidIsAbsolute","children","componentDidMount","addResizeHandler","getSnapshotBeforeUpdate","prevProps","simulateScrollLeft","componentDidUpdate","prevState","snapshot","scrollerEl","isPropsEqual","undefined","restoredScrollLeft","parseInt","componentWillUnmount","removeResizeHandler","needsXScrolling","needsYScrolling","WHEEL_EVENT_NAMES","split","ScrollListener","emitter","Emitter","isScrolling","isTouching","isRecentlyWheeled","isRecentlyScrolled","wheelWaiter","DelayedRunner","_handleWheelWaited","bind","scrollWaiter","_handleScrollWaited","handleScroll","startScroll","trigger","request","handleWheel","handleTouchStart","handleTouchEnd","endScroll","addEventListener","passive","eventName","destroy","removeEventListener","clear","ScrollSyncer","isVertical","scrollEls","isPaused","scrollListeners","map","bindScroller","scrollListener","on","isWheel","isTouch","masterEl","assignMaster","otherEl","forceScrollLeft","listener","forceScrollTop","config","SCROLLGRID_RESIZE_INTERVAL","ScrollGrid","compileColGroupStats","memoizeArraylike","compileColGroupStat","isColGroupStatsEqual","renderMicroColGroups","renderMicroColGroup","clippedScrollerRefs","RefMap","scrollerElRefs","_handleScrollerEl","chunkElRefs","_handleChunkEl","scrollSyncersBySection","scrollSyncersByColumn","rowUnstableMap","Map","rowInnerMaxHeightMap","anyRowHeightsChanged","recentSizingCnt","shrinkWidths","forceYScrollbars","forceXScrollbars","scrollerClientWidths","scrollerClientHeights","sectionRowMaxHeights","isForcedResize","sectionRowMaxHeightsChanged","allowSizing","otherState","size","computeSectionRowMaxHeights","Object","assign","computeShrinkWidths","computeScrollerDims","updateStickyScrolling","handleRowHeightChange","rowEl","isStable","delete","innerMaxHeight","getRowInnerMaxHeight","has","get","set","colGroupStats","colGroups","colGroup","microColGroupNodes","stat","cols","classNames","getScrollGridClassNames","getDims","currentConfig","sectionConfigs","sections","configCnt","length","configI","headSectionNodes","bodySectionNodes","footSectionNodes","type","renderSection","isBuggy","getCanVGrowWithinCell","roleAttrs","role","join","colGroupStat","totalColWidth","sanitizeShrinkWidth","renderMacroColGroup","Boolean","sectionConfig","sectionIndex","isHeader","Fragment","key","outerContent","getSectionClassNames","chunks","chunkConfig","renderChunk","microColGroupNode","chunkIndex","rowHeights","sectionCnt","chunksPerSection","index","isVScrollSide","isLastSection","allowXScrolling","allowYScrolling","getAllowYScrolling","chunkVGrow","getSectionHasLiquidHeight","expandRows","tableMinWidth","totalColMinWidth","content","renderChunkContent","tableColGroupNode","clientHeight","syncRowHeights","rowSyncHeights","reportRowHeightChange","getStickyScrolling","initStickyScrolling","getScrollSyncersBySection","memoizeHashlike","initScrollSyncer","destroyScrollSyncer","getScrollSyncersByColumn","updateScrollSyncers","destroyScrollSyncers","now","Date","lastSizingDate","valueOf","cnt","hasShrinkCol","chunkEls","collect","computeShrinkWidth","newHeightMap","sectionI","assignableHeights","rowHeightsByChunk","chunkI","chunkEl","currentMap","max","rowCnt","isEqualRowCnt","row","rowHeightsAcrossChunks","h","Math","chunkHeightSums","sumNumbers","maxTotalSum","rowInChunkCnt","rowInChunkTotalHeight","rowInChunkHeightOthers","floor","rowInChunkHeightFirst","rowInChunkHeights","scrollbarWidth","getScrollbarWidths","sideScrollI","lastSectionI","currentScrollers","scrollerEls","harnessEl","y","x","argsByKey","getAll","stickyScrolling","scrollElsBySection","scrollElsByColumn","scrollElMap","startIndex","endIndex","collectFromHash","col","mapHash","getChunkConfigByIndex","scrollSyncer","numbers","sum","n","innerHeights","getElHeight","offsetHeight","colGroupConfig","sumColProp","hasShrinkWidth","propName","total","val","span","addStateEquality","isArraysEqual","COL_GROUP_STAT_EQUALITY","isColPropsEqual","stat0","stat1","compareObjs"],"mappings":"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"}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{createPlugin as e}from"../core/index.js";import{DayTimeColsView as i}from"./internal.js";var t=e({name:"@fullcalendar/timegrid",initialView:"timeGridWeek",optionRefiners:{allDaySlot:Boolean},views:{timeGrid:{component:i,usesMinMaxTime:!0,allDaySlot:!0,slotDuration:"00:30:00",slotEventOverlap:!0},timeGridDay:{type:"timeGrid",duration:{days:1}},timeGridWeek:{type:"timeGrid",duration:{weeks:1}}}});export{t as default};
|
2
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../node_modules/@fullcalendar/timegrid/index.js"],"sourcesContent":["import { createPlugin } from '@fullcalendar/core/index.js';\nimport { DayTimeColsView } from './internal.js';\nimport '@fullcalendar/core/internal.js';\nimport '@fullcalendar/core/preact.js';\nimport '@fullcalendar/daygrid/internal.js';\n\nconst OPTION_REFINERS = {\n allDaySlot: Boolean,\n};\n\nvar index = createPlugin({\n name: '@fullcalendar/timegrid',\n initialView: 'timeGridWeek',\n optionRefiners: OPTION_REFINERS,\n views: {\n timeGrid: {\n component: DayTimeColsView,\n usesMinMaxTime: true,\n allDaySlot: true,\n slotDuration: '00:30:00',\n slotEventOverlap: true, // a bad name. confused with overlap/constraint system\n },\n timeGridDay: {\n type: 'timeGrid',\n duration: { days: 1 },\n },\n timeGridWeek: {\n type: 'timeGrid',\n duration: { weeks: 1 },\n },\n },\n});\n\nexport { index as default };\n"],"names":["index","createPlugin","name","initialView","optionRefiners","allDaySlot","Boolean","views","timeGrid","component","DayTimeColsView","usesMinMaxTime","slotDuration","slotEventOverlap","timeGridDay","type","duration","days","timeGridWeek","weeks"],"mappings":"gGAUG,IAACA,EAAQC,EAAa,CACrBC,KAAM,yBACNC,YAAa,eACbC,eAPoB,CACpBC,WAAYC,SAOZC,MAAO,CACHC,SAAU,CACNC,UAAWC,EACXC,gBAAgB,EAChBN,YAAY,EACZO,aAAc,WACdC,kBAAkB,GAEtBC,YAAa,CACTC,KAAM,WACNC,SAAU,CAAEC,KAAM,IAEtBC,aAAc,CACVH,KAAM,WACNC,SAAU,CAAEG,MAAO"}
|