@burdenoff/microfe-planmagnet 2026.930.24 → 2026.1001.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/__vite-browser-external.js +9 -0
- package/dist/_virtual/__vite-browser-external.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +5 -2
- package/dist/index.js +3 -1
- package/dist/node_modules/fflate/esm/browser.js +554 -0
- package/dist/node_modules/fflate/esm/browser.js.map +1 -0
- package/dist/node_modules/jszip/dist/jszip.min.js +3038 -0
- package/dist/node_modules/jszip/dist/jszip.min.js.map +1 -0
- package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js +2151 -0
- package/dist/node_modules/pptxgenjs/dist/pptxgen.es.js.map +1 -0
- package/dist/node_modules/write-excel-file/browser/index.js +3 -0
- package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js +13 -0
- package/dist/node_modules/write-excel-file/modules/export/convertFileContentToUint8ArrayBrowser.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js +21 -0
- package/dist/node_modules/write-excel-file/modules/export/convertFilesContentToUint8Arrays.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js +11 -0
- package/dist/node_modules/write-excel-file/modules/export/downloadBlob.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js +23 -0
- package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileBrowser.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js +22 -0
- package/dist/node_modules/write-excel-file/modules/export/writeXlsxFileUniversal.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js +18 -0
- package/dist/node_modules/write-excel-file/modules/getSheetData/getSheetData.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js +131 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/features/conditionalFormatting.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js +188 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/features/images.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js +52 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/features/stickyRowsOrColumns.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js +18 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/_Content_Types_.xml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js +18 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js +17 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/drawing.xml.rels.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js +11 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/rels.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js +42 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sharedStrings.xml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js +102 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/cell.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js +17 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/column.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js +15 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/columns.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js +8 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/drawingReference.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js +71 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/helpers/getCellStyleProperties.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js +56 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/mergedCellsDescription.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js +15 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageMargins.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js +13 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/pageSetup.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js +44 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/processMergedCells.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js +123 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/row.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js +41 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheet.xml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js +11 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetData.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js +17 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml/sheetViews.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js +20 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/sheet.xml.rels.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js +77 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/styles.xml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js +22 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js +13 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/files/workbook.xml.rels.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js +242 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/generateXlsxFileContents.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js +29 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/getFeatures.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/convertDateToSerialNumber.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js +42 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getAdditionalContent.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js +43 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getElementXml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js +93 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/getWrittenFiles.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js +39 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/features/transformContent.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js +17 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getAlignmentXml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js +29 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getBorderXml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js +14 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getCellAddress.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js +11 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFileExtensionForContentType.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js +14 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFillXml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js +12 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getFontXml.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js +24 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getOrderOfSiblings.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/getXlsxColorForHexColor.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasAlignment.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasBorder.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFill.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/hasFont.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isCellObject.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/isObject.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js +27 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/helpers/orderOfSiblings.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js +17 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/initializeSharedStrings.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js +74 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/initializeSheets.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js +138 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/initializeStyles.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js +40 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetData.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js +11 -0
- package/dist/node_modules/write-excel-file/modules/xlsx/validateSheetName.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xml/appendMarkupInsideElement.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xml/applyEnclosingElementOffset.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js +12 -0
- package/dist/node_modules/write-excel-file/modules/xml/escapeXmlSpecialCharacters.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/findElement.js +12 -0
- package/dist/node_modules/write-excel-file/modules/xml/findElement.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js +12 -0
- package/dist/node_modules/write-excel-file/modules/xml/findElementInsideElement.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js +41 -0
- package/dist/node_modules/write-excel-file/modules/xml/findElementsNonRecursive_.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js +14 -0
- package/dist/node_modules/write-excel-file/modules/xml/getAttributesString.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js +42 -0
- package/dist/node_modules/write-excel-file/modules/xml/getChildElements.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js +8 -0
- package/dist/node_modules/write-excel-file/modules/xml/getClosingTagMarkup.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js +8 -0
- package/dist/node_modules/write-excel-file/modules/xml/getMarkupInsideElement.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xml/getOpeningTagMarkup.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xml/getSelfClosingTagMarkup.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js +64 -0
- package/dist/node_modules/write-excel-file/modules/xml/insertElementMarkupAccordingToOrderOfSiblings.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xml/prependMarkupInsideElement.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js +9 -0
- package/dist/node_modules/write-excel-file/modules/xml/removeInvalidXmlCharacters.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js +8 -0
- package/dist/node_modules/write-excel-file/modules/xml/replaceElement.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js +10 -0
- package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeName.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js +11 -0
- package/dist/node_modules/write-excel-file/modules/xml/sanitizeAttributeValue.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js +11 -0
- package/dist/node_modules/write-excel-file/modules/xml/sanitizeTextContent.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js +8 -0
- package/dist/node_modules/write-excel-file/modules/xml/setMarkupInsideElement.js.map +1 -0
- package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js +18 -0
- package/dist/node_modules/write-excel-file/modules/zip/zipToArrayBuffer.js.map +1 -0
- package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +154 -147
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +122 -106
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/comments/CommentThread.d.ts +8 -1
- package/dist/planmagnet/comments/CommentThread.d.ts.map +1 -1
- package/dist/planmagnet/comments/CommentThread.js +188 -181
- package/dist/planmagnet/comments/CommentThread.js.map +1 -1
- package/dist/planmagnet/comments/TargetComments.d.ts +10 -2
- package/dist/planmagnet/comments/TargetComments.d.ts.map +1 -1
- package/dist/planmagnet/comments/TargetComments.js +10 -8
- package/dist/planmagnet/comments/TargetComments.js.map +1 -1
- package/dist/planmagnet/comments/WorkItemComments.d.ts +7 -1
- package/dist/planmagnet/comments/WorkItemComments.d.ts.map +1 -1
- package/dist/planmagnet/comments/WorkItemComments.js +5 -4
- package/dist/planmagnet/comments/WorkItemComments.js.map +1 -1
- package/dist/planmagnet/controls/Pickers.d.ts +10 -0
- package/dist/planmagnet/controls/Pickers.d.ts.map +1 -1
- package/dist/planmagnet/controls/Pickers.js +75 -27
- package/dist/planmagnet/controls/Pickers.js.map +1 -1
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.d.ts +8 -0
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.d.ts.map +1 -0
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js +217 -0
- package/dist/planmagnet/discussion/WorkItemDiscussionPanel.js.map +1 -0
- package/dist/planmagnet/docs/DocDiffView.d.ts +26 -0
- package/dist/planmagnet/docs/DocDiffView.d.ts.map +1 -0
- package/dist/planmagnet/docs/DocDiffView.js +52 -0
- package/dist/planmagnet/docs/DocDiffView.js.map +1 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.d.ts +13 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.d.ts.map +1 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.js +308 -0
- package/dist/planmagnet/docs/DocSuggestionsPanel.js.map +1 -0
- package/dist/planmagnet/docs/DocVersionCompare.d.ts +7 -0
- package/dist/planmagnet/docs/DocVersionCompare.d.ts.map +1 -0
- package/dist/planmagnet/docs/DocVersionCompare.js +105 -0
- package/dist/planmagnet/docs/DocVersionCompare.js.map +1 -0
- package/dist/planmagnet/hooks/usePresence.d.ts +39 -0
- package/dist/planmagnet/hooks/usePresence.d.ts.map +1 -0
- package/dist/planmagnet/hooks/usePresence.js +146 -0
- package/dist/planmagnet/hooks/usePresence.js.map +1 -0
- package/dist/planmagnet/index.d.ts +2 -0
- package/dist/planmagnet/index.d.ts.map +1 -1
- package/dist/planmagnet/index.js +2 -0
- package/dist/planmagnet/links/CodeLinksPanel.d.ts +22 -0
- package/dist/planmagnet/links/CodeLinksPanel.d.ts.map +1 -0
- package/dist/planmagnet/links/CodeLinksPanel.js +94 -0
- package/dist/planmagnet/links/CodeLinksPanel.js.map +1 -0
- package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +488 -217
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +136 -130
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +205 -196
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts +6 -0
- package/dist/planmagnet/pages/ReportsCreateReportPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ReportsCreateReportPagePage.js +5 -177
- package/dist/planmagnet/pages/ReportsCreateReportPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ReportsEditReportPagePage.d.ts +3 -0
- package/dist/planmagnet/pages/ReportsEditReportPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ReportsEditReportPagePage.js +15 -0
- package/dist/planmagnet/pages/ReportsEditReportPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ReportsReportPagePage.d.ts +7 -0
- package/dist/planmagnet/pages/ReportsReportPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/ReportsReportPagePage.js +226 -0
- package/dist/planmagnet/pages/ReportsReportPagePage.js.map +1 -0
- package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ReportsReportsPagePage.js +224 -496
- package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js +194 -160
- package/dist/planmagnet/pages/TasksTaskDetailPagePage.js.map +1 -1
- package/dist/planmagnet/presence/PresenceAvatars.d.ts +16 -0
- package/dist/planmagnet/presence/PresenceAvatars.d.ts.map +1 -0
- package/dist/planmagnet/presence/PresenceAvatars.js +56 -0
- package/dist/planmagnet/presence/PresenceAvatars.js.map +1 -0
- package/dist/planmagnet/reports/ExportMenu.d.ts +9 -0
- package/dist/planmagnet/reports/ExportMenu.d.ts.map +1 -0
- package/dist/planmagnet/reports/ExportMenu.js +116 -0
- package/dist/planmagnet/reports/ExportMenu.js.map +1 -0
- package/dist/planmagnet/reports/PrintReportView.d.ts +24 -0
- package/dist/planmagnet/reports/PrintReportView.d.ts.map +1 -0
- package/dist/planmagnet/reports/PrintReportView.js +75 -0
- package/dist/planmagnet/reports/PrintReportView.js.map +1 -0
- package/dist/planmagnet/reports/ReportBuilderCanvas.d.ts +8 -0
- package/dist/planmagnet/reports/ReportBuilderCanvas.d.ts.map +1 -0
- package/dist/planmagnet/reports/ReportBuilderCanvas.js +261 -0
- package/dist/planmagnet/reports/ReportBuilderCanvas.js.map +1 -0
- package/dist/planmagnet/reports/ReportBuilderPage.d.ts +5 -0
- package/dist/planmagnet/reports/ReportBuilderPage.d.ts.map +1 -0
- package/dist/planmagnet/reports/ReportBuilderPage.js +198 -0
- package/dist/planmagnet/reports/ReportBuilderPage.js.map +1 -0
- package/dist/planmagnet/reports/ReportRunHistory.d.ts +8 -0
- package/dist/planmagnet/reports/ReportRunHistory.d.ts.map +1 -0
- package/dist/planmagnet/reports/ReportRunHistory.js +63 -0
- package/dist/planmagnet/reports/ReportRunHistory.js.map +1 -0
- package/dist/planmagnet/reports/ReportWidgetRenderer.d.ts +7 -0
- package/dist/planmagnet/reports/ReportWidgetRenderer.d.ts.map +1 -0
- package/dist/planmagnet/reports/ReportWidgetRenderer.js +251 -0
- package/dist/planmagnet/reports/ReportWidgetRenderer.js.map +1 -0
- package/dist/planmagnet/reports/SchedulesPanel.d.ts +4 -0
- package/dist/planmagnet/reports/SchedulesPanel.d.ts.map +1 -0
- package/dist/planmagnet/reports/SchedulesPanel.js +457 -0
- package/dist/planmagnet/reports/SchedulesPanel.js.map +1 -0
- package/dist/planmagnet/reports/ShareDialog.d.ts +5 -0
- package/dist/planmagnet/reports/ShareDialog.d.ts.map +1 -0
- package/dist/planmagnet/reports/ShareDialog.js +234 -0
- package/dist/planmagnet/reports/ShareDialog.js.map +1 -0
- package/dist/planmagnet/reports/SharedReportPage.d.ts +4 -0
- package/dist/planmagnet/reports/SharedReportPage.d.ts.map +1 -0
- package/dist/planmagnet/reports/SharedReportPage.js +180 -0
- package/dist/planmagnet/reports/SharedReportPage.js.map +1 -0
- package/dist/planmagnet/reports/WidgetEditorDialog.d.ts +10 -0
- package/dist/planmagnet/reports/WidgetEditorDialog.d.ts.map +1 -0
- package/dist/planmagnet/reports/WidgetEditorDialog.js +220 -0
- package/dist/planmagnet/reports/WidgetEditorDialog.js.map +1 -0
- package/dist/planmagnet/reports/reportExportPptx.d.ts +4 -0
- package/dist/planmagnet/reports/reportExportPptx.d.ts.map +1 -0
- package/dist/planmagnet/reports/reportExportPptx.js +118 -0
- package/dist/planmagnet/reports/reportExportPptx.js.map +1 -0
- package/dist/planmagnet/reports/reportExportXlsx.d.ts +4 -0
- package/dist/planmagnet/reports/reportExportXlsx.d.ts.map +1 -0
- package/dist/planmagnet/reports/reportExportXlsx.js +42 -0
- package/dist/planmagnet/reports/reportExportXlsx.js.map +1 -0
- package/dist/planmagnet/reports/reportGraphql.d.ts +28 -0
- package/dist/planmagnet/reports/reportGraphql.d.ts.map +1 -0
- package/dist/planmagnet/reports/reportGraphql.js +360 -0
- package/dist/planmagnet/reports/reportGraphql.js.map +1 -0
- package/dist/planmagnet/reports/reportModel.d.ts +198 -0
- package/dist/planmagnet/reports/reportModel.d.ts.map +1 -0
- package/dist/planmagnet/reports/reportModel.js +328 -0
- package/dist/planmagnet/reports/reportModel.js.map +1 -0
- package/dist/planmagnet/reports/sharedReportRoute.d.ts +14 -0
- package/dist/planmagnet/reports/sharedReportRoute.d.ts.map +1 -0
- package/dist/planmagnet/reports/sharedReportRoute.js +9 -0
- package/dist/planmagnet/reports/sharedReportRoute.js.map +1 -0
- package/dist/planmagnet/utils/graphqlErrors.d.ts +6 -0
- package/dist/planmagnet/utils/graphqlErrors.d.ts.map +1 -1
- package/dist/planmagnet/utils/graphqlErrors.js +5 -2
- package/dist/planmagnet/utils/graphqlErrors.js.map +1 -1
- package/dist/planmagnet/utils/lineDiff.d.ts +21 -0
- package/dist/planmagnet/utils/lineDiff.d.ts.map +1 -0
- package/dist/planmagnet/utils/lineDiff.js +36 -0
- package/dist/planmagnet/utils/lineDiff.js.map +1 -0
- package/package.json +6 -4
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { usePlanMagnet as e } from "../providers/PlanMagnetProvider.js";
|
|
2
|
+
import { PersonName as t } from "../people/People.js";
|
|
3
|
+
import { throwOnError as n } from "../utils/mutationResult.js";
|
|
4
|
+
import { ConfirmButton as r, ErrorLine as i } from "../controls/ConfirmButton.js";
|
|
5
|
+
import { mutationErrorMessage as a } from "../utils/graphqlErrors.js";
|
|
6
|
+
import { CREATE_REPORT_SCHEDULE as o, DELETE_REPORT_SCHEDULE as s, LIST_REPORT_SCHEDULES as c, UPDATE_REPORT_SCHEDULE as l } from "./reportGraphql.js";
|
|
7
|
+
import { useDeferredValue as u, useEffect as d, useState as f } from "react";
|
|
8
|
+
import { CalendarClock as p, Plus as m } from "lucide-react";
|
|
9
|
+
import { useMutation as h, useQuery as g } from "@apollo/client/react";
|
|
10
|
+
import { Fragment as _, jsx as v, jsxs as y } from "react/jsx-runtime";
|
|
11
|
+
import { Badge as b, Button as x, Checkbox as S, Input as C, Label as w, ResponsiveDialog as T, ResponsiveDialogContent as E, ResponsiveDialogDescription as D, ResponsiveDialogFooter as O, ResponsiveDialogHeader as k, ResponsiveDialogTitle as A, Select as j, SelectContent as M, SelectItem as N, SelectTrigger as P, SelectValue as F, Switch as I } from "@burdenoff/fe-libs/ui";
|
|
12
|
+
import { useWorkspaceDirectory as L } from "@burdenoff/fe-libs/sharing";
|
|
13
|
+
//#region src/planmagnet/reports/SchedulesPanel.tsx
|
|
14
|
+
var R = [
|
|
15
|
+
"DAILY",
|
|
16
|
+
"WEEKLY",
|
|
17
|
+
"MONTHLY"
|
|
18
|
+
], z = [
|
|
19
|
+
"CSV",
|
|
20
|
+
"JSON",
|
|
21
|
+
"XML"
|
|
22
|
+
], B = [
|
|
23
|
+
"Sunday",
|
|
24
|
+
"Monday",
|
|
25
|
+
"Tuesday",
|
|
26
|
+
"Wednesday",
|
|
27
|
+
"Thursday",
|
|
28
|
+
"Friday",
|
|
29
|
+
"Saturday"
|
|
30
|
+
];
|
|
31
|
+
function V(e) {
|
|
32
|
+
let t = /* @__PURE__ */ new Date();
|
|
33
|
+
return t.setUTCHours(e, 0, 0, 0), t.toLocaleTimeString(void 0, {
|
|
34
|
+
hour: "numeric",
|
|
35
|
+
minute: "2-digit"
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function H(e) {
|
|
39
|
+
return e ? new Date(e).toLocaleString() : "—";
|
|
40
|
+
}
|
|
41
|
+
function U({ selected: t, onToggle: n }) {
|
|
42
|
+
let { workspaceId: r, authToken: i, apiGatewayUrl: a } = e(), [o, s] = f(""), c = u(o.trim()), l = L({
|
|
43
|
+
workspaceId: r ?? "",
|
|
44
|
+
authToken: i ?? void 0,
|
|
45
|
+
apiGatewayUrl: a ?? void 0
|
|
46
|
+
}), { search: p } = l;
|
|
47
|
+
return d(() => {
|
|
48
|
+
p(c);
|
|
49
|
+
}, [c, p]), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(C, {
|
|
50
|
+
value: o,
|
|
51
|
+
onChange: (e) => s(e.target.value),
|
|
52
|
+
placeholder: "Search workspace members",
|
|
53
|
+
"aria-label": "Search workspace members"
|
|
54
|
+
}), /* @__PURE__ */ y("div", {
|
|
55
|
+
className: "mt-2 max-h-48 space-y-1 overflow-y-auto",
|
|
56
|
+
children: [
|
|
57
|
+
l.loading && l.members.length === 0 && /* @__PURE__ */ v("p", {
|
|
58
|
+
className: "py-4 text-center text-sm text-muted-foreground",
|
|
59
|
+
children: "Loading…"
|
|
60
|
+
}),
|
|
61
|
+
!l.loading && l.members.length === 0 && /* @__PURE__ */ v("p", {
|
|
62
|
+
className: "py-4 text-center text-sm text-muted-foreground",
|
|
63
|
+
children: "No matching members."
|
|
64
|
+
}),
|
|
65
|
+
l.members.map((e) => {
|
|
66
|
+
let r = `schedule-recipient-${e.id}`;
|
|
67
|
+
return /* @__PURE__ */ y("label", {
|
|
68
|
+
htmlFor: r,
|
|
69
|
+
className: "flex cursor-pointer items-center gap-3 rounded-md border p-2 text-sm hover:bg-muted",
|
|
70
|
+
children: [/* @__PURE__ */ v(S, {
|
|
71
|
+
id: r,
|
|
72
|
+
checked: t.has(e.id),
|
|
73
|
+
onCheckedChange: (t) => n(e.id, t === !0)
|
|
74
|
+
}), /* @__PURE__ */ y("span", {
|
|
75
|
+
className: "min-w-0 flex-1 truncate",
|
|
76
|
+
children: [e.name, e.email && /* @__PURE__ */ y("span", {
|
|
77
|
+
className: "text-muted-foreground",
|
|
78
|
+
children: [" · ", e.email]
|
|
79
|
+
})]
|
|
80
|
+
})]
|
|
81
|
+
}, e.id);
|
|
82
|
+
}),
|
|
83
|
+
l.hasMore && /* @__PURE__ */ v("button", {
|
|
84
|
+
type: "button",
|
|
85
|
+
className: "w-full py-1 text-xs text-primary hover:underline",
|
|
86
|
+
onClick: l.fetchMore,
|
|
87
|
+
children: "Show more members"
|
|
88
|
+
})
|
|
89
|
+
]
|
|
90
|
+
})] });
|
|
91
|
+
}
|
|
92
|
+
function W(e) {
|
|
93
|
+
return e ? {
|
|
94
|
+
cadence: e.cadence,
|
|
95
|
+
hourUtc: e.hourUtc,
|
|
96
|
+
dayOfWeek: e.dayOfWeek ?? 1,
|
|
97
|
+
dayOfMonth: e.dayOfMonth ?? 1,
|
|
98
|
+
format: e.format,
|
|
99
|
+
recipientIds: new Set(e.recipientIds)
|
|
100
|
+
} : {
|
|
101
|
+
cadence: "WEEKLY",
|
|
102
|
+
hourUtc: 9,
|
|
103
|
+
dayOfWeek: 1,
|
|
104
|
+
dayOfMonth: 1,
|
|
105
|
+
format: "CSV",
|
|
106
|
+
recipientIds: /* @__PURE__ */ new Set()
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function G({ reportId: e, schedule: t, onCancel: r, onSaved: s }) {
|
|
110
|
+
let [u, d] = f(() => W(t)), [p, m] = f(null), g = { refetchQueries: [{
|
|
111
|
+
query: c,
|
|
112
|
+
variables: { reportId: e }
|
|
113
|
+
}] }, [b, S] = h(o, g), [T, E] = h(l, g), I = S.loading || E.loading, L = (e, t) => d((n) => {
|
|
114
|
+
let r = new Set(n.recipientIds);
|
|
115
|
+
return t ? r.add(e) : r.delete(e), {
|
|
116
|
+
...n,
|
|
117
|
+
recipientIds: r
|
|
118
|
+
};
|
|
119
|
+
}), H = async () => {
|
|
120
|
+
m(null);
|
|
121
|
+
let r = {
|
|
122
|
+
cadence: u.cadence,
|
|
123
|
+
hourUtc: u.hourUtc,
|
|
124
|
+
dayOfWeek: u.cadence === "WEEKLY" ? u.dayOfWeek : void 0,
|
|
125
|
+
dayOfMonth: u.cadence === "MONTHLY" ? u.dayOfMonth : void 0,
|
|
126
|
+
format: u.format,
|
|
127
|
+
recipientIds: [...u.recipientIds]
|
|
128
|
+
};
|
|
129
|
+
try {
|
|
130
|
+
t ? await n(T({ variables: {
|
|
131
|
+
id: t.id,
|
|
132
|
+
input: r
|
|
133
|
+
} })) : await n(b({ variables: {
|
|
134
|
+
reportId: e,
|
|
135
|
+
input: r
|
|
136
|
+
} })), s();
|
|
137
|
+
} catch (e) {
|
|
138
|
+
m(a(e, "The schedule could not be saved."));
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
return /* @__PURE__ */ y(_, { children: [
|
|
142
|
+
/* @__PURE__ */ y(k, { children: [/* @__PURE__ */ v(A, { children: t ? "Edit schedule" : "New schedule" }), /* @__PURE__ */ v(D, { children: "A due schedule runs this report automatically, as you. Email delivery is not available yet — recipients read the run in-app under run history." })] }),
|
|
143
|
+
/* @__PURE__ */ y("div", {
|
|
144
|
+
className: "space-y-3",
|
|
145
|
+
children: [
|
|
146
|
+
/* @__PURE__ */ y("div", {
|
|
147
|
+
className: "grid grid-cols-2 gap-3",
|
|
148
|
+
children: [/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, {
|
|
149
|
+
htmlFor: "schedule-cadence",
|
|
150
|
+
children: "Cadence"
|
|
151
|
+
}), /* @__PURE__ */ y(j, {
|
|
152
|
+
value: u.cadence,
|
|
153
|
+
onValueChange: (e) => d((t) => ({
|
|
154
|
+
...t,
|
|
155
|
+
cadence: e
|
|
156
|
+
})),
|
|
157
|
+
children: [/* @__PURE__ */ v(P, {
|
|
158
|
+
id: "schedule-cadence",
|
|
159
|
+
className: "mt-1",
|
|
160
|
+
children: /* @__PURE__ */ v(F, {})
|
|
161
|
+
}), /* @__PURE__ */ v(M, { children: R.map((e) => /* @__PURE__ */ v(N, {
|
|
162
|
+
value: e,
|
|
163
|
+
children: e.charAt(0) + e.slice(1).toLowerCase()
|
|
164
|
+
}, e)) })]
|
|
165
|
+
})] }), /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, {
|
|
166
|
+
htmlFor: "schedule-format",
|
|
167
|
+
children: "Export format"
|
|
168
|
+
}), /* @__PURE__ */ y(j, {
|
|
169
|
+
value: u.format,
|
|
170
|
+
onValueChange: (e) => d((t) => ({
|
|
171
|
+
...t,
|
|
172
|
+
format: e
|
|
173
|
+
})),
|
|
174
|
+
children: [/* @__PURE__ */ v(P, {
|
|
175
|
+
id: "schedule-format",
|
|
176
|
+
className: "mt-1",
|
|
177
|
+
children: /* @__PURE__ */ v(F, {})
|
|
178
|
+
}), /* @__PURE__ */ v(M, { children: z.map((e) => /* @__PURE__ */ v(N, {
|
|
179
|
+
value: e,
|
|
180
|
+
children: e
|
|
181
|
+
}, e)) })]
|
|
182
|
+
})] })]
|
|
183
|
+
}),
|
|
184
|
+
u.cadence === "WEEKLY" && /* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, {
|
|
185
|
+
htmlFor: "schedule-dow",
|
|
186
|
+
children: "Day of week"
|
|
187
|
+
}), /* @__PURE__ */ y(j, {
|
|
188
|
+
value: String(u.dayOfWeek),
|
|
189
|
+
onValueChange: (e) => d((t) => ({
|
|
190
|
+
...t,
|
|
191
|
+
dayOfWeek: Number(e)
|
|
192
|
+
})),
|
|
193
|
+
children: [/* @__PURE__ */ v(P, {
|
|
194
|
+
id: "schedule-dow",
|
|
195
|
+
className: "mt-1",
|
|
196
|
+
children: /* @__PURE__ */ v(F, {})
|
|
197
|
+
}), /* @__PURE__ */ v(M, { children: B.map((e, t) => /* @__PURE__ */ v(N, {
|
|
198
|
+
value: String(t),
|
|
199
|
+
children: e
|
|
200
|
+
}, e)) })]
|
|
201
|
+
})] }),
|
|
202
|
+
u.cadence === "MONTHLY" && /* @__PURE__ */ y("div", { children: [
|
|
203
|
+
/* @__PURE__ */ v(w, {
|
|
204
|
+
htmlFor: "schedule-dom",
|
|
205
|
+
children: "Day of month"
|
|
206
|
+
}),
|
|
207
|
+
/* @__PURE__ */ v(C, {
|
|
208
|
+
id: "schedule-dom",
|
|
209
|
+
type: "number",
|
|
210
|
+
min: 1,
|
|
211
|
+
max: 28,
|
|
212
|
+
className: "mt-1",
|
|
213
|
+
value: u.dayOfMonth,
|
|
214
|
+
onChange: (e) => d((t) => ({
|
|
215
|
+
...t,
|
|
216
|
+
dayOfMonth: Math.min(28, Math.max(1, Number(e.target.value) || 1))
|
|
217
|
+
}))
|
|
218
|
+
}),
|
|
219
|
+
/* @__PURE__ */ v("p", {
|
|
220
|
+
className: "mt-1 text-xs text-muted-foreground",
|
|
221
|
+
children: "Capped at 28 so every month has this day."
|
|
222
|
+
})
|
|
223
|
+
] }),
|
|
224
|
+
/* @__PURE__ */ y("div", { children: [
|
|
225
|
+
/* @__PURE__ */ v(w, {
|
|
226
|
+
htmlFor: "schedule-hour",
|
|
227
|
+
children: "Hour (UTC)"
|
|
228
|
+
}),
|
|
229
|
+
/* @__PURE__ */ y(j, {
|
|
230
|
+
value: String(u.hourUtc),
|
|
231
|
+
onValueChange: (e) => d((t) => ({
|
|
232
|
+
...t,
|
|
233
|
+
hourUtc: Number(e)
|
|
234
|
+
})),
|
|
235
|
+
children: [/* @__PURE__ */ v(P, {
|
|
236
|
+
id: "schedule-hour",
|
|
237
|
+
className: "mt-1",
|
|
238
|
+
children: /* @__PURE__ */ v(F, {})
|
|
239
|
+
}), /* @__PURE__ */ v(M, { children: Array.from({ length: 24 }, (e, t) => /* @__PURE__ */ y(N, {
|
|
240
|
+
value: String(t),
|
|
241
|
+
children: [String(t).padStart(2, "0"), ":00 UTC"]
|
|
242
|
+
}, t)) })]
|
|
243
|
+
}),
|
|
244
|
+
/* @__PURE__ */ y("p", {
|
|
245
|
+
className: "mt-1 text-xs text-muted-foreground",
|
|
246
|
+
children: [
|
|
247
|
+
"That’s ",
|
|
248
|
+
V(u.hourUtc),
|
|
249
|
+
" for you."
|
|
250
|
+
]
|
|
251
|
+
})
|
|
252
|
+
] }),
|
|
253
|
+
/* @__PURE__ */ y("div", { children: [/* @__PURE__ */ v(w, { children: "Recipients (read in-app; no email yet)" }), /* @__PURE__ */ v("div", {
|
|
254
|
+
className: "mt-1",
|
|
255
|
+
children: /* @__PURE__ */ v(U, {
|
|
256
|
+
selected: u.recipientIds,
|
|
257
|
+
onToggle: L
|
|
258
|
+
})
|
|
259
|
+
})] })
|
|
260
|
+
]
|
|
261
|
+
}),
|
|
262
|
+
p && /* @__PURE__ */ v(i, { message: p }),
|
|
263
|
+
/* @__PURE__ */ y(O, { children: [/* @__PURE__ */ v(x, {
|
|
264
|
+
variant: "outline",
|
|
265
|
+
onClick: r,
|
|
266
|
+
children: "Cancel"
|
|
267
|
+
}), /* @__PURE__ */ v(x, {
|
|
268
|
+
onClick: () => void H(),
|
|
269
|
+
disabled: I,
|
|
270
|
+
children: I ? "Saving…" : "Save schedule"
|
|
271
|
+
})] })
|
|
272
|
+
] });
|
|
273
|
+
}
|
|
274
|
+
function K({ reportId: e, schedule: t, open: n, onOpenChange: r }) {
|
|
275
|
+
return /* @__PURE__ */ v(T, {
|
|
276
|
+
open: n,
|
|
277
|
+
onOpenChange: r,
|
|
278
|
+
children: /* @__PURE__ */ v(E, {
|
|
279
|
+
className: "max-h-[85vh] overflow-y-auto sm:max-w-lg",
|
|
280
|
+
children: n && /* @__PURE__ */ v(G, {
|
|
281
|
+
reportId: e,
|
|
282
|
+
schedule: t,
|
|
283
|
+
onCancel: () => r(!1),
|
|
284
|
+
onSaved: () => r(!1)
|
|
285
|
+
})
|
|
286
|
+
})
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
function q({ schedule: e, reportId: t }) {
|
|
290
|
+
let [r, { loading: o }] = h(l, { refetchQueries: [{
|
|
291
|
+
query: c,
|
|
292
|
+
variables: { reportId: t }
|
|
293
|
+
}] }), [s, u] = f(null);
|
|
294
|
+
return /* @__PURE__ */ y("div", {
|
|
295
|
+
className: "flex items-center gap-1.5",
|
|
296
|
+
children: [
|
|
297
|
+
/* @__PURE__ */ v(I, {
|
|
298
|
+
checked: e.active,
|
|
299
|
+
disabled: o,
|
|
300
|
+
"aria-label": e.active ? "Pause schedule" : "Resume schedule",
|
|
301
|
+
onCheckedChange: (t) => {
|
|
302
|
+
u(null), (async () => {
|
|
303
|
+
try {
|
|
304
|
+
await n(r({ variables: {
|
|
305
|
+
id: e.id,
|
|
306
|
+
input: { active: t }
|
|
307
|
+
} }));
|
|
308
|
+
} catch (e) {
|
|
309
|
+
u(a(e, "Could not update."));
|
|
310
|
+
}
|
|
311
|
+
})();
|
|
312
|
+
}
|
|
313
|
+
}),
|
|
314
|
+
/* @__PURE__ */ v("span", {
|
|
315
|
+
className: "text-xs text-muted-foreground",
|
|
316
|
+
children: e.active ? "Active" : "Paused"
|
|
317
|
+
}),
|
|
318
|
+
s && /* @__PURE__ */ v(i, { message: s })
|
|
319
|
+
]
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
function J({ reportId: e }) {
|
|
323
|
+
let [o, l] = f(!1), [u, d] = f(null), { data: S, loading: C } = g(c, { variables: { reportId: e } }), [w] = h(s, { refetchQueries: [{
|
|
324
|
+
query: c,
|
|
325
|
+
variables: { reportId: e }
|
|
326
|
+
}] }), [T, E] = f(null), D = S?.planmagnetReportSchedules ?? [];
|
|
327
|
+
return /* @__PURE__ */ y("div", {
|
|
328
|
+
className: "space-y-3",
|
|
329
|
+
"data-testid": "report-schedules",
|
|
330
|
+
children: [
|
|
331
|
+
/* @__PURE__ */ y("div", {
|
|
332
|
+
className: "flex items-center justify-between",
|
|
333
|
+
children: [/* @__PURE__ */ v("h2", {
|
|
334
|
+
className: "text-sm font-semibold",
|
|
335
|
+
children: "Schedules"
|
|
336
|
+
}), /* @__PURE__ */ y(x, {
|
|
337
|
+
size: "sm",
|
|
338
|
+
onClick: () => {
|
|
339
|
+
d(null), l(!0);
|
|
340
|
+
},
|
|
341
|
+
children: [/* @__PURE__ */ v(m, { className: "mr-1 h-4 w-4" }), "New schedule"]
|
|
342
|
+
})]
|
|
343
|
+
}),
|
|
344
|
+
/* @__PURE__ */ v("p", {
|
|
345
|
+
className: "text-xs text-muted-foreground",
|
|
346
|
+
children: "Email delivery is not available yet (Linear BOFF-7927) — recipients read a scheduled run in-app, under run history."
|
|
347
|
+
}),
|
|
348
|
+
T && /* @__PURE__ */ v(i, { message: T }),
|
|
349
|
+
C && !S ? /* @__PURE__ */ v("p", {
|
|
350
|
+
className: "text-sm text-muted-foreground",
|
|
351
|
+
children: "Loading…"
|
|
352
|
+
}) : D.length === 0 ? /* @__PURE__ */ v("p", {
|
|
353
|
+
className: "text-sm text-muted-foreground",
|
|
354
|
+
children: "No schedules yet."
|
|
355
|
+
}) : /* @__PURE__ */ v("ul", {
|
|
356
|
+
className: "space-y-2",
|
|
357
|
+
children: D.map((i) => /* @__PURE__ */ y("li", {
|
|
358
|
+
className: "rounded-md border border-border p-3 text-sm",
|
|
359
|
+
children: [
|
|
360
|
+
/* @__PURE__ */ y("div", {
|
|
361
|
+
className: "flex flex-wrap items-start justify-between gap-2",
|
|
362
|
+
children: [/* @__PURE__ */ y("div", {
|
|
363
|
+
className: "flex items-center gap-2",
|
|
364
|
+
children: [
|
|
365
|
+
/* @__PURE__ */ v(p, {
|
|
366
|
+
className: "h-4 w-4 text-muted-foreground",
|
|
367
|
+
"aria-hidden": !0
|
|
368
|
+
}),
|
|
369
|
+
/* @__PURE__ */ y("span", {
|
|
370
|
+
className: "font-medium",
|
|
371
|
+
children: [
|
|
372
|
+
i.cadence.charAt(0) + i.cadence.slice(1).toLowerCase(),
|
|
373
|
+
" at",
|
|
374
|
+
" ",
|
|
375
|
+
String(i.hourUtc).padStart(2, "0"),
|
|
376
|
+
":00 UTC (",
|
|
377
|
+
V(i.hourUtc),
|
|
378
|
+
")"
|
|
379
|
+
]
|
|
380
|
+
}),
|
|
381
|
+
/* @__PURE__ */ v(b, {
|
|
382
|
+
variant: "outline",
|
|
383
|
+
children: i.format
|
|
384
|
+
})
|
|
385
|
+
]
|
|
386
|
+
}), /* @__PURE__ */ y("div", {
|
|
387
|
+
className: "flex items-center gap-2",
|
|
388
|
+
children: [
|
|
389
|
+
/* @__PURE__ */ v(q, {
|
|
390
|
+
schedule: i,
|
|
391
|
+
reportId: e
|
|
392
|
+
}),
|
|
393
|
+
/* @__PURE__ */ v(x, {
|
|
394
|
+
size: "sm",
|
|
395
|
+
variant: "outline",
|
|
396
|
+
onClick: () => {
|
|
397
|
+
d(i), l(!0);
|
|
398
|
+
},
|
|
399
|
+
children: "Edit"
|
|
400
|
+
}),
|
|
401
|
+
/* @__PURE__ */ v(r, {
|
|
402
|
+
label: "Delete",
|
|
403
|
+
icon: null,
|
|
404
|
+
title: "Delete this schedule?",
|
|
405
|
+
description: "It stops running. This cannot be undone.",
|
|
406
|
+
confirmLabel: "Delete",
|
|
407
|
+
destructive: !0,
|
|
408
|
+
variant: "outline",
|
|
409
|
+
disabled: !1,
|
|
410
|
+
onConfirm: () => {
|
|
411
|
+
E(null), (async () => {
|
|
412
|
+
try {
|
|
413
|
+
await n(w({ variables: { id: i.id } }));
|
|
414
|
+
} catch (e) {
|
|
415
|
+
E(a(e, "Could not delete."));
|
|
416
|
+
}
|
|
417
|
+
})();
|
|
418
|
+
}
|
|
419
|
+
})
|
|
420
|
+
]
|
|
421
|
+
})]
|
|
422
|
+
}),
|
|
423
|
+
/* @__PURE__ */ y("p", {
|
|
424
|
+
className: "mt-1 text-xs text-muted-foreground",
|
|
425
|
+
children: [
|
|
426
|
+
"Next run ",
|
|
427
|
+
H(i.nextRunAt),
|
|
428
|
+
" · Last run",
|
|
429
|
+
" ",
|
|
430
|
+
H(i.lastRunAt),
|
|
431
|
+
i.lastError ? ` · last error: ${i.lastError}` : ""
|
|
432
|
+
]
|
|
433
|
+
}),
|
|
434
|
+
/* @__PURE__ */ v("p", {
|
|
435
|
+
className: "mt-1 text-xs text-muted-foreground",
|
|
436
|
+
children: i.recipientIds.length === 0 ? "No recipients" : /* @__PURE__ */ y(_, { children: [
|
|
437
|
+
"Recipients:",
|
|
438
|
+
" ",
|
|
439
|
+
i.recipientIds.map((e, n) => /* @__PURE__ */ y("span", { children: [n > 0 && ", ", /* @__PURE__ */ v(t, { id: e })] }, e))
|
|
440
|
+
] })
|
|
441
|
+
})
|
|
442
|
+
]
|
|
443
|
+
}, i.id))
|
|
444
|
+
}),
|
|
445
|
+
/* @__PURE__ */ v(K, {
|
|
446
|
+
reportId: e,
|
|
447
|
+
schedule: u,
|
|
448
|
+
open: o,
|
|
449
|
+
onOpenChange: l
|
|
450
|
+
})
|
|
451
|
+
]
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
//#endregion
|
|
455
|
+
export { J as SchedulesPanel };
|
|
456
|
+
|
|
457
|
+
//# sourceMappingURL=SchedulesPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchedulesPanel.js","names":[],"sources":["../../../src/planmagnet/reports/SchedulesPanel.tsx"],"sourcesContent":["import { useDeferredValue, useEffect, useState } from 'react';\nimport { useMutation, useQuery } from '@apollo/client/react';\nimport {\n Badge,\n Button,\n Checkbox,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n Input,\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Switch,\n} from '@burdenoff/fe-libs/ui';\nimport { useWorkspaceDirectory } from '@burdenoff/fe-libs/sharing';\nimport { CalendarClock, Plus } from 'lucide-react';\nimport { usePlanMagnet } from '../providers/PlanMagnetProvider';\nimport { PersonName } from '../people/People';\nimport { ConfirmButton, ErrorLine } from '../controls/ConfirmButton';\nimport { mutationErrorMessage } from '../utils/graphqlErrors';\nimport { throwOnError } from '../utils/mutationResult';\nimport {\n CREATE_REPORT_SCHEDULE,\n DELETE_REPORT_SCHEDULE,\n LIST_REPORT_SCHEDULES,\n UPDATE_REPORT_SCHEDULE,\n} from './reportGraphql';\nimport type { ReportExportFormat, ReportSchedule, ReportScheduleCadence } from './reportModel';\n\n/**\n * Schedules (ANR-15), owner-only. A due schedule runs the report automatically as its owner, but — see\n * `planmagnetReportSchedules`' own schema doc and Linear BOFF-7927 — email delivery does not exist yet, so a\n * scheduled run's `deliveryStatus` stays `PENDING_NOTIFICATIONS` and recipients read it in-app via run history\n * instead. Every schedule form here says so; nothing in this panel implies mail goes out.\n */\n\nconst CADENCES: ReportScheduleCadence[] = ['DAILY', 'WEEKLY', 'MONTHLY'];\nconst FORMATS: ReportExportFormat[] = ['CSV', 'JSON', 'XML'];\nconst WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nfunction localHourLabel(hourUtc: number): string {\n const reference = new Date();\n reference.setUTCHours(hourUtc, 0, 0, 0);\n return reference.toLocaleTimeString(undefined, { hour: 'numeric', minute: '2-digit' });\n}\n\nfunction formatDateTime(iso: string | null): string {\n return iso ? new Date(iso).toLocaleString() : '—';\n}\n\nfunction RecipientsPicker({\n selected,\n onToggle,\n}: {\n selected: Set<string>;\n onToggle: (id: string, checked: boolean) => void;\n}) {\n const { workspaceId, authToken, apiGatewayUrl } = usePlanMagnet();\n const [search, setSearch] = useState('');\n const deferredSearch = useDeferredValue(search.trim());\n const directory = useWorkspaceDirectory({\n workspaceId: workspaceId ?? '',\n authToken: authToken ?? undefined,\n apiGatewayUrl: apiGatewayUrl ?? undefined,\n });\n const { search: setDirectoryFilter } = directory;\n useEffect(() => {\n setDirectoryFilter(deferredSearch);\n }, [deferredSearch, setDirectoryFilter]);\n\n return (\n <div>\n <Input\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search workspace members\"\n aria-label=\"Search workspace members\"\n />\n <div className=\"mt-2 max-h-48 space-y-1 overflow-y-auto\">\n {directory.loading && directory.members.length === 0 && (\n <p className=\"py-4 text-center text-sm text-muted-foreground\">Loading…</p>\n )}\n {!directory.loading && directory.members.length === 0 && (\n <p className=\"py-4 text-center text-sm text-muted-foreground\">No matching members.</p>\n )}\n {directory.members.map((member) => {\n const inputId = `schedule-recipient-${member.id}`;\n return (\n <label\n key={member.id}\n htmlFor={inputId}\n className=\"flex cursor-pointer items-center gap-3 rounded-md border p-2 text-sm hover:bg-muted\"\n >\n <Checkbox\n id={inputId}\n checked={selected.has(member.id)}\n onCheckedChange={(checked) => onToggle(member.id, checked === true)}\n />\n <span className=\"min-w-0 flex-1 truncate\">\n {member.name}\n {member.email && (\n <span className=\"text-muted-foreground\"> · {member.email}</span>\n )}\n </span>\n </label>\n );\n })}\n {directory.hasMore && (\n <button\n type=\"button\"\n className=\"w-full py-1 text-xs text-primary hover:underline\"\n onClick={directory.fetchMore}\n >\n Show more members\n </button>\n )}\n </div>\n </div>\n );\n}\n\ninterface ScheduleFormState {\n cadence: ReportScheduleCadence;\n hourUtc: number;\n dayOfWeek: number;\n dayOfMonth: number;\n format: ReportExportFormat;\n recipientIds: Set<string>;\n}\n\nfunction initialScheduleForm(schedule: ReportSchedule | null): ScheduleFormState {\n if (!schedule) {\n return {\n cadence: 'WEEKLY',\n hourUtc: 9,\n dayOfWeek: 1,\n dayOfMonth: 1,\n format: 'CSV',\n recipientIds: new Set(),\n };\n }\n return {\n cadence: schedule.cadence,\n hourUtc: schedule.hourUtc,\n dayOfWeek: schedule.dayOfWeek ?? 1,\n dayOfMonth: schedule.dayOfMonth ?? 1,\n format: schedule.format,\n recipientIds: new Set(schedule.recipientIds),\n };\n}\n\n/**\n * Only ever rendered while the dialog is open (see `ScheduleDialog` below) — its form state initializes\n * straight from `schedule`, once, on mount, rather than being resynced by an effect on every open/schedule\n * change (same reasoning as `WidgetEditorDialog.tsx`'s `WidgetEditorForm`).\n */\nfunction ScheduleForm({\n reportId,\n schedule,\n onCancel,\n onSaved,\n}: {\n reportId: string;\n schedule: ReportSchedule | null;\n onCancel: () => void;\n onSaved: () => void;\n}) {\n const [form, setForm] = useState<ScheduleFormState>(() => initialScheduleForm(schedule));\n const [error, setError] = useState<string | null>(null);\n const refetch = { refetchQueries: [{ query: LIST_REPORT_SCHEDULES, variables: { reportId } }] };\n const [create, createState] = useMutation(CREATE_REPORT_SCHEDULE, refetch);\n const [update, updateState] = useMutation(UPDATE_REPORT_SCHEDULE, refetch);\n const saving = createState.loading || updateState.loading;\n\n const toggleRecipient = (id: string, checked: boolean) =>\n setForm((prev) => {\n const next = new Set(prev.recipientIds);\n if (checked) next.add(id);\n else next.delete(id);\n return { ...prev, recipientIds: next };\n });\n\n const submit = async () => {\n setError(null);\n const input = {\n cadence: form.cadence,\n hourUtc: form.hourUtc,\n dayOfWeek: form.cadence === 'WEEKLY' ? form.dayOfWeek : undefined,\n dayOfMonth: form.cadence === 'MONTHLY' ? form.dayOfMonth : undefined,\n format: form.format,\n recipientIds: [...form.recipientIds],\n };\n try {\n if (schedule) {\n await throwOnError(update({ variables: { id: schedule.id, input } }));\n } else {\n await throwOnError(create({ variables: { reportId, input } }));\n }\n onSaved();\n } catch (e) {\n setError(mutationErrorMessage(e, 'The schedule could not be saved.'));\n }\n };\n\n return (\n <>\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>{schedule ? 'Edit schedule' : 'New schedule'}</ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n A due schedule runs this report automatically, as you. Email delivery is not available yet\n — recipients read the run in-app under run history.\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-3\">\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <Label htmlFor=\"schedule-cadence\">Cadence</Label>\n <Select\n value={form.cadence}\n onValueChange={(v) => setForm((p) => ({ ...p, cadence: v as ReportScheduleCadence }))}\n >\n <SelectTrigger id=\"schedule-cadence\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {CADENCES.map((c) => (\n <SelectItem key={c} value={c}>\n {c.charAt(0) + c.slice(1).toLowerCase()}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div>\n <Label htmlFor=\"schedule-format\">Export format</Label>\n <Select\n value={form.format}\n onValueChange={(v) => setForm((p) => ({ ...p, format: v as ReportExportFormat }))}\n >\n <SelectTrigger id=\"schedule-format\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {FORMATS.map((f) => (\n <SelectItem key={f} value={f}>\n {f}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n\n {form.cadence === 'WEEKLY' && (\n <div>\n <Label htmlFor=\"schedule-dow\">Day of week</Label>\n <Select\n value={String(form.dayOfWeek)}\n onValueChange={(v) => setForm((p) => ({ ...p, dayOfWeek: Number(v) }))}\n >\n <SelectTrigger id=\"schedule-dow\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {WEEKDAYS.map((label, index) => (\n <SelectItem key={label} value={String(index)}>\n {label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n {form.cadence === 'MONTHLY' && (\n <div>\n <Label htmlFor=\"schedule-dom\">Day of month</Label>\n <Input\n id=\"schedule-dom\"\n type=\"number\"\n min={1}\n max={28}\n className=\"mt-1\"\n value={form.dayOfMonth}\n onChange={(e) =>\n setForm((p) => ({\n ...p,\n dayOfMonth: Math.min(28, Math.max(1, Number(e.target.value) || 1)),\n }))\n }\n />\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Capped at 28 so every month has this day.\n </p>\n </div>\n )}\n\n <div>\n <Label htmlFor=\"schedule-hour\">Hour (UTC)</Label>\n <Select\n value={String(form.hourUtc)}\n onValueChange={(v) => setForm((p) => ({ ...p, hourUtc: Number(v) }))}\n >\n <SelectTrigger id=\"schedule-hour\" className=\"mt-1\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {Array.from({ length: 24 }, (_, hour) => (\n <SelectItem key={hour} value={String(hour)}>\n {String(hour).padStart(2, '0')}:00 UTC\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n That’s {localHourLabel(form.hourUtc)} for you.\n </p>\n </div>\n\n <div>\n <Label>Recipients (read in-app; no email yet)</Label>\n <div className=\"mt-1\">\n <RecipientsPicker selected={form.recipientIds} onToggle={toggleRecipient} />\n </div>\n </div>\n </div>\n\n {error && <ErrorLine message={error} />}\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={onCancel}>\n Cancel\n </Button>\n <Button onClick={() => void submit()} disabled={saving}>\n {saving ? 'Saving…' : 'Save schedule'}\n </Button>\n </ResponsiveDialogFooter>\n </>\n );\n}\n\nfunction ScheduleDialog({\n reportId,\n schedule,\n open,\n onOpenChange,\n}: {\n reportId: string;\n schedule: ReportSchedule | null;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}) {\n return (\n <ResponsiveDialog open={open} onOpenChange={onOpenChange}>\n <ResponsiveDialogContent className=\"max-h-[85vh] overflow-y-auto sm:max-w-lg\">\n {open && (\n <ScheduleForm\n reportId={reportId}\n schedule={schedule}\n onCancel={() => onOpenChange(false)}\n onSaved={() => onOpenChange(false)}\n />\n )}\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n );\n}\n\nfunction ActiveToggle({ schedule, reportId }: { schedule: ReportSchedule; reportId: string }) {\n const [update, { loading }] = useMutation(UPDATE_REPORT_SCHEDULE, {\n refetchQueries: [{ query: LIST_REPORT_SCHEDULES, variables: { reportId } }],\n });\n const [error, setError] = useState<string | null>(null);\n return (\n <div className=\"flex items-center gap-1.5\">\n <Switch\n checked={schedule.active}\n disabled={loading}\n aria-label={schedule.active ? 'Pause schedule' : 'Resume schedule'}\n onCheckedChange={(checked) => {\n setError(null);\n void (async () => {\n try {\n await throwOnError(\n update({ variables: { id: schedule.id, input: { active: checked } } })\n );\n } catch (e) {\n setError(mutationErrorMessage(e, 'Could not update.'));\n }\n })();\n }}\n />\n <span className=\"text-xs text-muted-foreground\">{schedule.active ? 'Active' : 'Paused'}</span>\n {error && <ErrorLine message={error} />}\n </div>\n );\n}\n\nexport function SchedulesPanel({ reportId }: { reportId: string }) {\n const [dialogOpen, setDialogOpen] = useState(false);\n const [editing, setEditing] = useState<ReportSchedule | null>(null);\n const { data, loading } = useQuery<{ planmagnetReportSchedules: ReportSchedule[] }>(\n LIST_REPORT_SCHEDULES,\n { variables: { reportId } }\n );\n const [remove] = useMutation(DELETE_REPORT_SCHEDULE, {\n refetchQueries: [{ query: LIST_REPORT_SCHEDULES, variables: { reportId } }],\n });\n const [deleteError, setDeleteError] = useState<string | null>(null);\n\n const schedules = data?.planmagnetReportSchedules ?? [];\n\n return (\n <div className=\"space-y-3\" data-testid=\"report-schedules\">\n <div className=\"flex items-center justify-between\">\n <h2 className=\"text-sm font-semibold\">Schedules</h2>\n <Button\n size=\"sm\"\n onClick={() => {\n setEditing(null);\n setDialogOpen(true);\n }}\n >\n <Plus className=\"mr-1 h-4 w-4\" />\n New schedule\n </Button>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n Email delivery is not available yet (Linear BOFF-7927) — recipients read a scheduled run\n in-app, under run history.\n </p>\n {deleteError && <ErrorLine message={deleteError} />}\n\n {loading && !data ? (\n <p className=\"text-sm text-muted-foreground\">Loading…</p>\n ) : schedules.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">No schedules yet.</p>\n ) : (\n <ul className=\"space-y-2\">\n {schedules.map((schedule) => (\n <li key={schedule.id} className=\"rounded-md border border-border p-3 text-sm\">\n <div className=\"flex flex-wrap items-start justify-between gap-2\">\n <div className=\"flex items-center gap-2\">\n <CalendarClock className=\"h-4 w-4 text-muted-foreground\" aria-hidden={true} />\n <span className=\"font-medium\">\n {schedule.cadence.charAt(0) + schedule.cadence.slice(1).toLowerCase()} at{' '}\n {String(schedule.hourUtc).padStart(2, '0')}:00 UTC (\n {localHourLabel(schedule.hourUtc)})\n </span>\n <Badge variant=\"outline\">{schedule.format}</Badge>\n </div>\n <div className=\"flex items-center gap-2\">\n <ActiveToggle schedule={schedule} reportId={reportId} />\n <Button\n size=\"sm\"\n variant=\"outline\"\n onClick={() => {\n setEditing(schedule);\n setDialogOpen(true);\n }}\n >\n Edit\n </Button>\n <ConfirmButton\n label=\"Delete\"\n icon={null}\n title=\"Delete this schedule?\"\n description=\"It stops running. This cannot be undone.\"\n confirmLabel=\"Delete\"\n destructive\n variant=\"outline\"\n disabled={false}\n onConfirm={() => {\n setDeleteError(null);\n void (async () => {\n try {\n await throwOnError(remove({ variables: { id: schedule.id } }));\n } catch (e) {\n setDeleteError(mutationErrorMessage(e, 'Could not delete.'));\n }\n })();\n }}\n />\n </div>\n </div>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Next run {formatDateTime(schedule.nextRunAt)} · Last run{' '}\n {formatDateTime(schedule.lastRunAt)}\n {schedule.lastError ? ` · last error: ${schedule.lastError}` : ''}\n </p>\n <p className=\"mt-1 text-xs text-muted-foreground\">\n {schedule.recipientIds.length === 0 ? (\n 'No recipients'\n ) : (\n <>\n Recipients:{' '}\n {schedule.recipientIds.map((id, index) => (\n <span key={id}>\n {index > 0 && ', '}\n <PersonName id={id} />\n </span>\n ))}\n </>\n )}\n </p>\n </li>\n ))}\n </ul>\n )}\n\n <ScheduleDialog\n reportId={reportId}\n schedule={editing}\n open={dialogOpen}\n onOpenChange={setDialogOpen}\n />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareDialog.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/reports/ShareDialog.tsx"],"names":[],"mappings":"AAwCA,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,2CA4O1F"}
|