From ad869a2563d701debf61fc98f03c048c2bd1abae Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Tue, 8 Oct 2024 13:09:03 +0530 Subject: [PATCH 01/39] Adding Developer Docs for Watermark and Checker --- .../howtos/pdf-watermark-api.md | 670 +++++++++++++++++- 1 file changed, 660 insertions(+), 10 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index 17e9a87a5..cf5e7f6b3 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -1,9 +1,6 @@ --- title: PDF Watermark | How Tos | PDF Services API | Adobe PDF Services --- - - -PDF Watermark is currently accessible through the REST API only. # PDF Watermark @@ -43,16 +40,669 @@ The page ranges are specified as an array of objects whose length cannot exceed See our public API Reference for [PDF Watermark API](../../../apis/#tag/PDF-Watermark). -## Apply Watermark on specified pages +## Apply Watermark with default appearance on PDF -The sample below performs watermark operation applying watermark in foreground on specified pages of a given PDF. +The sample below performs watermark operation applying watermark in foreground on of a given PDF with default appearance. Please refer the [API usage guide](../gettingstarted.md) to understand how to use our APIs. - + + +#### Java + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_java_samples +// Run the sample: +// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfwatermark.PDFWatermark + +public class PDFWatermark { + + // Initialize the logger + private static final Logger LOGGER = LoggerFactory.getLogger(PDFWatermark.class); + + public static void main(String[] args) { + + try ( + InputStream sourceFileInputStream = Files.newInputStream(new File("src/main/resources/pdfWatermarkInput.pdf").toPath()); + InputStream watermarkFileInputStream = Files.newInputStream(new File("src/main/resources/watermark.pdf").toPath())) { + + // Initial setup, create credentials instance + Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), System.getenv("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Asset inputDocumentAsset = pdfServices.upload(sourceFileInputStream, PDFServicesMediaType.PDF.getMediaType()); + Asset watermarkDocumentAsset = pdfServices.upload(watermarkFileInputStream, PDFServicesMediaType.PDF.getMediaType()); + + // Creates a new job instance + PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset); + + // Submit the job and gets the job result + String location = pdfServices.submit(pdfWatermarkJob); + PDFServicesResponse pdfServicesResponse = pdfServices.getJobResult(location, PDFWatermarkResult.class); + + // Get content from the resulting asset(s) + Asset resultAsset = pdfServicesResponse.getResult().getAsset(); + StreamAsset streamAsset = pdfServices.getContent(resultAsset); + + // Creates an output stream and copy stream asset's content to it + Files.createDirectories(Paths.get("output/")); + OutputStream outputStream = Files.newOutputStream(new File("output/pdfWatermarkOutput.pdf").toPath()); + LOGGER.info("Saving asset at output/pdfWatermarkOutput.pdf"); + IOUtils.copy(streamAsset.getInputStream(), outputStream); + outputStream.close(); + } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { + LOGGER.error("Exception encountered while executing operation", ex); + } + } +} +``` + +#### .NET + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples +// Run the sample: +// cd PDFWatermark/ +// dotnet run PDFWatermark.csproj + +namespace PDFWatermark +{ + class Program + { + // Initialize the logger. + private static readonly ILog log = LogManager.GetLogger(typeof(Program)); + + static void Main() + { + //Configure the logging + ConfigureLogging(); + + try + { + // Initial setup, create credentials instance + ICredentials credentials = new ServicePrincipalCredentials( + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Stream sourceFileInputStream = File.OpenRead(@"pdfWatermarkInput.pdf"); + IAsset inputDocumentAsset = pdfServices.Upload(sourceFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Creates a watermark asset from source file(s) and upload + Stream watermarkFileInputStream = File.OpenRead(@"watermark.pdf"); + IAsset watermarkDocumentAsset = pdfServices.Upload(watermarkFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Submits the job and gets the job result + PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset); + String location = pdfServices.Submit(pdfWatermarkJob); + + // Get content from the resulting asset(s) + PDFServicesResponse pdfServicesResponse = + pdfServices.GetJobResult(location, typeof(PDFWatermarkResult)); + + // Creating output streams and copying stream asset's content to it + IAsset resultAsset = pdfServicesResponse.Result.Asset; + StreamAsset streamAsset = pdfServices.GetContent(resultAsset); + + // Creating output streams and copying stream asset's content to it + String outputFilePath = "/output/pdfWatermarkOutput.pdf"; + new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); + Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputFilePath); + streamAsset.Stream.CopyTo(outputStream); + outputStream.Close(); + } + catch (ServiceUsageException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (ServiceApiException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (SDKException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (IOException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (Exception ex) + { + log.Error("Exception encountered while executing operation", ex); + } + } + + static void ConfigureLogging() + { + ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); + XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); + } + } +} +``` + +#### Node JS + +```javascript +// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample +// Run the sample: +// node src/electronicseal/electronic-seal.js + +const { + ServicePrincipalCredentials, + PDFServices, + MimeType, + PDFWatermarkJob, + PDFWatermarkResult, + SDKError, + ServiceUsageError, + ServiceApiError, +} = require("@dcloud/pdfservices-node-sdk"); +const fs = require("fs"); + +(async () => { + let sourceFileReadStream; + let watermarkFileReadStream; + try { + // Initial setup, create credentials instance + const credentials = new ServicePrincipalCredentials({ + clientId: process.env.PDF_SERVICES_CLIENT_ID, + clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET + }); + + // Creates a PDF Services instance + const pdfServices = new PDFServices({credentials}); + + // Creates an asset(s) from source file(s) and upload + sourceFileReadStream = fs.createReadStream("resources/watermarkPDFInput.pdf"); + watermarkFileReadStream = fs.createReadStream("resources/watermark.pdf"); + const [inputAsset, watermarkAsset] = await pdfServices.uploadAssets({ + streamAssets: [{ + readStream: sourceFileReadStream, + mimeType: MimeType.PDF + }, { + readStream: watermarkFileReadStream, + mimeType: MimeType.PDF + }] + }); + + // Creates a new job instance + const job = new PDFWatermarkJob({ + inputAsset: inputAsset, + watermarkAsset: watermarkAsset, + }); + + // Submit the job and get the job result + const pollingURL = await pdfServices.submit({job}); + const pdfServicesResponse = await pdfServices.getJobResult({ + pollingURL, + resultType: PDFWatermarkResult + }); + + // Get content from the resulting asset(s) + const resultAsset = pdfServicesResponse.result.asset; + const streamAsset = await pdfServices.getContent({asset: resultAsset}); + + // Creates a write stream and copy stream asset's content to it + const outputFilePath = "./pdfWatermarkOutput.pdf"; + console.log(`Saving asset at ${outputFilePath}`); + + const writeStream = fs.createWriteStream(outputFilePath); + streamAsset.readStream.pipe(writeStream); + } catch (err) { + if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { + console.log("Exception encountered while executing operation", err); + } else { + console.log("Exception encountered while executing operation", err); + } + } finally { + sourceFileReadStream?.destroy(); + watermarkFileReadStream?.destroy(); + } +})(); +``` + +#### Python + +```javascript +# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples +# Run the sample: +# python src/watermarkpdf/watermark_pdf.py + +# Initialize the logger +logging.basicConfig(level=logging.INFO) + +class PDFWatermark: + def __init__(self): + try: + pdf_file = open("src/resources/watermarkPDFInput.pdf", 'rb') + input_stream = pdf_file.read() + pdf_file.close() + + pdf_file = open("src/resources/watermark.pdf", 'rb') + watermark_asset = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) + watermark_asset = pdf_services.upload(input_stream=watermark_asset, mime_type=PDFServicesMediaType.PDF) + + # Creates a new job instance + watermark_job = PDFWatermarkJob(input_asset=input_asset, watermark_asset=watermark_asset) + + # Submit the job and gets the job result + location = pdf_services.submit(watermark_job) + pdf_services_response = pdf_services.get_job_result(location, WatermarkResult) + + # Get content from the resulting asset(s) + watermark_result: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(watermark_result) + + # Creates an output stream and copy stream asset's content to it + + output_file_path = 'output/pdfWatermark.pdf' + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') + +if __name__ == "__main__": + PDFWatermark() +``` + +#### REST API + +```javascript +curl --location --request POST 'https://pdf-services.adobe.io/operation/addwatermark' \ +--header 'x-api-key: {{Placeholder for client_id}}' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer {{Placeholder for token}}' \ +--data-raw '{ + "inputDocumentAssetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f68", + "watermarkDocumentAssetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f1878678e68" +}' +``` + +## Apply Watermark with customized appearance on PDF + +The sample below performs watermark operation applying watermark with customized appearance on a given PDF. + +Please refer to the [API usage guide](../api-usage.md) to understand how to use our APIs. + + + +#### Java + +```javascript +// Get the samples from https://github.com/adobe/pdfservices-java-sdk-samples/tree/beta +// Run the sample: +// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.electronicseal.ElectronicSealWithAppearanceOptions + +package com.adobe.pdfservices.operation.samples.pdfwatermark; + +public class PDFWatermarkWithOptions { + + // Initialize the logger + private static final Logger LOGGER = LoggerFactory.getLogger(PDFWatermarkWithOptions.class); + + public static void main(String[] args) { + + try ( + InputStream sourceFileInputStream = Files.newInputStream(new File("src/main/resources/pdfWatermarkInput.pdf").toPath()); + InputStream watermarkFileInputStream = Files.newInputStream(new File("src/main/resources/watermark.pdf").toPath())) { + + // Initial setup, create credentials instance + Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), System.getenv("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Asset inputDocumentAsset = pdfServices.upload(sourceFileInputStream, PDFServicesMediaType.PDF.getMediaType()); + Asset watermarkDocumentAsset = pdfServices.upload(watermarkFileInputStream, PDFServicesMediaType.PDF.getMediaType()); + + // Creates a new job instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Asset inputDocumentAsset = pdfServices.upload(inputStream1, PDFServicesMediaType.PDF.getMediaType()); + Asset watermarkDocumentAsset = pdfServices.upload(inputStream2, PDFServicesMediaType.PDF.getMediaType()); + + // Watermark pages of the document (as specified by PageRanges). + PageRanges pageRangeForPDFWatermark = getPageRangeForPDFWatermark(); + + // Creates PDF Watermark appearance option + WatermarkAppearance watermarkAppearance = new WatermarkAppearance(); + watermarkAppearance.setOpacity(50); + + // Create parameters for the job + PDFWatermarkParams pdfWatermarkParams = PDFWatermarkParams.pdfWatermarkParamsBuilder() + .withPageRanges(pageRangeForPDFWatermark) + .withWatermarkAppearance(watermarkAppearance) + .build(); + + // Creates a new job instance + PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset) + .setParams(pdfWatermarkParams); + + + // Submit the job and gets the job result + String location = pdfServices.submit(pdfWatermarkJob); + PDFServicesResponse pdfServicesResponse = pdfServices.getJobResult(location, PDFWatermarkResult.class); + + // Get content from the resulting asset(s) + Asset resultAsset = pdfServicesResponse.getResult().getAsset(); + StreamAsset streamAsset = pdfServices.getContent(resultAsset); + + // Creates an output stream and copy stream asset's content to it + Files.createDirectories(Paths.get("output/")); + OutputStream outputStream = Files.newOutputStream(new File("output/pdfWatermarkWithOptionsOutput.pdf").toPath()); + LOGGER.info("Saving asset at output/pdfWatermarkWithOptionsOutput.pdf"); + IOUtils.copy(streamAsset.getInputStream(), outputStream); + outputStream.close(); + } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { + LOGGER.error("Exception encountered while executing operation", ex); + } + } +} +``` + +#### .NET + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples +// Run the sample: +// cd PDFWatermark/ +// dotnet run PDFWatermark.csproj + +namespace PDFWatermark +{ + class Program + { + // Initialize the logger. + private static readonly ILog log = LogManager.GetLogger(typeof(Program)); + + static void Main() + { + //Configure the logging + ConfigureLogging(); + + try + { + // Initial setup, create credentials instance + ICredentials credentials = new ServicePrincipalCredentials( + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Stream sourceFileInputStream = File.OpenRead(@"pdfWatermarkInput.pdf"); + IAsset inputDocumentAsset = pdfServices.Upload(sourceFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Creates a watermark asset from source file(s) and upload + Stream watermarkFileInputStream = File.OpenRead(@"watermark.pdf"); + IAsset watermarkDocumentAsset = pdfServices.Upload(watermarkFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Watermark pages of the document + PageRanges pageRangeForPDFWatermark = new PageRanges(); + + // Add page 1 + pageRangeForPDFWatermark.AddSinglePage(1); + + // Add pages 3 to 4 + pageRangeForPDFWatermark.AddRange(3, 4); + + // Creates PDF Watermark appearance option + WatermarkAppearance watermarkAppearance = new WatermarkAppearance(); + watermarkAppearance.SetOpacity(50); + + // Create parameters for the job + PDFWatermarkParams pdfWatermarkParams = PDFWatermarkParams.PDFWatermarkParamsBuilder() + .WithPageRanges(pageRangesForPDFWatermark) + .WithWatermarkAppearance(watermarkAppearance).Build(); + + // Submits the job and gets the job result + PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset).SetParams(pdfWatermarkParams); + String location = pdfServices.Submit(pdfWatermarkJob); + + // Get content from the resulting asset(s) + PDFServicesResponse pdfServicesResponse = + pdfServices.GetJobResult(location, typeof(PDFWatermarkResult)); + + // Creating output streams and copying stream asset's content to it + IAsset resultAsset = pdfServicesResponse.Result.Asset; + StreamAsset streamAsset = pdfServices.GetContent(resultAsset); + + // Creating output streams and copying stream asset's content to it + String outputFilePath = "/output/pdfWatermarkWithOptionsOutput.pdf"; + new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); + Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputFilePath); + streamAsset.Stream.CopyTo(outputStream); + outputStream.Close(); + } + catch (ServiceUsageException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (ServiceApiException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (SDKException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (IOException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (Exception ex) + { + log.Error("Exception encountered while executing operation", ex); + } + } + + static void ConfigureLogging() + { + ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); + XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); + } + } +} +``` + +#### Node JS + +```javascript +// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample +// Run the sample: +// node src/electronicseal/electronic-seal.js + +const { + ServicePrincipalCredentials, + PDFServices, + MimeType, + PDFWatermarkJob, + PDFWatermarkResult, + SDKError, + ServiceUsageError, + ServiceApiError, +} = require("@dcloud/pdfservices-node-sdk"); +const fs = require("fs"); + +(async () => { + let sourceFileReadStream; + let watermarkFileReadStream; + try { + // Initial setup, create credentials instance + const credentials = new ServicePrincipalCredentials({ + clientId: process.env.PDF_SERVICES_CLIENT_ID, + clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET + }); + + // Creates a PDF Services instance + const pdfServices = new PDFServices({credentials}); + + // Creates an asset(s) from source file(s) and upload + sourceFileReadStream = fs.createReadStream("resources/watermarkPDFInput.pdf"); + watermarkFileReadStream = fs.createReadStream("resources/watermark.pdf"); + + const [inputAsset, watermarkAsset] = await pdfServices.uploadAssets({ + streamAssets: [{ + readStream: sourceFileReadStream, + mimeType: MimeType.PDF + }, { + readStream: waterMarkReadStream, + mimeType: MimeType.PDF + }] + }); + + const pageRangesForWatermark = new PageRanges(); + + // Add page 1. + pageRangesForWatermark.addSinglePage(1); + + // Add pages 3 to 4. + pageRangesForWatermark.addRange(3, 4); + + const watermarkAppearance = new WatermarkAppearance({ + appearOnForeground: false, + opacity: 50, + }); + + // Create parameters for the job + const pdfWatermarkParams = new PDFWatermarkParams({ + watermarkAppearance: watermarkAppearance, + pageRanges: pageRangesForWatermark + }) + + // Creates a new job instance + const job = new PDFWatermarkJob({ + inputAsset: inputAsset, + watermarkAsset: watermarkAsset, + params: pdfWatermarkParams + }); + + // Submit the job and get the job result + const pollingURL = await pdfServices.submit({job}); + const pdfServicesResponse = await pdfServices.getJobResult({ + pollingURL, + resultType: PDFWatermarkResult + }); + + // Get content from the resulting asset(s) + const resultAsset = pdfServicesResponse.result.asset; + const streamAsset = await pdfServices.getContent({asset: resultAsset}); + + // Creates a write stream and copy stream asset's content to it + const outputFilePath = "./pdfWatermarkOutput.pdf"; + console.log(`Saving asset at ${outputFilePath}`); + + const writeStream = fs.createWriteStream(outputFilePath); + streamAsset.readStream.pipe(writeStream); + } catch (err) { + if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { + console.log("Exception encountered while executing operation", err); + } else { + console.log("Exception encountered while executing operation", err); + } + } finally { + sourceFileReadStream?.destroy(); + watermarkFileReadStream?.destroy(); + } +})(); +``` + +#### Python + +```javascript +# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples +# Run the sample: +# python src/watermarkpdf/watermark_pdf.py + +# Initialize the logger +logging.basicConfig(level=logging.INFO) + +class PDFWatermarkWithOptions: + def __init__(self): + try: + pdf_file = open("src/resources/watermarkPDFInput.pdf", 'rb') + input_stream = pdf_file.read() + pdf_file.close() + + pdf_file = open("src/resources/watermark.pdf", 'rb') + watermark_asset = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) + watermark_asset = pdf_services.upload(input_stream=watermark_asset, mime_type=PDFServicesMediaType.PDF) + + watermark_appearance = WatermarkAppearance(appear_on_foreground=False, opacity=80) + + page_ranges = PageRanges() + page_ranges.add_range(1, 2) + + # Create parameters for the job + watermark_params = WatermarkParams(page_ranges=page_ranges, watermark_appearance=watermark_appearance) + + # Creates a new job instance + watermark_job = PDFWatermarkJob(input_asset=input_asset, watermark_asset=watermark_asset, + watermark_params=watermark_params) + + # Submit the job and gets the job result + location = pdf_services.submit(watermark_job) + pdf_services_response = pdf_services.get_job_result(location, WatermarkResult) + + # Get content from the resulting asset(s) + watermark_result: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(watermark_result) + + # Creates an output stream and copy stream asset's content to it + output_file_path = 'output/pdfWatermark.pdf' + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') + +if __name__ == "__main__": + PDFWatermarkWithOptions() +``` + #### REST API +```javascript + ```javascript curl --location --request POST 'https://pdf-services.adobe.io/operation/addwatermark' \ --header 'x-api-key: {{Placeholder for client_id}}' \ @@ -63,12 +713,12 @@ curl --location --request POST 'https://pdf-services.adobe.io/operation/addwater "watermarkDocumentAssetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f1878678e68", "pageRanges": [ { - "start": 2, - "end": 5 + "start": 2, + "end": 5 }, { - "start": 8, - "end": 10 + "start": 8, + "end": 10 } ], "appearance": { From 78f9d936b2abfe027b9e441b95840f63ca722b6c Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Tue, 8 Oct 2024 16:20:41 +0530 Subject: [PATCH 02/39] update --- .../howtos/pdf-accessibility-checker-api.md | 591 +++++++++++++++++- .../howtos/pdf-watermark-api.md | 30 +- 2 files changed, 604 insertions(+), 17 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index 44f64c7a5..3babdca9b 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -28,11 +28,600 @@ See our public API Reference for the [PDF Accessibility Checker API](../../../ap ## Check accessibility for specified pages +The sample below performs an accessibility check operation on a given PDF. + +Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. + + + +#### Java + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_java_samples +// Run the sample: +// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfaccessibilitychecker.PDFAccessibilityChecker +public class PDFAccessibilityChecker { + + private static final Logger LOGGER = LoggerFactory.getLogger(PDFAccessibilityChecker.class); + + public static void main(String[] args) { + + try ( + InputStream inputStream = Files + .newInputStream(new File("src/main/resources/accessibilityCheckerInput.pdf") + .toPath())) { + // Initial setup, create credentials instance + Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), + System.getenv("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Asset asset = pdfServices.upload(inputStream, PDFServicesMediaType.PDF.getMediaType()); + + // Creates a new job instance + PDFAccessibilityCheckerJob PDFAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(asset); + + // Submit the job and gets the job result + String location = pdfServices.submit(PDFAccessibilityCheckerJob); + PDFServicesResponse pdfServicesResponse = pdfServices + .getJobResult(location, PDFAccessibilityCheckerResult.class); + + // Get content from the resulting asset(s) + Asset resultAsset = pdfServicesResponse.getResult().getAsset(); + StreamAsset streamAsset = pdfServices.getContent(resultAsset); + + Asset report = pdfServicesResponse.getResult().getReport(); + StreamAsset streamAssetReport = pdfServices.getContent(report); + + String outputFilePath = "/output/pdfAccessibilityCheckerOutput.pdf"; + String outputFilePathReport = "/output/pdfAccessibilityCheckerReport.json"; + + LOGGER.info(String.format("Saving asset at %s", outputFilePath)); + LOGGER.info(String.format("Saving report at %s", outputFilePathReport)); + + new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); + new FileInfo(Directory.GetCurrentDirectory() + outputFilePathReport).Directory.Create(); + + OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePath).toPath()); + OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePathReport).toPath()); + + IOUtils.copy(streamAsset.getInputStream(), outputStream); + IOUtils.copy(streamAssetReport.getInputStream(), outputStreamReport); + + outputStream.close(); + outputStreamReport.close(); + } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { + System.out.println("Exception encountered while executing operation: "+ ex); + } + } +} +``` + +#### .NET + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples +// Run the sample: +// cd PDFAccessibilityChecker/ +// dotnet run PDFAccessibilityChecker.csproj +namespace PDFAccessibilityChecker +{ + public class Program { + private static readonly ILog log = LogManager.GetLogger(typeof (Program)); + + static void Main() { + //Configure the logging + ConfigureLogging(); + try { + // Initial setup, create credentials instance + ICredentials credentials = new ServicePrincipalCredentials( + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + using Stream inputStream = File.OpenRead(@"checkerPDFInput.pdf"); + IAsset inputDocumentAsset = pdfServices.Upload(inputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Create the PDF Accessibility Checker job instance + PDFAccessibilityCheckerJob pdfAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(inputDocumentAsset); + + // Submits the job and gets the job result + String location = pdfServices.Submit(pdfAccessibilityCheckerJob); + + // Get content from the resulting asset(s) + PDFServicesResponse pdfServicesResponse = + pdfServices.GetJobResult (location, typeof (PDFAccessibilityCheckerResult)); + + IAsset outputAsset = pdfServicesResponse.Result.Asset; + StreamAsset streamAsset = pdfServices.GetContent(outputAsset); + + IAsset outputReportAsset = pdfServicesResponse.Result.Report; + StreamAsset streamReportAsset = pdfServices.GetContent(outputReportAsset); + + // Creating output streams and copying stream asset's content to it + String outputPdfPath = '/output/accessibilityChecker.pdf'; + new FileInfo(Directory.GetCurrentDirectory() + outputPdfPath).Directory.Create(); + Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputPdfPath); + streamAsset.Stream.CopyTo(outputStream); + outputStream.Close(); + + String outputJSONPath = '/output/accessibilityChecker.json'; + new FileInfo(Directory.GetCurrentDirectory() + outputJSONPath).Directory.Create(); + Stream outputJSONStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputJSONPath); + streamReportAsset.Stream.CopyTo(outputJSONStream); + outputStream.Close(); + } catch (ServiceUsageException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (ServiceApiException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (SDKException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (IOException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (Exception ex) { + log.Error("Exception encountered while executing operation", ex); + } + } + + static void ConfigureLogging() { + ILoggerRepository + logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); + XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); + } + } +} +``` + +#### Node JS + +```javascript +// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample +// Run the sample: +// node src/pdfaccessibilitychecker/pdf-accessibility-checker.js + +const { + ServicePrincipalCredentials, + PDFServices, + MimeType, + SDKError, + ServiceUsageError, + ServiceApiError, + PDFAccessibilityCheckerJob, + PDFAccessibilityCheckerResult +} = require("@dcloud/pdfservices-node-sdk"); +const fs = require("fs"); + +(async () => { + let readStream; + try { + // Initial setup, create credentials instance + const credentials = new ServicePrincipalCredentials({ + clientId: process.env.PDF_SERVICES_CLIENT_ID, + clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET + }); + + // Creates a PDF Services instance + const pdfServices = new PDFServices({credentials}); + + // Creates an asset(s) from source file(s) and upload + readStream = fs.createReadStream("resources/accessibilityCheckerInput.pdf"); + const inputAsset = await pdfServices.upload({ + readStream, + mimeType: MimeType.PDF + }); + + // Create a new job instance + const job = new PDFAccessibilityCheckerJob({inputAsset}); + + // Submit the job and get the job result + const pollingURL = await pdfServices.submit({job}); + const pdfServicesResponse = await pdfServices.getJobResult({ + pollingURL, + resultType: PDFAccessibilityCheckerResult + }); + + // Get content from the resulting asset(s) + const resultAsset = pdfServicesResponse.result.asset; + const streamAsset = await pdfServices.getContent({asset: resultAsset}); + + const resultAssetReport = pdfServicesResponse.result.report; + const streamAssetReport = await pdfServices.getContent({asset: resultAssetReport}); + + // Creates an output stream and copy result asset's content to it + const outputFilePath = "output/PDFAccessibilityChecker.pdf" + const outputFilePathReport = "output/PDFAccessibilityChecker.json" + console.log(`Saving asset at ${outputFilePath}`); + console.log(`Saving asset at ${outputFilePathReport}`); + + let writeStream = fs.createWriteStream(outputFilePath); + streamAsset.readStream.pipe(writeStream); + writeStream = fs.createWriteStream(outputFilePathReport); + streamAssetReport.readStream.pipe(writeStream); + } catch (err) { + if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { + console.log("Exception encountered while executing operation", err); + } else { + console.log("Exception encountered while executing operation", err); + } + } finally { + readStream?.destroy(); + } +})(); +``` + +#### Python + +```javascript +# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples +# Run the sample: +# python src/resources/CheckerPDFInput.pdf + +class PDFAccessibilityChecker: + def __init__(self): + try: + pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') + input_stream = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) + + # Creates a new job instance + pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset) + + # Submit the job and gets the job result + location = pdf_services.submit(pdf_accessibility_checker_job) + pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) + + # Get content from the resulting asset(s) + result_asset: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(result_asset) + + report_asset: CloudAsset = pdf_services_response.get_result().get_report() + stream_report: StreamAsset = pdf_services.get_content(report_asset) + + output_file_path = 'output/accessibilitychecker.pdf' + + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + output_file_path_json = 'output/accessibilitychecker.json' + with open(output_file_path_json, "wb") as file: + file.write(stream_report.get_input_stream()) + + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') + + + if __name__ == "__main__": + PDFAccessibilityChecker() +``` + +#### REST API + +```javascript +curl --location --request POST 'https://pdf-services.adobe.io/operation/accessibilitychecker' \ +--header 'x-api-key: {{Placeholder for client_id}}' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer {{Placeholder for token}}' \ +--data-raw '{ + "assetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f1878678e68" +}' +``` + +## Check PDF accessibility for specified pages + The sample below performs an accessibility check operation for specified pages of a given PDF. Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. - + + +#### Java + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_java_samples +// Run the sample: +// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfaccessibilitychecker.PDFAccessibilityCheckerWithOptions +public class PDFAccessibilityCheckerWithOptions { + + private static final Logger LOGGER = LoggerFactory.getLogger(PDFAccessibilityCheckerWithOptions.class); + + public static void main(String[] args) { + + try ( + InputStream inputStream = Files + .newInputStream(new File("src/main/resources/accessibilityCheckerInput.pdf") + .toPath())) { + // Initial setup, create credentials instance + Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), + System.getenv("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Asset asset = pdfServices.upload(inputStream, PDFServicesMediaType.PDF.getMediaType()); + + // Creates parameters for the job + PDFAccessibilityCheckerParams pdfAccessibilityCheckerParams = PDFAccessibilityCheckerParams + .pdfAccessibilityCheckerParamsBuilder().withPageStart(1).withPageEnd(2).build(); + + // Creates a new job instance + PDFAccessibilityCheckerJob pdfAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(asset) + .setParams(pdfAccessibilityCheckerParams); + + // Submit the job and gets the job result + String location = pdfServices.submit(PDFAccessibilityCheckerJob); + PDFServicesResponse pdfServicesResponse = pdfServices + .getJobResult(location, PDFAccessibilityCheckerResult.class); + + // Get content from the resulting asset(s) + Asset resultAsset = pdfServicesResponse.getResult().getAsset(); + StreamAsset streamAsset = pdfServices.getContent(resultAsset); + + Asset report = pdfServicesResponse.getResult().getReport(); + StreamAsset streamAssetReport = pdfServices.getContent(report); + + String outputFilePath = "/output/pdfAccessibilityCheckerOutput.pdf"; + String outputFilePathReport = "/output/pdfAccessibilityCheckerReport.json"; + + LOGGER.info(String.format("Saving asset at %s", outputFilePath)); + LOGGER.info(String.format("Saving report at %s", outputFilePathReport)); + + new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); + new FileInfo(Directory.GetCurrentDirectory() + outputFilePathReport).Directory.Create(); + + OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePath).toPath()); + OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePathReport).toPath()); + + IOUtils.copy(streamAsset.getInputStream(), outputStream); + IOUtils.copy(streamAssetReport.getInputStream(), outputStreamReport); + + outputStream.close(); + outputStreamReport.close(); + } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { + System.out.println("Exception encountered while executing operation: "+ ex); + } + } +} +``` + +#### .NET + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples +// Run the sample: +// cd PDFAccessibilityCheckerWithOptions/ +// dotnet run PDFAccessibilityCheckerWithOptions.csproj +namespace PDFAccessibilityCheckerWithOptions +{ + public class Program { + private static readonly ILog log = LogManager.GetLogger(typeof (Program)); + + static void Main() { + //Configure the logging + ConfigureLogging(); + try { + // Initial setup, create credentials instance + ICredentials credentials = new ServicePrincipalCredentials( + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + using Stream inputStream = File.OpenRead(@"checkerPDFInput.pdf"); + IAsset inputDocumentAsset = pdfServices.Upload(inputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Set up PDF Accessibility Checker parameters + PDFAccessibilityCheckerParams pdfAccessibilityCheckerParams = PDFAccessibilityCheckerParams + .PDFAccessibilityCheckerParamsBuilder() + .WithPageStart(1) + .WithPageEnd(3) + .Build(); + + // Create the PDF Accessibility Checker job instance + PDFAccessibilityCheckerJob pdfAccessibilityCheckerJob = + new PDFAccessibilityCheckerJob(inputDocumentAsset).SetParams(pdfAccessibilityCheckerParams); + + // Submits the job and gets the job result + String location = pdfServices.Submit(pdfAccessibilityCheckerJob); + PDFServicesResponse pdfServicesResponse = + pdfServices.GetJobResult (location, typeof (PDFAccessibilityCheckerResult)); + + // Get content from the resulting asset(s) + IAsset outputAsset = pdfServicesResponse.Result.Asset; + StreamAsset streamAsset = pdfServices.GetContent(outputAsset); + + IAsset outputReportAsset = pdfServicesResponse.Result.Report; + StreamAsset streamReportAsset = pdfServices.GetContent(outputReportAsset); + + // Creating output streams and copying stream asset's content to it + String outputPdfPath = '/output/accessibilityChecker.pdf'; + new FileInfo(Directory.GetCurrentDirectory() + outputPdfPath).Directory.Create(); + Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputPdfPath); + streamAsset.Stream.CopyTo(outputStream); + outputStream.Close(); + + String outputJSONPath = '/output/accessibilityChecker.json'; + new FileInfo(Directory.GetCurrentDirectory() + outputJSONPath).Directory.Create(); + Stream outputJSONStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputJSONPath); + streamReportAsset.Stream.CopyTo(outputJSONStream); + outputStream.Close(); + } catch (ServiceUsageException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (ServiceApiException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (SDKException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (IOException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (Exception ex) { + log.Error("Exception encountered while executing operation", ex); + } + } + + static void ConfigureLogging() { + ILoggerRepository + logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); + XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); + } + } +} +``` + +#### Node JS + +```javascript +// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample +// Run the sample: +// node src/pdfaccessibilitychecker/pdf-accessibility-checker-with-options.js +const { + ServicePrincipalCredentials, + PDFServices, + MimeType, + SDKError, + ServiceUsageError, + ServiceApiError, + PDFAccessibilityCheckerJob, + PDFAccessibilityCheckerResult +} = require("@dcloud/pdfservices-node-sdk"); +const fs = require("fs"); + +(async () => { + let readStream; + try { + // Initial setup, create credentials instance + const credentials = new ServicePrincipalCredentials({ + clientId: process.env.PDF_SERVICES_CLIENT_ID, + clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET + }); + + // Creates a PDF Services instance + const pdfServices = new PDFServices({credentials}); + + // Creates an asset(s) from source file(s) and upload + readStream = fs.createReadStream("resources/accessibilityCheckerInput.pdf"); + const inputAsset = await pdfServices.upload({ + readStream, + mimeType: MimeType.PDF + }); + + // Create parameters for the job + const params = new PDFAccessibilityCheckerParams({pageStart:1, pageEnd:3}); + + // Create a new job instance + const job = new PDFAccessibilityCheckerJob({inputAsset, params}); + + // Submit the job and get the job result + const pollingURL = await pdfServices.submit({job}); + const pdfServicesResponse = await pdfServices.getJobResult({ + pollingURL, + resultType: PDFAccessibilityCheckerResult + }); + + // Get content from the resulting asset(s) + const resultAsset = pdfServicesResponse.result.asset; + const streamAsset = await pdfServices.getContent({asset: resultAsset}); + + const resultAssetReport = pdfServicesResponse.result.report; + const streamAssetReport = await pdfServices.getContent({asset: resultAssetReport}); + + // Creates an output stream and copy result asset's content to it + const outputFilePath = "output/PDFAccessibilityChecker.pdf" + const outputFilePathReport = "output/PDFAccessibilityChecker.json" + console.log(`Saving asset at ${outputFilePath}`); + console.log(`Saving asset at ${outputFilePathReport}`); + + let writeStream = fs.createWriteStream(outputFilePath); + streamAsset.readStream.pipe(writeStream); + writeStream = fs.createWriteStream(outputFilePathReport); + streamAssetReport.readStream.pipe(writeStream); + } catch (err) { + if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { + console.log("Exception encountered while executing operation", err); + } else { + console.log("Exception encountered while executing operation", err); + } + } finally { + readStream?.destroy(); + } +})(); +``` + +#### Python + +```javascript +# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples +# Run the sample: +# python src/PDFAccessibilityChecker/pdf_accessibility_checker.py + +class PDFAccessibilityChecker: + def __init__(self): + try: + pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') + input_stream = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) + + # Create parameters for the job + pdf_accessibility_checker_params = PDFAccessibilityCheckerParams(page_start=1, page_end=2) + + # Creates a new job instance + pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset, + pdf_accessibility_checker_params=pdf_accessibility_checker_params) + + # Submit the job and gets the job result + location = pdf_services.submit(pdf_accessibility_checker_job) + pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) + + # Get content from the resulting asset(s) + result_asset: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(result_asset) + + report_asset: CloudAsset = pdf_services_response.get_result().get_report() + stream_report: StreamAsset = pdf_services.get_content(report_asset) + + output_file_path = 'output/accessibilitychecker.pdf' + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + output_file_path_json = 'output/accessibilitychecker.json' + with open(output_file_path_json, "wb") as file: + file.write(stream_report.get_input_stream()) + + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') + + + if __name__ == "__main__": + PDFAccessibilityChecker() +``` #### REST API diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index cf5e7f6b3..035e905f8 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -193,7 +193,7 @@ namespace PDFWatermark ```javascript // Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample // Run the sample: -// node src/electronicseal/electronic-seal.js +// node src/pdfwatermark/pdf-watermark.js const { ServicePrincipalCredentials, @@ -353,7 +353,7 @@ Please refer to the [API usage guide](../api-usage.md) to understand how to use ```javascript // Get the samples from https://github.com/adobe/pdfservices-java-sdk-samples/tree/beta // Run the sample: -// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.electronicseal.ElectronicSealWithAppearanceOptions +// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfwatermark.PDFWatermarkWithOptions package com.adobe.pdfservices.operation.samples.pdfwatermark; @@ -380,14 +380,14 @@ public class PDFWatermarkWithOptions { // Creates a new job instance PDFServices pdfServices = new PDFServices(credentials); - - // Creates an asset(s) from source file(s) and upload - Asset inputDocumentAsset = pdfServices.upload(inputStream1, PDFServicesMediaType.PDF.getMediaType()); - Asset watermarkDocumentAsset = pdfServices.upload(inputStream2, PDFServicesMediaType.PDF.getMediaType()); - + // Watermark pages of the document (as specified by PageRanges). - PageRanges pageRangeForPDFWatermark = getPageRangeForPDFWatermark(); - + PageRanges pageRangeForPDFWatermark = new PageRanges(); + // Add page 1 + pageRangeForPDFWatermark.addSinglePage(1); + // Add pages 3 to 4 + pageRangeForPDFWatermark.addRange(3, 4); + // Creates PDF Watermark appearance option WatermarkAppearance watermarkAppearance = new WatermarkAppearance(); watermarkAppearance.setOpacity(50); @@ -535,7 +535,7 @@ namespace PDFWatermark ```javascript // Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample // Run the sample: -// node src/electronicseal/electronic-seal.js +// node src/pdfwatermark/pdf-watermark-with-options.js const { ServicePrincipalCredentials, @@ -637,12 +637,12 @@ const fs = require("fs"); ```javascript # Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples # Run the sample: -# python src/watermarkpdf/watermark_pdf.py +# python src/watermarkpdf/watermark_pdf_with_params.py # Initialize the logger logging.basicConfig(level=logging.INFO) -class PDFWatermarkWithOptions: +class PDFWatermark: def __init__(self): try: pdf_file = open("src/resources/watermarkPDFInput.pdf", 'rb') @@ -694,15 +694,13 @@ class PDFWatermarkWithOptions: except (ServiceApiException, ServiceUsageException, SdkException) as e: logging.exception(f'Exception encountered while executing operation: {e}') -if __name__ == "__main__": - PDFWatermarkWithOptions() + if __name__ == "__main__": + PDFWatermark:() ``` #### REST API -```javascript - ```javascript curl --location --request POST 'https://pdf-services.adobe.io/operation/addwatermark' \ --header 'x-api-key: {{Placeholder for client_id}}' \ From bcad1f3f6f1d842f1ef8de609111a604d795cbb9 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Tue, 8 Oct 2024 16:28:55 +0530 Subject: [PATCH 03/39] update --- .../howtos/pdf-accessibility-checker-api.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index 3babdca9b..aa38d8ed8 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -1,10 +1,6 @@ --- title: PDF Accessibility Checker | How Tos | PDF Services API | Adobe PDF Services --- - - -PDF Accessibility Checker is currently accessible through the REST API only. - # PDF Accessibility Checker The Accessibility Checker API verifies if PDF files meet the machine-verifiable requirements of PDF/UA and WCAG 2.0. It generates a report summarizing the findings of the accessibility checks. Additional human remediation may be required to ensure the reading order of elements is correct and that alternative text tags properly convey the meaning of images. The report contains links to documentation that assists in manually fixing problems using Adobe Acrobat Pro. @@ -259,7 +255,7 @@ const fs = require("fs"); ```javascript # Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples # Run the sample: -# python src/resources/CheckerPDFInput.pdf +# python src/PDFAccessibilityChecker/pdf_accessibility_checker.py class PDFAccessibilityChecker: def __init__(self): From f644178175d26a7711b918d81f543f1b128d9e2e Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Tue, 8 Oct 2024 16:32:56 +0530 Subject: [PATCH 04/39] fix linters --- .../howtos/pdf-accessibility-checker-api.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index aa38d8ed8..422bf3716 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -18,6 +18,7 @@ This parameter specifies the starting page for the accessibility check. If "page ### Page end (_pageEnd_) This parameter specifies the ending page for the accessibility check. If "pageEnd" is not provided, the last page is considered the default end page. It should be greater than or equal to 1. + ## REST API See our public API Reference for the [PDF Accessibility Checker API](../../../apis/#tag/PDF-Accessibility-Checker). @@ -28,7 +29,7 @@ The sample below performs an accessibility check operation on a given PDF. Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. - + #### Java @@ -324,7 +325,7 @@ The sample below performs an accessibility check operation for specified pages o Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. - + #### Java @@ -631,4 +632,4 @@ curl --location --request POST 'https://pdf-services.adobe.io/operation/accessib "pageStart":1, "pageEnd":5 }' -``` \ No newline at end of file +``` From 41db7c90a6fac4fdd9d9a836408c71808fef41e5 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Tue, 8 Oct 2024 16:44:28 +0530 Subject: [PATCH 05/39] fix linters --- .../pdf-services-api/howtos/pdf-watermark-api.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index 035e905f8..2c9ec3a30 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -28,13 +28,14 @@ The output generated will retain the content along with the watermark from the f Specifies the number of pages on which the watermark will be applied. Page numbers are indexed from 1 to N. If a page range is not specified, the watermark will be applied on all pages of the source document. The page ranges are specified as an array of objects whose length cannot exceed beyond 20. Each object has the following properties: -* **Start Page** (*start*) : The first page number of the range. Default value is 1. -* **End Page** (*end*) : The last page number of the range. Default value is the last page of the document. + +* **Start Page** (_start_) : The first page number of the range. Default value is 1. +* **End Page** (_end_) : The last page number of the range. Default value is the last page of the document. ### Appearance (_appearance_) -* **Foreground** (*appearOnForeground*) : Specifies the placement of the watermark on the page. It can appear in the foreground or background. The default value is true, placing the watermark in the foreground. -* **Opacity** (*opacity*) : Specifies the opacity of the watermark, represented as an integer percentage value ranging from 0 to 100. The default value is 100. +* **Foreground** (_appearOnForeground_) : Specifies the placement of the watermark on the page. It can appear in the foreground or background. The default value is true, placing the watermark in the foreground. +* **Opacity** (_opacity_) : Specifies the opacity of the watermark, represented as an integer percentage value ranging from 0 to 100. The default value is 100. ## REST API @@ -46,7 +47,7 @@ The sample below performs watermark operation applying watermark in foreground o Please refer the [API usage guide](../gettingstarted.md) to understand how to use our APIs. - + #### Java @@ -346,7 +347,7 @@ The sample below performs watermark operation applying watermark with customized Please refer to the [API usage guide](../api-usage.md) to understand how to use our APIs. - + #### Java @@ -698,7 +699,6 @@ class PDFWatermark: PDFWatermark:() ``` - #### REST API ```javascript From 633a83932e981ec5f09340ca11bb3791c724f361 Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Thu, 22 Aug 2024 12:36:43 +0530 Subject: [PATCH 06/39] documentation update and postman collection --- src/pages/apis/index.md | 2 +- .../document-generation-api/stylingformattingtags.md | 6 ++++++ src/pages/overview/document-generation-api/templatetags.md | 4 ++++ src/pages/resources/openapi.json | 2 +- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/pages/apis/index.md b/src/pages/apis/index.md index 1e5df79d7..b0994e5b4 100644 --- a/src/pages/apis/index.md +++ b/src/pages/apis/index.md @@ -1,5 +1,5 @@ --- title: Adobe PDF Services Open API spec description: The OpenAPI spec for Adobe PDF Services API endpoints, parameters, and responses. -openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/main/src/pages/resources/openapi.json +openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/docgen_documentation_update/src/pages/resources/openapi.json --- diff --git a/src/pages/overview/document-generation-api/stylingformattingtags.md b/src/pages/overview/document-generation-api/stylingformattingtags.md index 95d2ef04d..3a8092a56 100644 --- a/src/pages/overview/document-generation-api/stylingformattingtags.md +++ b/src/pages/overview/document-generation-api/stylingformattingtags.md @@ -53,6 +53,12 @@ Styling for the text tag can be provided using the json data through the HTML ba - Any HTML tags which are not supported will be ignored. +Formatting for image can be provided using the attributes of the img tag. + +- The img tag supports the height and width attributes. + +- Any other unsupported attributes inside the img tag will be ignored. + ## Inline styling attributes supported - font-size : Xpt or Ypx ; X=dynamic positive integer 1–1638 pt, 1pt = 1/72 inch; Y=dynamic positive integer 1–2184 px, 1px = 1/96 inch ( point (pt) and pixels (px) are the only supported unit for font size.) diff --git a/src/pages/overview/document-generation-api/templatetags.md b/src/pages/overview/document-generation-api/templatetags.md index ce1e0f5b5..8d4477362 100644 --- a/src/pages/overview/document-generation-api/templatetags.md +++ b/src/pages/overview/document-generation-api/templatetags.md @@ -399,6 +399,10 @@ Dynamically generate a numbered or bullet list by placing it inside a repeating ![Template tag items are replaced by numbered or bullet list](../images/simple_lists.png) + + +Only JSON keys should be placed inside a repeating section. + ## Numerical Calculations Performing numerical calculations on the input data. diff --git a/src/pages/resources/openapi.json b/src/pages/resources/openapi.json index 3e9f7443f..a5950ace7 100644 --- a/src/pages/resources/openapi.json +++ b/src/pages/resources/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.1", "info": { "title": "PDF Services API", - "description": "

", + "description": "

", "version": "" }, "servers": [ From a59b70b2f9bbb563eb45a7ee578ef8ee2b93d580 Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Thu, 22 Aug 2024 16:20:14 +0530 Subject: [PATCH 07/39] correct branch name --- src/pages/apis/index.md | 2 +- src/pages/resources/openapi.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/apis/index.md b/src/pages/apis/index.md index b0994e5b4..fba60594a 100644 --- a/src/pages/apis/index.md +++ b/src/pages/apis/index.md @@ -1,5 +1,5 @@ --- title: Adobe PDF Services Open API spec description: The OpenAPI spec for Adobe PDF Services API endpoints, parameters, and responses. -openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/docgen_documentation_update/src/pages/resources/openapi.json +openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/dcogen_documentation_update/src/pages/resources/openapi.json --- diff --git a/src/pages/resources/openapi.json b/src/pages/resources/openapi.json index a5950ace7..fe1b88198 100644 --- a/src/pages/resources/openapi.json +++ b/src/pages/resources/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.1", "info": { "title": "PDF Services API", - "description": "

", + "description": "

", "version": "" }, "servers": [ From c5d6f2ee19419f57f025ec71ea5b768da6cd810f Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Fri, 23 Aug 2024 13:19:10 +0530 Subject: [PATCH 08/39] changes for merging to develop --- src/pages/apis/index.md | 2 +- src/pages/resources/openapi.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/apis/index.md b/src/pages/apis/index.md index fba60594a..f21695d07 100644 --- a/src/pages/apis/index.md +++ b/src/pages/apis/index.md @@ -1,5 +1,5 @@ --- title: Adobe PDF Services Open API spec description: The OpenAPI spec for Adobe PDF Services API endpoints, parameters, and responses. -openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/dcogen_documentation_update/src/pages/resources/openapi.json +openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/develop/src/pages/resources/openapi.json --- diff --git a/src/pages/resources/openapi.json b/src/pages/resources/openapi.json index fe1b88198..8fcafa14d 100644 --- a/src/pages/resources/openapi.json +++ b/src/pages/resources/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.1", "info": { "title": "PDF Services API", - "description": "

", + "description": "

", "version": "" }, "servers": [ From 527a117f72504f02f7bd0fe875e3d3b54d1208e0 Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Tue, 27 Aug 2024 16:54:42 +0530 Subject: [PATCH 09/39] added release notes --- .../document-generation-api/templatetags.md | 46 ++----------------- src/pages/overview/releasenotes.md | 16 ++----- 2 files changed, 8 insertions(+), 54 deletions(-) diff --git a/src/pages/overview/document-generation-api/templatetags.md b/src/pages/overview/document-generation-api/templatetags.md index 8d4477362..3a44cf96f 100644 --- a/src/pages/overview/document-generation-api/templatetags.md +++ b/src/pages/overview/document-generation-api/templatetags.md @@ -26,9 +26,10 @@ A placeholder(text tags) gets replaced by the actual input data. A placeholder variable can only be applied to an input field of type -string, number or boolean.
Please refer to the **Arrays** section to use array as a placeholder variable.
Formatting applied to the placeholder -variable in the document template will be retained in the output document.
-For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section. +string, number or boolean.
Formatting applied to the placeholder +variable in the document template will be retained in the output +document.
+For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section: JSON representation of the input data: @@ -73,22 +74,6 @@ A prefix value can be specified for the placeholder variable. Doing so will appe this value before the result of the tag. ![Placeholder tags with prefix image set](../images/placeholder_prefix.png) - -**Arrays** - -To work with arrays, please refer to the [JSONata Functions](#jsonata-functions) section. - -JSON representation of the input data: - -```json -{ - "companyName": "Tech Corp", - "discountCoupons": ["SummerSale", "BlackFriday", "NewYearSpecial"] -} -``` - -![working_with_arrays](../images/working_with_array.png) - ## Images To dynamically insert an image in the document, add any image as @@ -226,11 +211,6 @@ Placeholder tag is replaced by a table generated using the html string provided Table tags can also inserted in a document using table markers. Please refer [Table Tag with Markers](../document-generation-api/tablewithmarkers.md) to learn more about the usage of table markers. - - -Please visit [Complex Table Constructs with Table Markers](../document-generation-api/tablewithmarkers.md#complex-table-constructs-with-table-markers) to learn about advanced -constructs inside tables. - ### Insert Table using Placeholder Table Tag **DEPRECATED (Please use [Table Tag with Markers](../document-generation-api/tablewithmarkers.md))** @@ -399,10 +379,6 @@ Dynamically generate a numbered or bullet list by placing it inside a repeating ![Template tag items are replaced by numbered or bullet list](../images/simple_lists.png) - - -Only JSON keys should be placed inside a repeating section. - ## Numerical Calculations Performing numerical calculations on the input data. @@ -466,20 +442,6 @@ Here is the list of [supported aggregation functions](https://docs.jsonata.org/a aggregate numerical calculation can only be applied to a list of numbers. -## JSONata Functions -The Document Generation API supports various JSONata functions, including: - -- [String Functions](https://docs.jsonata.org/string-functions) -- [Numeric Functions](https://docs.jsonata.org/numeric-functions) -- [Aggregation Functions](https://docs.jsonata.org/aggregation-functions) -- [Boolean Functions](https://docs.jsonata.org/boolean-functions) -- [Array Functions](https://docs.jsonata.org/array-functions) -- [Date/Time Functions](https://docs.jsonata.org/date-time-functions) -- [Higher Order Functions](https://docs.jsonata.org/higher-order-functions) - - -It is recommended to test these functions before incorporating them into your template. - ## Adobe Sign Adobe Sign text tags can be placed anywhere within the contents of the document template. diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 6d462b660..86528d32f 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -93,8 +93,8 @@ version. UTF-8 11 11 - 4.1.1 - 4.1.1 + 4.1.0 + 4.1.0 @@ -181,18 +181,10 @@ Upgrading to the latest SDK should not break existing applications. ## Change history -### October 1, 2024; Java SDK 4.1.1 patch release - -- Bug fixes and stability improvements. - -### September 10, 2024; Adobe Document Generation Server Side Release - -- Enhanced support for [JSONata functions](../document-generation-api/templatetags/#jsonata-functions) in Table Tag with Markers. - -### August 23, 2024; Added new features for Document Generation API and updated Acrobat Service API postman collection +### August 27, 2024; PDF Accessibility Checker API Added - Added base64 format support for inline images. -- Supported attributes for img tag (height and width only). +- Supported attributes for img tag (height and width only) - Postman collection for external storage : Electronic Seal, Extract, Split, Accessibility Checker. - Added request body schema with example for accessibility checker with external storage. From 6e1699e22d8bd96193cfd4177221ec9928f837f0 Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Tue, 27 Aug 2024 17:18:08 +0530 Subject: [PATCH 10/39] updated link to refer Complex Table Constructs with Table markers --- src/pages/overview/document-generation-api/templatetags.md | 5 +++++ src/pages/overview/releasenotes.md | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pages/overview/document-generation-api/templatetags.md b/src/pages/overview/document-generation-api/templatetags.md index 3a44cf96f..2cef92de2 100644 --- a/src/pages/overview/document-generation-api/templatetags.md +++ b/src/pages/overview/document-generation-api/templatetags.md @@ -211,6 +211,11 @@ Placeholder tag is replaced by a table generated using the html string provided Table tags can also inserted in a document using table markers. Please refer [Table Tag with Markers](../document-generation-api/tablewithmarkers.md) to learn more about the usage of table markers. + + +Please visit [Complex Table Constructs with Table Markers](../document-generation-api/tablewithmarkers.md#complex-table-constructs-with-table-markers) to learn about advanced +constructs inside tables. + ### Insert Table using Placeholder Table Tag **DEPRECATED (Please use [Table Tag with Markers](../document-generation-api/tablewithmarkers.md))** diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 86528d32f..3fd80649d 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -181,7 +181,7 @@ Upgrading to the latest SDK should not break existing applications. ## Change history -### August 27, 2024; PDF Accessibility Checker API Added +### August 23, 2024; PDF Accessibility Checker API Added - Added base64 format support for inline images. - Supported attributes for img tag (height and width only) From e923701b62f329b1ecee8bb08931a680dd2f749b Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Tue, 27 Aug 2024 17:32:18 +0530 Subject: [PATCH 11/39] release notes updated --- src/pages/overview/releasenotes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 3fd80649d..d00101090 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -181,10 +181,10 @@ Upgrading to the latest SDK should not break existing applications. ## Change history -### August 23, 2024; PDF Accessibility Checker API Added +### August 23, 2024; Added new features for Document Generation API and updated Acrobat Service API postman collection - Added base64 format support for inline images. -- Supported attributes for img tag (height and width only) +- Supported attributes for img tag (height and width only). - Postman collection for external storage : Electronic Seal, Extract, Split, Accessibility Checker. - Added request body schema with example for accessibility checker with external storage. From 2523a8f9ae2c706eb05b85bda15a596fbd458cef Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Wed, 28 Aug 2024 16:22:20 +0530 Subject: [PATCH 12/39] removed notifier and added response for accessibility checker external storage --- ...with External Storage Postman Collection.zip | Bin 0 -> 38841 bytes src/pages/resources/openapi.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 Platform PDF Services with External Storage Postman Collection.zip diff --git a/Platform PDF Services with External Storage Postman Collection.zip b/Platform PDF Services with External Storage Postman Collection.zip new file mode 100644 index 0000000000000000000000000000000000000000..19ca7bb6e6bb4ad74592af128599eabbdf75d92f GIT binary patch literal 38841 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 literal 0 HcmV?d00001 diff --git a/src/pages/resources/openapi.json b/src/pages/resources/openapi.json index 8fcafa14d..20dac5c3d 100644 --- a/src/pages/resources/openapi.json +++ b/src/pages/resources/openapi.json @@ -13131,7 +13131,7 @@ "$ref": "#/components/schemas/inprogress" }, { - "$ref": "#/components/schemas/AccessibilityCheckerDone" + "$ref": "#/components/schemas/done" }, { "$ref": "#/components/schemas/failed" From 3f785fd08a2a4769fcc2fa891630e0f39393a623 Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Wed, 28 Aug 2024 17:00:35 +0530 Subject: [PATCH 13/39] removed extra file --- ...with External Storage Postman Collection.zip | Bin 38841 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Platform PDF Services with External Storage Postman Collection.zip diff --git a/Platform PDF Services with External Storage Postman Collection.zip b/Platform PDF Services with External Storage Postman Collection.zip deleted file mode 100644 index 19ca7bb6e6bb4ad74592af128599eabbdf75d92f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38841 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 From 3ff11e14c27e2dc24d969366afb41117084c2eca Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Thu, 29 Aug 2024 12:35:38 +0530 Subject: [PATCH 14/39] acessibility checker response update --- src/pages/resources/openapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/resources/openapi.json b/src/pages/resources/openapi.json index 20dac5c3d..8fcafa14d 100644 --- a/src/pages/resources/openapi.json +++ b/src/pages/resources/openapi.json @@ -13131,7 +13131,7 @@ "$ref": "#/components/schemas/inprogress" }, { - "$ref": "#/components/schemas/done" + "$ref": "#/components/schemas/AccessibilityCheckerDone" }, { "$ref": "#/components/schemas/failed" From 470ae828fceff477d5b830999c1f908524172469 Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Tue, 3 Sep 2024 20:22:55 +0530 Subject: [PATCH 15/39] changing branch to main --- src/pages/apis/index.md | 2 +- src/pages/resources/openapi.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/apis/index.md b/src/pages/apis/index.md index f21695d07..1e5df79d7 100644 --- a/src/pages/apis/index.md +++ b/src/pages/apis/index.md @@ -1,5 +1,5 @@ --- title: Adobe PDF Services Open API spec description: The OpenAPI spec for Adobe PDF Services API endpoints, parameters, and responses. -openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/develop/src/pages/resources/openapi.json +openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/main/src/pages/resources/openapi.json --- diff --git a/src/pages/resources/openapi.json b/src/pages/resources/openapi.json index 8fcafa14d..3e9f7443f 100644 --- a/src/pages/resources/openapi.json +++ b/src/pages/resources/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.1", "info": { "title": "PDF Services API", - "description": "

", + "description": "

", "version": "" }, "servers": [ From 7a86f28bc2b3841d5da2b7dcbf2a63470f21e1aa Mon Sep 17 00:00:00 2001 From: NamanChhabra <57210650+NamanChhabra@users.noreply.github.com> Date: Mon, 9 Sep 2024 15:47:56 +0530 Subject: [PATCH 16/39] functions doumentation --- .../document-generation-api/templatetags.md | 38 ++++++++++++++++-- src/pages/overview/images/arrayasstring.png | Bin 0 -> 65798 bytes 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 src/pages/overview/images/arrayasstring.png diff --git a/src/pages/overview/document-generation-api/templatetags.md b/src/pages/overview/document-generation-api/templatetags.md index 2cef92de2..c3d82c412 100644 --- a/src/pages/overview/document-generation-api/templatetags.md +++ b/src/pages/overview/document-generation-api/templatetags.md @@ -26,10 +26,10 @@ A placeholder(text tags) gets replaced by the actual input data. A placeholder variable can only be applied to an input field of type -string, number or boolean.
Formatting applied to the placeholder -variable in the document template will be retained in the output -document.
-For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section: +string, number or boolean.
Please refer to the **Arrays** section to use array as placeholder variable.
Formatting applied to the placeholder +variable in the document template will be retained in the output document.
+For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section. + JSON representation of the input data: @@ -74,6 +74,22 @@ A prefix value can be specified for the placeholder variable. Doing so will appe this value before the result of the tag. ![Placeholder tags with prefix image set](../images/placeholder_prefix.png) + +**Arrays** + +To print the array values from a JSON object, you can use the $string() function in JSONata with the array's key name. + +JSON representation of the input data: + +```json +{ + "companyName": "Tech Corp", + "discountCoupons": ["SummerSale", "BlackFriday", "NewYearSpecial"] +} +``` +Prints array input as string in the output document. + +![Array input as string in the output document](../images/arrayasstring.png) ## Images To dynamically insert an image in the document, add any image as @@ -447,6 +463,20 @@ Here is the list of [supported aggregation functions](https://docs.jsonata.org/a aggregate numerical calculation can only be applied to a list of numbers. +## JSONata Funtions + +The Document Generation API supports various JSONata functions, including: + +- [String Functions](https://docs.jsonata.org/string-functions) +- [Numeric Functions](https://docs.jsonata.org/numeric-functions) +- [Aggregation Functions](https://docs.jsonata.org/aggregation-functions) +- [Boolean Functions](https://docs.jsonata.org/boolean-functions) +- [Array Functions](https://docs.jsonata.org/array-functions) +- [Date/Time Functions](https://docs.jsonata.org/date-time-functions) +- [Higher Order Functions](https://docs.jsonata.org/higher-order-functions) + +Please note that some functions may not produce the expected results. It is recommended to test these functions before incorporating them into your template. + ## Adobe Sign Adobe Sign text tags can be placed anywhere within the contents of the document template. diff --git a/src/pages/overview/images/arrayasstring.png b/src/pages/overview/images/arrayasstring.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0714f10b4c022aaa3668a3ebfea61928171264 GIT binary patch literal 65798 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 J Date: Mon, 9 Sep 2024 15:50:31 +0530 Subject: [PATCH 17/39] Revert "functions doumentation" This reverts commit e9a19f5f0a64646fac9c9c4f34d810b6ff3a2d8b. --- .../stylingformattingtags.md | 4 +- .../document-generation-api/templatetags.md | 38 ++---------------- src/pages/overview/images/arrayasstring.png | Bin 65798 -> 0 bytes 3 files changed, 6 insertions(+), 36 deletions(-) delete mode 100644 src/pages/overview/images/arrayasstring.png diff --git a/src/pages/overview/document-generation-api/stylingformattingtags.md b/src/pages/overview/document-generation-api/stylingformattingtags.md index 3a8092a56..60b65741e 100644 --- a/src/pages/overview/document-generation-api/stylingformattingtags.md +++ b/src/pages/overview/document-generation-api/stylingformattingtags.md @@ -84,9 +84,9 @@ JSON representation of the input data: ## Inline images supported attributes -You may find documentation for using inline images [here](../document-generation-api/inlineimages.md). +[Click here](../document-generation-api/inlineimages.md) to refer documentation on how to add Inline Images. -Formatting for images can be provided using the attributes of the img tag. +Formatting for image can be provided using the attributes of the img tag. - The img tag supports the height and width attributes. diff --git a/src/pages/overview/document-generation-api/templatetags.md b/src/pages/overview/document-generation-api/templatetags.md index c3d82c412..2cef92de2 100644 --- a/src/pages/overview/document-generation-api/templatetags.md +++ b/src/pages/overview/document-generation-api/templatetags.md @@ -26,10 +26,10 @@ A placeholder(text tags) gets replaced by the actual input data. A placeholder variable can only be applied to an input field of type -string, number or boolean.
Please refer to the **Arrays** section to use array as placeholder variable.
Formatting applied to the placeholder -variable in the document template will be retained in the output document.
-For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section. - +string, number or boolean.
Formatting applied to the placeholder +variable in the document template will be retained in the output +document.
+For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section: JSON representation of the input data: @@ -74,22 +74,6 @@ A prefix value can be specified for the placeholder variable. Doing so will appe this value before the result of the tag. ![Placeholder tags with prefix image set](../images/placeholder_prefix.png) - -**Arrays** - -To print the array values from a JSON object, you can use the $string() function in JSONata with the array's key name. - -JSON representation of the input data: - -```json -{ - "companyName": "Tech Corp", - "discountCoupons": ["SummerSale", "BlackFriday", "NewYearSpecial"] -} -``` -Prints array input as string in the output document. - -![Array input as string in the output document](../images/arrayasstring.png) ## Images To dynamically insert an image in the document, add any image as @@ -463,20 +447,6 @@ Here is the list of [supported aggregation functions](https://docs.jsonata.org/a aggregate numerical calculation can only be applied to a list of numbers. -## JSONata Funtions - -The Document Generation API supports various JSONata functions, including: - -- [String Functions](https://docs.jsonata.org/string-functions) -- [Numeric Functions](https://docs.jsonata.org/numeric-functions) -- [Aggregation Functions](https://docs.jsonata.org/aggregation-functions) -- [Boolean Functions](https://docs.jsonata.org/boolean-functions) -- [Array Functions](https://docs.jsonata.org/array-functions) -- [Date/Time Functions](https://docs.jsonata.org/date-time-functions) -- [Higher Order Functions](https://docs.jsonata.org/higher-order-functions) - -Please note that some functions may not produce the expected results. It is recommended to test these functions before incorporating them into your template. - ## Adobe Sign Adobe Sign text tags can be placed anywhere within the contents of the document template. diff --git a/src/pages/overview/images/arrayasstring.png b/src/pages/overview/images/arrayasstring.png deleted file mode 100644 index ed0714f10b4c022aaa3668a3ebfea61928171264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65798 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 J Date: Mon, 23 Sep 2024 12:20:41 +0530 Subject: [PATCH 18/39] updated openapi reference for this branch --- src/pages/apis/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/apis/index.md b/src/pages/apis/index.md index 1e5df79d7..4ae05362b 100644 --- a/src/pages/apis/index.md +++ b/src/pages/apis/index.md @@ -1,5 +1,5 @@ --- title: Adobe PDF Services Open API spec description: The OpenAPI spec for Adobe PDF Services API endpoints, parameters, and responses. -openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/main/src/pages/resources/openapi.json +openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/protect-change/src/pages/resources/openapi.json --- From 39df6148bba0c4c20349ac3dc94d824a164d5506 Mon Sep 17 00:00:00 2001 From: Amit Singh Date: Tue, 24 Sep 2024 16:08:23 +0530 Subject: [PATCH 19/39] added some changes --- src/pages/apis/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/apis/index.md b/src/pages/apis/index.md index 4ae05362b..1e5df79d7 100644 --- a/src/pages/apis/index.md +++ b/src/pages/apis/index.md @@ -1,5 +1,5 @@ --- title: Adobe PDF Services Open API spec description: The OpenAPI spec for Adobe PDF Services API endpoints, parameters, and responses. -openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/protect-change/src/pages/resources/openapi.json +openAPISpec: https://raw.githubusercontent.com/AdobeDocs/pdfservices-api-documentation/main/src/pages/resources/openapi.json --- From 257e09936ed4abae673b622bd70038012ef856dd Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Wed, 9 Oct 2024 12:21:34 +0530 Subject: [PATCH 20/39] update samples --- .../howtos/pdf-accessibility-checker-api.md | 298 +--------------- .../howtos/pdf-watermark-api.md | 334 +----------------- 2 files changed, 19 insertions(+), 613 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index 422bf3716..3d8270ab6 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -31,295 +31,7 @@ Please refer to the [API usage guide](../gettingstarted.md) to understand how to -#### Java - -```javascript -// Get the samples from https://www.adobe.com/go/pdftoolsapi_java_samples -// Run the sample: -// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfaccessibilitychecker.PDFAccessibilityChecker -public class PDFAccessibilityChecker { - - private static final Logger LOGGER = LoggerFactory.getLogger(PDFAccessibilityChecker.class); - - public static void main(String[] args) { - - try ( - InputStream inputStream = Files - .newInputStream(new File("src/main/resources/accessibilityCheckerInput.pdf") - .toPath())) { - // Initial setup, create credentials instance - Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), - System.getenv("PDF_SERVICES_CLIENT_SECRET")); - - // Creates a PDF Services instance - PDFServices pdfServices = new PDFServices(credentials); - - // Creates an asset(s) from source file(s) and upload - Asset asset = pdfServices.upload(inputStream, PDFServicesMediaType.PDF.getMediaType()); - - // Creates a new job instance - PDFAccessibilityCheckerJob PDFAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(asset); - - // Submit the job and gets the job result - String location = pdfServices.submit(PDFAccessibilityCheckerJob); - PDFServicesResponse pdfServicesResponse = pdfServices - .getJobResult(location, PDFAccessibilityCheckerResult.class); - - // Get content from the resulting asset(s) - Asset resultAsset = pdfServicesResponse.getResult().getAsset(); - StreamAsset streamAsset = pdfServices.getContent(resultAsset); - - Asset report = pdfServicesResponse.getResult().getReport(); - StreamAsset streamAssetReport = pdfServices.getContent(report); - - String outputFilePath = "/output/pdfAccessibilityCheckerOutput.pdf"; - String outputFilePathReport = "/output/pdfAccessibilityCheckerReport.json"; - - LOGGER.info(String.format("Saving asset at %s", outputFilePath)); - LOGGER.info(String.format("Saving report at %s", outputFilePathReport)); - - new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); - new FileInfo(Directory.GetCurrentDirectory() + outputFilePathReport).Directory.Create(); - - OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePath).toPath()); - OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePathReport).toPath()); - - IOUtils.copy(streamAsset.getInputStream(), outputStream); - IOUtils.copy(streamAssetReport.getInputStream(), outputStreamReport); - - outputStream.close(); - outputStreamReport.close(); - } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { - System.out.println("Exception encountered while executing operation: "+ ex); - } - } -} -``` - -#### .NET - -```javascript -// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples -// Run the sample: -// cd PDFAccessibilityChecker/ -// dotnet run PDFAccessibilityChecker.csproj -namespace PDFAccessibilityChecker -{ - public class Program { - private static readonly ILog log = LogManager.GetLogger(typeof (Program)); - - static void Main() { - //Configure the logging - ConfigureLogging(); - try { - // Initial setup, create credentials instance - ICredentials credentials = new ServicePrincipalCredentials( - Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), - Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); - - // Creates a PDF Services instance - PDFServices pdfServices = new PDFServices(credentials); - - // Creates an asset(s) from source file(s) and upload - using Stream inputStream = File.OpenRead(@"checkerPDFInput.pdf"); - IAsset inputDocumentAsset = pdfServices.Upload(inputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); - - // Create the PDF Accessibility Checker job instance - PDFAccessibilityCheckerJob pdfAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(inputDocumentAsset); - - // Submits the job and gets the job result - String location = pdfServices.Submit(pdfAccessibilityCheckerJob); - - // Get content from the resulting asset(s) - PDFServicesResponse pdfServicesResponse = - pdfServices.GetJobResult (location, typeof (PDFAccessibilityCheckerResult)); - - IAsset outputAsset = pdfServicesResponse.Result.Asset; - StreamAsset streamAsset = pdfServices.GetContent(outputAsset); - - IAsset outputReportAsset = pdfServicesResponse.Result.Report; - StreamAsset streamReportAsset = pdfServices.GetContent(outputReportAsset); - - // Creating output streams and copying stream asset's content to it - String outputPdfPath = '/output/accessibilityChecker.pdf'; - new FileInfo(Directory.GetCurrentDirectory() + outputPdfPath).Directory.Create(); - Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputPdfPath); - streamAsset.Stream.CopyTo(outputStream); - outputStream.Close(); - - String outputJSONPath = '/output/accessibilityChecker.json'; - new FileInfo(Directory.GetCurrentDirectory() + outputJSONPath).Directory.Create(); - Stream outputJSONStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputJSONPath); - streamReportAsset.Stream.CopyTo(outputJSONStream); - outputStream.Close(); - } catch (ServiceUsageException ex) { - log.Error("Exception encountered while executing operation", ex); - } catch (ServiceApiException ex) { - log.Error("Exception encountered while executing operation", ex); - } catch (SDKException ex) { - log.Error("Exception encountered while executing operation", ex); - } catch (IOException ex) { - log.Error("Exception encountered while executing operation", ex); - } catch (Exception ex) { - log.Error("Exception encountered while executing operation", ex); - } - } - - static void ConfigureLogging() { - ILoggerRepository - logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); - XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); - } - } -} -``` - -#### Node JS - -```javascript -// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample -// Run the sample: -// node src/pdfaccessibilitychecker/pdf-accessibility-checker.js - -const { - ServicePrincipalCredentials, - PDFServices, - MimeType, - SDKError, - ServiceUsageError, - ServiceApiError, - PDFAccessibilityCheckerJob, - PDFAccessibilityCheckerResult -} = require("@dcloud/pdfservices-node-sdk"); -const fs = require("fs"); - -(async () => { - let readStream; - try { - // Initial setup, create credentials instance - const credentials = new ServicePrincipalCredentials({ - clientId: process.env.PDF_SERVICES_CLIENT_ID, - clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET - }); - - // Creates a PDF Services instance - const pdfServices = new PDFServices({credentials}); - - // Creates an asset(s) from source file(s) and upload - readStream = fs.createReadStream("resources/accessibilityCheckerInput.pdf"); - const inputAsset = await pdfServices.upload({ - readStream, - mimeType: MimeType.PDF - }); - - // Create a new job instance - const job = new PDFAccessibilityCheckerJob({inputAsset}); - - // Submit the job and get the job result - const pollingURL = await pdfServices.submit({job}); - const pdfServicesResponse = await pdfServices.getJobResult({ - pollingURL, - resultType: PDFAccessibilityCheckerResult - }); - - // Get content from the resulting asset(s) - const resultAsset = pdfServicesResponse.result.asset; - const streamAsset = await pdfServices.getContent({asset: resultAsset}); - - const resultAssetReport = pdfServicesResponse.result.report; - const streamAssetReport = await pdfServices.getContent({asset: resultAssetReport}); - - // Creates an output stream and copy result asset's content to it - const outputFilePath = "output/PDFAccessibilityChecker.pdf" - const outputFilePathReport = "output/PDFAccessibilityChecker.json" - console.log(`Saving asset at ${outputFilePath}`); - console.log(`Saving asset at ${outputFilePathReport}`); - - let writeStream = fs.createWriteStream(outputFilePath); - streamAsset.readStream.pipe(writeStream); - writeStream = fs.createWriteStream(outputFilePathReport); - streamAssetReport.readStream.pipe(writeStream); - } catch (err) { - if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { - console.log("Exception encountered while executing operation", err); - } else { - console.log("Exception encountered while executing operation", err); - } - } finally { - readStream?.destroy(); - } -})(); -``` - -#### Python - -```javascript -# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples -# Run the sample: -# python src/PDFAccessibilityChecker/pdf_accessibility_checker.py - -class PDFAccessibilityChecker: - def __init__(self): - try: - pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') - input_stream = pdf_file.read() - pdf_file.close() - - # Initial setup, create credentials instance - credentials = ServicePrincipalCredentials( - client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), - client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) - - # Creates a PDF Services instance - pdf_services = PDFServices(credentials=credentials) - - # Creates an asset(s) from source file(s) and upload - input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) - - # Creates a new job instance - pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset) - - # Submit the job and gets the job result - location = pdf_services.submit(pdf_accessibility_checker_job) - pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) - - # Get content from the resulting asset(s) - result_asset: CloudAsset = pdf_services_response.get_result().get_asset() - stream_asset: StreamAsset = pdf_services.get_content(result_asset) - - report_asset: CloudAsset = pdf_services_response.get_result().get_report() - stream_report: StreamAsset = pdf_services.get_content(report_asset) - - output_file_path = 'output/accessibilitychecker.pdf' - - with open(output_file_path, "wb") as file: - file.write(stream_asset.get_input_stream()) - - output_file_path_json = 'output/accessibilitychecker.json' - with open(output_file_path_json, "wb") as file: - file.write(stream_report.get_input_stream()) - - except (ServiceApiException, ServiceUsageException, SdkException) as e: - logging.exception(f'Exception encountered while executing operation: {e}') - - - if __name__ == "__main__": - PDFAccessibilityChecker() -``` - -#### REST API - -```javascript -curl --location --request POST 'https://pdf-services.adobe.io/operation/accessibilitychecker' \ ---header 'x-api-key: {{Placeholder for client_id}}' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer {{Placeholder for token}}' \ ---data-raw '{ - "assetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f1878678e68" -}' -``` - -## Check PDF accessibility for specified pages +## Check accessibility for specified pages The sample below performs an accessibility check operation for specified pages of a given PDF. @@ -355,7 +67,7 @@ public class PDFAccessibilityCheckerWithOptions { // Creates parameters for the job PDFAccessibilityCheckerParams pdfAccessibilityCheckerParams = PDFAccessibilityCheckerParams - .pdfAccessibilityCheckerParamsBuilder().withPageStart(1).withPageEnd(2).build(); + .pdfAccessibilityCheckerParamsBuilder().withPageStart(1).withPageEnd(5).build(); // Creates a new job instance PDFAccessibilityCheckerJob pdfAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(asset) @@ -429,7 +141,7 @@ namespace PDFAccessibilityCheckerWithOptions PDFAccessibilityCheckerParams pdfAccessibilityCheckerParams = PDFAccessibilityCheckerParams .PDFAccessibilityCheckerParamsBuilder() .WithPageStart(1) - .WithPageEnd(3) + .WithPageEnd(5) .Build(); // Create the PDF Accessibility Checker job instance @@ -520,7 +232,7 @@ const fs = require("fs"); }); // Create parameters for the job - const params = new PDFAccessibilityCheckerParams({pageStart:1, pageEnd:3}); + const params = new PDFAccessibilityCheckerParams({pageStart:1, pageEnd:5}); // Create a new job instance const job = new PDFAccessibilityCheckerJob({inputAsset, params}); @@ -587,7 +299,7 @@ class PDFAccessibilityChecker: input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) # Create parameters for the job - pdf_accessibility_checker_params = PDFAccessibilityCheckerParams(page_start=1, page_end=2) + pdf_accessibility_checker_params = PDFAccessibilityCheckerParams(page_start=1, page_end=5) # Creates a new job instance pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset, diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index 2c9ec3a30..6f59ca414 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -41,309 +41,9 @@ The page ranges are specified as an array of objects whose length cannot exceed See our public API Reference for [PDF Watermark API](../../../apis/#tag/PDF-Watermark). -## Apply Watermark with default appearance on PDF +## Apply Watermark on specified pages -The sample below performs watermark operation applying watermark in foreground on of a given PDF with default appearance. - -Please refer the [API usage guide](../gettingstarted.md) to understand how to use our APIs. - - - -#### Java - -```javascript -// Get the samples from https://www.adobe.com/go/pdftoolsapi_java_samples -// Run the sample: -// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfwatermark.PDFWatermark - -public class PDFWatermark { - - // Initialize the logger - private static final Logger LOGGER = LoggerFactory.getLogger(PDFWatermark.class); - - public static void main(String[] args) { - - try ( - InputStream sourceFileInputStream = Files.newInputStream(new File("src/main/resources/pdfWatermarkInput.pdf").toPath()); - InputStream watermarkFileInputStream = Files.newInputStream(new File("src/main/resources/watermark.pdf").toPath())) { - - // Initial setup, create credentials instance - Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), System.getenv("PDF_SERVICES_CLIENT_SECRET")); - - // Creates a PDF Services instance - PDFServices pdfServices = new PDFServices(credentials); - - // Creates an asset(s) from source file(s) and upload - Asset inputDocumentAsset = pdfServices.upload(sourceFileInputStream, PDFServicesMediaType.PDF.getMediaType()); - Asset watermarkDocumentAsset = pdfServices.upload(watermarkFileInputStream, PDFServicesMediaType.PDF.getMediaType()); - - // Creates a new job instance - PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset); - - // Submit the job and gets the job result - String location = pdfServices.submit(pdfWatermarkJob); - PDFServicesResponse pdfServicesResponse = pdfServices.getJobResult(location, PDFWatermarkResult.class); - - // Get content from the resulting asset(s) - Asset resultAsset = pdfServicesResponse.getResult().getAsset(); - StreamAsset streamAsset = pdfServices.getContent(resultAsset); - - // Creates an output stream and copy stream asset's content to it - Files.createDirectories(Paths.get("output/")); - OutputStream outputStream = Files.newOutputStream(new File("output/pdfWatermarkOutput.pdf").toPath()); - LOGGER.info("Saving asset at output/pdfWatermarkOutput.pdf"); - IOUtils.copy(streamAsset.getInputStream(), outputStream); - outputStream.close(); - } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { - LOGGER.error("Exception encountered while executing operation", ex); - } - } -} -``` - -#### .NET - -```javascript -// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples -// Run the sample: -// cd PDFWatermark/ -// dotnet run PDFWatermark.csproj - -namespace PDFWatermark -{ - class Program - { - // Initialize the logger. - private static readonly ILog log = LogManager.GetLogger(typeof(Program)); - - static void Main() - { - //Configure the logging - ConfigureLogging(); - - try - { - // Initial setup, create credentials instance - ICredentials credentials = new ServicePrincipalCredentials( - Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), - Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); - - // Creates a PDF Services instance - PDFServices pdfServices = new PDFServices(credentials); - - // Creates an asset(s) from source file(s) and upload - Stream sourceFileInputStream = File.OpenRead(@"pdfWatermarkInput.pdf"); - IAsset inputDocumentAsset = pdfServices.Upload(sourceFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); - - // Creates a watermark asset from source file(s) and upload - Stream watermarkFileInputStream = File.OpenRead(@"watermark.pdf"); - IAsset watermarkDocumentAsset = pdfServices.Upload(watermarkFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); - - // Submits the job and gets the job result - PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset); - String location = pdfServices.Submit(pdfWatermarkJob); - - // Get content from the resulting asset(s) - PDFServicesResponse pdfServicesResponse = - pdfServices.GetJobResult(location, typeof(PDFWatermarkResult)); - - // Creating output streams and copying stream asset's content to it - IAsset resultAsset = pdfServicesResponse.Result.Asset; - StreamAsset streamAsset = pdfServices.GetContent(resultAsset); - - // Creating output streams and copying stream asset's content to it - String outputFilePath = "/output/pdfWatermarkOutput.pdf"; - new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); - Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputFilePath); - streamAsset.Stream.CopyTo(outputStream); - outputStream.Close(); - } - catch (ServiceUsageException ex) - { - log.Error("Exception encountered while executing operation", ex); - } - catch (ServiceApiException ex) - { - log.Error("Exception encountered while executing operation", ex); - } - catch (SDKException ex) - { - log.Error("Exception encountered while executing operation", ex); - } - catch (IOException ex) - { - log.Error("Exception encountered while executing operation", ex); - } - catch (Exception ex) - { - log.Error("Exception encountered while executing operation", ex); - } - } - - static void ConfigureLogging() - { - ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); - XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); - } - } -} -``` - -#### Node JS - -```javascript -// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample -// Run the sample: -// node src/pdfwatermark/pdf-watermark.js - -const { - ServicePrincipalCredentials, - PDFServices, - MimeType, - PDFWatermarkJob, - PDFWatermarkResult, - SDKError, - ServiceUsageError, - ServiceApiError, -} = require("@dcloud/pdfservices-node-sdk"); -const fs = require("fs"); - -(async () => { - let sourceFileReadStream; - let watermarkFileReadStream; - try { - // Initial setup, create credentials instance - const credentials = new ServicePrincipalCredentials({ - clientId: process.env.PDF_SERVICES_CLIENT_ID, - clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET - }); - - // Creates a PDF Services instance - const pdfServices = new PDFServices({credentials}); - - // Creates an asset(s) from source file(s) and upload - sourceFileReadStream = fs.createReadStream("resources/watermarkPDFInput.pdf"); - watermarkFileReadStream = fs.createReadStream("resources/watermark.pdf"); - const [inputAsset, watermarkAsset] = await pdfServices.uploadAssets({ - streamAssets: [{ - readStream: sourceFileReadStream, - mimeType: MimeType.PDF - }, { - readStream: watermarkFileReadStream, - mimeType: MimeType.PDF - }] - }); - - // Creates a new job instance - const job = new PDFWatermarkJob({ - inputAsset: inputAsset, - watermarkAsset: watermarkAsset, - }); - - // Submit the job and get the job result - const pollingURL = await pdfServices.submit({job}); - const pdfServicesResponse = await pdfServices.getJobResult({ - pollingURL, - resultType: PDFWatermarkResult - }); - - // Get content from the resulting asset(s) - const resultAsset = pdfServicesResponse.result.asset; - const streamAsset = await pdfServices.getContent({asset: resultAsset}); - - // Creates a write stream and copy stream asset's content to it - const outputFilePath = "./pdfWatermarkOutput.pdf"; - console.log(`Saving asset at ${outputFilePath}`); - - const writeStream = fs.createWriteStream(outputFilePath); - streamAsset.readStream.pipe(writeStream); - } catch (err) { - if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { - console.log("Exception encountered while executing operation", err); - } else { - console.log("Exception encountered while executing operation", err); - } - } finally { - sourceFileReadStream?.destroy(); - watermarkFileReadStream?.destroy(); - } -})(); -``` - -#### Python - -```javascript -# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples -# Run the sample: -# python src/watermarkpdf/watermark_pdf.py - -# Initialize the logger -logging.basicConfig(level=logging.INFO) - -class PDFWatermark: - def __init__(self): - try: - pdf_file = open("src/resources/watermarkPDFInput.pdf", 'rb') - input_stream = pdf_file.read() - pdf_file.close() - - pdf_file = open("src/resources/watermark.pdf", 'rb') - watermark_asset = pdf_file.read() - pdf_file.close() - - # Initial setup, create credentials instance - credentials = ServicePrincipalCredentials( - client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), - client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) - - # Creates a PDF Services instance - pdf_services = PDFServices(credentials=credentials) - - - # Creates an asset(s) from source file(s) and upload - input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) - watermark_asset = pdf_services.upload(input_stream=watermark_asset, mime_type=PDFServicesMediaType.PDF) - - # Creates a new job instance - watermark_job = PDFWatermarkJob(input_asset=input_asset, watermark_asset=watermark_asset) - - # Submit the job and gets the job result - location = pdf_services.submit(watermark_job) - pdf_services_response = pdf_services.get_job_result(location, WatermarkResult) - - # Get content from the resulting asset(s) - watermark_result: CloudAsset = pdf_services_response.get_result().get_asset() - stream_asset: StreamAsset = pdf_services.get_content(watermark_result) - - # Creates an output stream and copy stream asset's content to it - - output_file_path = 'output/pdfWatermark.pdf' - with open(output_file_path, "wb") as file: - file.write(stream_asset.get_input_stream()) - - except (ServiceApiException, ServiceUsageException, SdkException) as e: - logging.exception(f'Exception encountered while executing operation: {e}') - -if __name__ == "__main__": - PDFWatermark() -``` - -#### REST API - -```javascript -curl --location --request POST 'https://pdf-services.adobe.io/operation/addwatermark' \ ---header 'x-api-key: {{Placeholder for client_id}}' \ ---header 'Content-Type: application/json' \ ---header 'Authorization: Bearer {{Placeholder for token}}' \ ---data-raw '{ - "inputDocumentAssetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f68", - "watermarkDocumentAssetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f1878678e68" -}' -``` - -## Apply Watermark with customized appearance on PDF - -The sample below performs watermark operation applying watermark with customized appearance on a given PDF. +The sample below performs watermark operation applying watermark in foreground on specified pages of a given PDF. Please refer to the [API usage guide](../api-usage.md) to understand how to use our APIs. @@ -384,10 +84,9 @@ public class PDFWatermarkWithOptions { // Watermark pages of the document (as specified by PageRanges). PageRanges pageRangeForPDFWatermark = new PageRanges(); - // Add page 1 - pageRangeForPDFWatermark.addSinglePage(1); - // Add pages 3 to 4 - pageRangeForPDFWatermark.addRange(3, 4); + + pageRangeForPDFWatermark.addRange(2, 5); + pageRangeForPDFWatermark.addRange(8, 10); // Creates PDF Watermark appearance option WatermarkAppearance watermarkAppearance = new WatermarkAppearance(); @@ -466,11 +165,8 @@ namespace PDFWatermark // Watermark pages of the document PageRanges pageRangeForPDFWatermark = new PageRanges(); - // Add page 1 - pageRangeForPDFWatermark.AddSinglePage(1); - - // Add pages 3 to 4 - pageRangeForPDFWatermark.AddRange(3, 4); + pageRangeForPDFWatermark.AddRange(2, 5); + pageRangeForPDFWatermark.AddRange(8, 10); // Creates PDF Watermark appearance option WatermarkAppearance watermarkAppearance = new WatermarkAppearance(); @@ -578,15 +274,12 @@ const fs = require("fs"); }); const pageRangesForWatermark = new PageRanges(); - - // Add page 1. - pageRangesForWatermark.addSinglePage(1); - - // Add pages 3 to 4. - pageRangesForWatermark.addRange(3, 4); + + pageRangesForWatermark.addRange(2, 5); + pageRangesForWatermark.addRange(8, 10); const watermarkAppearance = new WatermarkAppearance({ - appearOnForeground: false, + appearOnForeground: true, opacity: 50, }); @@ -667,10 +360,11 @@ class PDFWatermark: input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) watermark_asset = pdf_services.upload(input_stream=watermark_asset, mime_type=PDFServicesMediaType.PDF) - watermark_appearance = WatermarkAppearance(appear_on_foreground=False, opacity=80) + watermark_appearance = WatermarkAppearance(appear_on_foreground=True, opacity=50) page_ranges = PageRanges() - page_ranges.add_range(1, 2) + page_ranges.add_range(2, 5) + page_ranges.add_range(8, 10) # Create parameters for the job watermark_params = WatermarkParams(page_ranges=page_ranges, watermark_appearance=watermark_appearance) From e1059a56e9bb1f27f46f17c7f94bc352887642f8 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Wed, 9 Oct 2024 12:58:40 +0530 Subject: [PATCH 21/39] update --- .../howtos/pdf-accessibility-checker-api.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index 3d8270ab6..f8e6fdb61 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -25,14 +25,6 @@ See our public API Reference for the [PDF Accessibility Checker API](../../../ap ## Check accessibility for specified pages -The sample below performs an accessibility check operation on a given PDF. - -Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. - - - -## Check accessibility for specified pages - The sample below performs an accessibility check operation for specified pages of a given PDF. Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. From bd91607a29741550c1726cbc6e1ffa0f96a35a3a Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Thu, 10 Oct 2024 11:53:04 +0530 Subject: [PATCH 22/39] review --- .../howtos/pdf-accessibility-checker-api.md | 2 +- .../overview/pdf-services-api/howtos/pdf-watermark-api.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index f8e6fdb61..e997dc5b2 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -201,7 +201,7 @@ const { ServiceApiError, PDFAccessibilityCheckerJob, PDFAccessibilityCheckerResult -} = require("@dcloud/pdfservices-node-sdk"); +} = require("@adobe/pdfservices-node-sdk"); const fs = require("fs"); (async () => { diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index 6f59ca414..645870f18 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -129,10 +129,10 @@ public class PDFWatermarkWithOptions { ```javascript // Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples // Run the sample: -// cd PDFWatermark/ -// dotnet run PDFWatermark.csproj +// cd PDFWatermarkWithOptions/ +// dotnet run PDFWatermarkWithOptions.csproj -namespace PDFWatermark +namespace PDFWatermarkWithOptions { class Program { @@ -243,7 +243,7 @@ const { SDKError, ServiceUsageError, ServiceApiError, -} = require("@dcloud/pdfservices-node-sdk"); +} = require("@adobe/pdfservices-node-sdk"); const fs = require("fs"); (async () => { From c4121b170be61589eaf5c2bb3b5a94a38eebec3e Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Thu, 10 Oct 2024 13:57:17 +0530 Subject: [PATCH 23/39] release note --- src/pages/overview/releasenotes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index d00101090..4f5a6df3d 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -320,3 +320,7 @@ Upgrading to the latest SDK should not break existing applications. ### June, 2023; Adobe Document Generation Server Side Release - Added support for [External Storage](../pdf-services-api/howtos/pdf-external-storage-sol/) in Document Generation API. + +### October, 2024; Java SDK 4.2.0 and NodeJS, .NET, Python SDK 4.1.0 minor release + +- PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs and REST APIs. From cf09ae6c9fd0a071640016c3c09b80224668b643 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Wed, 16 Oct 2024 13:52:43 +0530 Subject: [PATCH 24/39] alpha sorting of how-tos --- gatsby-config.js | 84 +++++++++---------- .../howtos/pdf-watermark-api.md | 12 ++- 2 files changed, 50 insertions(+), 46 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 5efdd2ba3..abaf29a73 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -202,88 +202,88 @@ module.exports = { path: 'overview/pdf-services-api/howtos/webhook-notification.md' }, { - title: 'SDK Utilities', - path: 'overview/pdf-services-api/howtos/sdk-utilities.md' + "title": "Combine PDF Files", + "path": "overview/pdf-services-api/howtos/combine-pdf.md" }, { - title: 'Create PDF', - path: 'overview/pdf-services-api/howtos/create-pdf.md' + "title": "Compress PDFs", + "path": "overview/pdf-services-api/howtos/compress-pdf.md" }, { - title: 'Export PDF', - path: 'overview/pdf-services-api/howtos/export-pdf.md' + "title": "Create PDF", + "path": "overview/pdf-services-api/howtos/create-pdf.md" }, { - title: 'Combine PDF Files', - path: 'overview/pdf-services-api/howtos/combine-pdf.md' + "title": "Delete Pages", + "path": "overview/pdf-services-api/howtos/delete-pages.md" }, { - title: 'OCR PDF', - path: 'overview/pdf-services-api/howtos/ocr-pdf.md' + "title": "Export PDF", + "path": "overview/pdf-services-api/howtos/export-pdf.md" }, { - title: 'Compress PDFs', - path: 'overview/pdf-services-api/howtos/compress-pdf.md' + "title": "Extract PDF", + "path": "overview/pdf-services-api/howtos/extract-pdf.md" }, { - title: 'Linearize PDF', - path: 'overview/pdf-services-api/howtos/linearize-pdf.md' + "title": "Get PDF Properties", + "path": "overview/pdf-services-api/howtos/pdf-properties.md" }, { - title: 'Protect PDF', - path: 'overview/pdf-services-api/howtos/protect-pdf.md' + "title": "Insert Pages", + "path": "overview/pdf-services-api/howtos/insert-pages.md" }, { - title: 'Remove Protection', - path: 'overview/pdf-services-api/howtos/remove-protection.md' + "title": "Linearize PDF", + "path": "overview/pdf-services-api/howtos/linearize-pdf.md" }, { - title: 'Insert Pages', - path: 'overview/pdf-services-api/howtos/insert-pages.md' + "title": "OCR PDF", + "path": "overview/pdf-services-api/howtos/ocr-pdf.md" }, { - title: 'Replace Pages', - path: 'overview/pdf-services-api/howtos/replace-pages.md' + "title": "PDF Accessibility Auto-Tag", + "path": "overview/pdf-services-api/howtos/pdf-accessibility-auto-tag-pdf.md" }, { - title: 'Delete Pages', - path: 'overview/pdf-services-api/howtos/delete-pages.md' + "title": "PDF Accessibility Checker", + "path": "overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md" }, { - title: 'Reorder Pages', - path: 'overview/pdf-services-api/howtos/reorder-pages.md' + "title": "PDF Electronic Seal", + "path": "overview/pdf-services-api/howtos/electronic-seal-api.md" }, { - title: 'Rotate Pages', - path: 'overview/pdf-services-api/howtos/rotate-pages.md' + "title": "PDF Watermark", + "path": "overview/pdf-services-api/howtos/pdf-watermark-api.md" }, { - title: 'Split PDF', - path: 'overview/pdf-services-api/howtos/split-pdf.md' + "title": "Protect PDF", + "path": "overview/pdf-services-api/howtos/protect-pdf.md" }, { - title: 'Extract PDF', - path: 'overview/pdf-services-api/howtos/extract-pdf.md' + "title": "Remove Protection", + "path": "overview/pdf-services-api/howtos/remove-protection.md" }, { - title: 'Get PDF Properties', - path: 'overview/pdf-services-api/howtos/pdf-properties.md' + "title": "Reorder Pages", + "path": "overview/pdf-services-api/howtos/reorder-pages.md" }, { - title: 'PDF Accessibility Auto-Tag', - path: 'overview/pdf-services-api/howtos/pdf-accessibility-auto-tag-pdf.md' + "title": "Replace Pages", + "path": "overview/pdf-services-api/howtos/replace-pages.md" }, { - title: 'PDF Electronic Seal', - path: 'overview/pdf-services-api/howtos/electronic-seal-api.md' + "title": "Rotate Pages", + "path": "overview/pdf-services-api/howtos/rotate-pages.md" }, { - title: 'PDF Watermark', - path: 'overview/pdf-services-api/howtos/pdf-watermark-api.md' + "title": "SDK Utilities", + "path": "overview/pdf-services-api/howtos/sdk-utilities.md" }, { - title: 'PDF Accessibility Checker', - path: 'overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md' + "title": "Split PDF", + "path": "overview/pdf-services-api/howtos/split-pdf.md" } ] } diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index 645870f18..c82a2cf6d 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -5,7 +5,7 @@ title: PDF Watermark | How Tos | PDF Services API | Adobe PDF Services # PDF Watermark A watermark in a document is usually semi-transparent or faded text, a logo, or a pattern placed in the background or foreground of the page for security, authenticity, and branding. -PDF Watermark API is a cloud based solution to apply watermark on specified pages of PDF document using a source watermark PDF. The first page of source watermark PDF will be added as a watermark in input PDF document. If a page range is not specified, the watermark will be applied on all pages of the source document. +PDF Watermark API is a cloud based solution to apply watermark on specified pages of PDF document using a source watermark PDF. The first page of the source watermark PDF will be added as a watermark in the input PDF document. If a page range is not specified, the watermark will be applied on all pages of the source document. ![PDF Watermark](../watermark_overview.png) @@ -22,6 +22,10 @@ A PDF document to which a watermark will be applied. A PDF document whose first page will be used as a watermark for the input document. The output generated will retain the content along with the watermark from the first page. +Note: If the watermark document is a scanned PDF, placing the watermark in the foreground may make the content of the input PDF unreadable. +Place watermarks from scanned PDF files in the background by setting appearOnForeground to false. + + ## Watermark Parameters ### Page ranges (_pageRanges_) @@ -52,7 +56,7 @@ Please refer to the [API usage guide](../api-usage.md) to understand how to use #### Java ```javascript -// Get the samples from https://github.com/adobe/pdfservices-java-sdk-samples/tree/beta +// Get the samples from https://github.com/adobe/pdfservices-java-sdk-samples // Run the sample: // mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfwatermark.PDFWatermarkWithOptions @@ -127,7 +131,7 @@ public class PDFWatermarkWithOptions { #### .NET ```javascript -// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples +// Get the samples from https://github.com/adobe/PDFServices.NET.SDK.Samples // Run the sample: // cd PDFWatermarkWithOptions/ // dotnet run PDFWatermarkWithOptions.csproj @@ -230,7 +234,7 @@ namespace PDFWatermarkWithOptions #### Node JS ```javascript -// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample +// Get the samples from https://github.com/adobe/pdfservices-node-sdk-samples // Run the sample: // node src/pdfwatermark/pdf-watermark-with-options.js From cc5ee743e9cefb7fe59ddb612b5314fd181c5213 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Wed, 16 Oct 2024 15:22:38 +0530 Subject: [PATCH 25/39] update syntax --- gatsby-config.js | 84 ++++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index abaf29a73..5ef978b8b 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -202,88 +202,88 @@ module.exports = { path: 'overview/pdf-services-api/howtos/webhook-notification.md' }, { - "title": "Combine PDF Files", - "path": "overview/pdf-services-api/howtos/combine-pdf.md" + title: 'Combine PDF Files', + path: 'overview/pdf-services-api/howtos/combine-pdf.md' }, { - "title": "Compress PDFs", - "path": "overview/pdf-services-api/howtos/compress-pdf.md" + title: 'Compress PDFs', + path: 'overview/pdf-services-api/howtos/compress-pdf.md' }, { - "title": "Create PDF", - "path": "overview/pdf-services-api/howtos/create-pdf.md" + title: 'Create PDF', + path: 'overview/pdf-services-api/howtos/create-pdf.md' }, { - "title": "Delete Pages", - "path": "overview/pdf-services-api/howtos/delete-pages.md" + title: 'Delete Pages', + path: 'overview/pdf-services-api/howtos/delete-pages.md' }, { - "title": "Export PDF", - "path": "overview/pdf-services-api/howtos/export-pdf.md" + title: 'Export PDF', + path: 'overview/pdf-services-api/howtos/export-pdf.md' }, { - "title": "Extract PDF", - "path": "overview/pdf-services-api/howtos/extract-pdf.md" + title: 'Extract PDF', + path: 'overview/pdf-services-api/howtos/extract-pdf.md' }, { - "title": "Get PDF Properties", - "path": "overview/pdf-services-api/howtos/pdf-properties.md" + title: 'Get PDF Properties', + path: 'overview/pdf-services-api/howtos/pdf-properties.md' }, { - "title": "Insert Pages", - "path": "overview/pdf-services-api/howtos/insert-pages.md" + title: 'Insert Pages', + path: 'overview/pdf-services-api/howtos/insert-pages.md' }, { - "title": "Linearize PDF", - "path": "overview/pdf-services-api/howtos/linearize-pdf.md" + title: 'Linearize PDF', + path: 'overview/pdf-services-api/howtos/linearize-pdf.md' }, { - "title": "OCR PDF", - "path": "overview/pdf-services-api/howtos/ocr-pdf.md" + title: 'OCR PDF', + path: 'overview/pdf-services-api/howtos/ocr-pdf.md' }, { - "title": "PDF Accessibility Auto-Tag", - "path": "overview/pdf-services-api/howtos/pdf-accessibility-auto-tag-pdf.md" + title: 'PDF Accessibility Auto-Tag', + path: 'overview/pdf-services-api/howtos/pdf-accessibility-auto-tag-pdf.md' }, { - "title": "PDF Accessibility Checker", - "path": "overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md" + title: 'PDF Accessibility Checker', + path: 'overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md' }, { - "title": "PDF Electronic Seal", - "path": "overview/pdf-services-api/howtos/electronic-seal-api.md" + title: 'PDF Electronic Seal', + path: 'overview/pdf-services-api/howtos/electronic-seal-api.md' }, { - "title": "PDF Watermark", - "path": "overview/pdf-services-api/howtos/pdf-watermark-api.md" + title: 'PDF Watermark', + path: 'overview/pdf-services-api/howtos/pdf-watermark-api.md' }, { - "title": "Protect PDF", - "path": "overview/pdf-services-api/howtos/protect-pdf.md" + title: 'Protect PDF', + path: 'overview/pdf-services-api/howtos/protect-pdf.md' }, { - "title": "Remove Protection", - "path": "overview/pdf-services-api/howtos/remove-protection.md" + title: 'Remove Protection', + path: 'overview/pdf-services-api/howtos/remove-protection.md' }, { - "title": "Reorder Pages", - "path": "overview/pdf-services-api/howtos/reorder-pages.md" + title: 'Reorder Pages', + path: 'overview/pdf-services-api/howtos/reorder-pages.md' }, { - "title": "Replace Pages", - "path": "overview/pdf-services-api/howtos/replace-pages.md" + title: 'Replace Pages', + path: 'overview/pdf-services-api/howtos/replace-pages.md' }, { - "title": "Rotate Pages", - "path": "overview/pdf-services-api/howtos/rotate-pages.md" + title: 'Rotate Pages', + path: 'overview/pdf-services-api/howtos/rotate-pages.md' }, { - "title": "SDK Utilities", - "path": "overview/pdf-services-api/howtos/sdk-utilities.md" + title: 'SDK Utilities', + path: 'overview/pdf-services-api/howtos/sdk-utilities.md' }, { - "title": "Split PDF", - "path": "overview/pdf-services-api/howtos/split-pdf.md" + title: 'Split PDF', + path: 'overview/pdf-services-api/howtos/split-pdf.md' } ] } From dc6c9b450a9e9eb99811522d5d82b47d31547d4f Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Wed, 16 Oct 2024 17:13:46 +0530 Subject: [PATCH 26/39] update --- .../howtos/pdf-accessibility-checker-api.md | 2 +- .../howtos/pdf-watermark-api.md | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index e997dc5b2..bc1ee9cb2 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -189,7 +189,7 @@ namespace PDFAccessibilityCheckerWithOptions #### Node JS ```javascript -// Get the samples from http://www.adobe.com/go/pdftoolsapi_node_sample +// Get the samples from https://github.com/adobe/pdfservices-node-sdk-samples // Run the sample: // node src/pdfaccessibilitychecker/pdf-accessibility-checker-with-options.js const { diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index c82a2cf6d..0ab5a06aa 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -344,11 +344,11 @@ class PDFWatermark: def __init__(self): try: pdf_file = open("src/resources/watermarkPDFInput.pdf", 'rb') - input_stream = pdf_file.read() + source_file_input_stream = pdf_file.read() pdf_file.close() pdf_file = open("src/resources/watermark.pdf", 'rb') - watermark_asset = pdf_file.read() + watermark_file_input_stream = pdf_file.read() pdf_file.close() # Initial setup, create credentials instance @@ -361,8 +361,8 @@ class PDFWatermark: # Creates an asset(s) from source file(s) and upload - input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) - watermark_asset = pdf_services.upload(input_stream=watermark_asset, mime_type=PDFServicesMediaType.PDF) + input_asset = pdf_services.upload(input_stream=source_file_input_stream, mime_type=PDFServicesMediaType.PDF) + watermark_asset = pdf_services.upload(input_stream=watermark_file_input_stream, mime_type=PDFServicesMediaType.PDF) watermark_appearance = WatermarkAppearance(appear_on_foreground=True, opacity=50) @@ -371,19 +371,19 @@ class PDFWatermark: page_ranges.add_range(8, 10) # Create parameters for the job - watermark_params = WatermarkParams(page_ranges=page_ranges, watermark_appearance=watermark_appearance) + pdf_watermark_params = PDFWatermarkParams(page_ranges=page_ranges, watermark_appearance=watermark_appearance) # Creates a new job instance - watermark_job = PDFWatermarkJob(input_asset=input_asset, watermark_asset=watermark_asset, - watermark_params=watermark_params) + pdf_watermark_job = PDFWatermarkJob(input_asset=input_asset, watermark_asset=watermark_asset, + pdf_watermark_params=pdf_watermark_params) # Submit the job and gets the job result - location = pdf_services.submit(watermark_job) - pdf_services_response = pdf_services.get_job_result(location, WatermarkResult) + location = pdf_services.submit(pdf_watermark_job) + pdf_services_response = pdf_services.get_job_result(location, PDFWatermarkResult) # Get content from the resulting asset(s) - watermark_result: CloudAsset = pdf_services_response.get_result().get_asset() - stream_asset: StreamAsset = pdf_services.get_content(watermark_result) + pdf_watermark_result: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(pdf_watermark_result) # Creates an output stream and copy stream asset's content to it output_file_path = 'output/pdfWatermark.pdf' From 59fb35893bdf026ad6faa2f302b28fedcbdc3e42 Mon Sep 17 00:00:00 2001 From: Jasnoor Singh Date: Thu, 17 Oct 2024 15:05:15 +0530 Subject: [PATCH 27/39] Py Quickstarts Fix --- .../quickstarts/python/index.md | 21 +++++++++++++++++ .../quickstarts/python/index.md | 21 +++++++++++++---- .../quickstarts/python/index.md | 23 +++++++++++++++++++ .../quickstarts/python/index.md | 23 +++++++++++++++---- .../quickstarts/python/index.md | 4 ++-- 5 files changed, 80 insertions(+), 12 deletions(-) diff --git a/src/pages/overview/document-generation-api/quickstarts/python/index.md b/src/pages/overview/document-generation-api/quickstarts/python/index.md index 9cc6f0460..19b59d21f 100644 --- a/src/pages/overview/document-generation-api/quickstarts/python/index.md +++ b/src/pages/overview/document-generation-api/quickstarts/python/index.md @@ -204,9 +204,30 @@ with open(output_file_path, "wb") as file: Here's the complete application (`src/documentmerge/merge_document_to_pdf.py`): ```python +import json +import logging +import os +from datetime import datetime + +from adobe.pdfservices.operation.auth.service_principal_credentials import ServicePrincipalCredentials +from adobe.pdfservices.operation.exception.exceptions import ServiceApiException, ServiceUsageException, SdkException +from adobe.pdfservices.operation.io.cloud_asset import CloudAsset +from adobe.pdfservices.operation.io.stream_asset import StreamAsset +from adobe.pdfservices.operation.pdf_services import PDFServices +from adobe.pdfservices.operation.pdf_services_media_type import PDFServicesMediaType +from adobe.pdfservices.operation.pdfjobs.jobs.document_merge_job import DocumentMergeJob +from adobe.pdfservices.operation.pdfjobs.params.documentmerge.document_merge_params import DocumentMergeParams +from adobe.pdfservices.operation.pdfjobs.params.documentmerge.output_format import OutputFormat +from adobe.pdfservices.operation.pdfjobs.result.document_merge_result import DocumentMergePDFResult + # Initialize the logger logging.basicConfig(level=logging.INFO) +# This sample illustrates how to merge the Word based document template with the input JSON data to generate +# the output document in the PDF format. +# +# Refer to README.md for instructions on how to run the samples. + class MergeDocumentToPDF: def __init__(self): try: diff --git a/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/python/index.md b/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/python/index.md index f679d0e77..496e6254a 100644 --- a/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/python/index.md +++ b/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/python/index.md @@ -102,7 +102,7 @@ This defines what our output directory will be and optionally deletes it if it a 4) Now, let's create an asset from source file and upload. ```python -file = open('src/resources/autotagPDFInput.pdf', 'rb') +file = open('./autotagPDFInput.pdf', 'rb') input_stream = file.read() file.close() @@ -140,19 +140,30 @@ with open(output_file_path, "wb") as file: Here's the complete application (`autotag.py`): ```python +import logging +import os +from datetime import datetime + +from adobe.pdfservices.operation.auth.service_principal_credentials import ServicePrincipalCredentials +from adobe.pdfservices.operation.exception.exceptions import ServiceApiException, ServiceUsageException, SdkException +from adobe.pdfservices.operation.io.cloud_asset import CloudAsset +from adobe.pdfservices.operation.io.stream_asset import StreamAsset +from adobe.pdfservices.operation.pdf_services import PDFServices +from adobe.pdfservices.operation.pdf_services_media_type import PDFServicesMediaType +from adobe.pdfservices.operation.pdfjobs.jobs.autotag_pdf_job import AutotagPDFJob +from adobe.pdfservices.operation.pdfjobs.result.autotag_pdf_result import AutotagPDFResult + # Initialize the logger logging.basicConfig(level=logging.INFO) - -# # This sample illustrates how to generate a tagged PDF. # # Refer to README.md for instructions on how to run the samples. -# + class AutoTagPDF: def __init__(self): try: - file = open('src/resources/autotagPDFInput.pdf', 'rb') + file = open('./autotagPDFInput.pdf', 'rb') input_stream = file.read() file.close() diff --git a/src/pages/overview/pdf-electronic-seal-api/quickstarts/python/index.md b/src/pages/overview/pdf-electronic-seal-api/quickstarts/python/index.md index 614c93cbc..01808fc16 100644 --- a/src/pages/overview/pdf-electronic-seal-api/quickstarts/python/index.md +++ b/src/pages/overview/pdf-electronic-seal-api/quickstarts/python/index.md @@ -205,9 +205,32 @@ with open(output_file_path, "wb") as file: Here's the complete application (`src/electronicseal/electronic_seal.py`): ```python +import logging +import os +from datetime import datetime + +from adobe.pdfservices.operation.auth.service_principal_credentials import ServicePrincipalCredentials +from adobe.pdfservices.operation.exception.exceptions import ServiceApiException, ServiceUsageException, SdkException +from adobe.pdfservices.operation.io.cloud_asset import CloudAsset +from adobe.pdfservices.operation.io.stream_asset import StreamAsset +from adobe.pdfservices.operation.pdf_services import PDFServices +from adobe.pdfservices.operation.pdf_services_media_type import PDFServicesMediaType +from adobe.pdfservices.operation.pdfjobs.jobs.eseal_job import PDFElectronicSealJob +from adobe.pdfservices.operation.pdfjobs.params.eseal.csc_auth_context import CSCAuthContext +from adobe.pdfservices.operation.pdfjobs.params.eseal.csc_credentials import CSCCredentials +from adobe.pdfservices.operation.pdfjobs.params.eseal.document_level_permission import DocumentLevelPermission +from adobe.pdfservices.operation.pdfjobs.params.eseal.electronic_seal_params import PDFElectronicSealParams +from adobe.pdfservices.operation.pdfjobs.params.eseal.field_location import FieldLocation +from adobe.pdfservices.operation.pdfjobs.params.eseal.field_options import FieldOptions +from adobe.pdfservices.operation.pdfjobs.result.eseal_pdf_result import ESealPDFResult + # Initialize the logger logging.basicConfig(level=logging.INFO) +# This sample illustrates how to apply electronic seal over the PDF document using default appearance options. +# +# Refer to README.md for instructions on how to run the samples. + class ElectronicSeal: def __init__(self): try: diff --git a/src/pages/overview/pdf-extract-api/quickstarts/python/index.md b/src/pages/overview/pdf-extract-api/quickstarts/python/index.md index 7cc402dfb..f8d2f93a3 100644 --- a/src/pages/overview/pdf-extract-api/quickstarts/python/index.md +++ b/src/pages/overview/pdf-extract-api/quickstarts/python/index.md @@ -85,7 +85,7 @@ zip_file = "./ExtractTextInfoFromPDF.zip" if os.path.isfile(zip_file): os.remove(zip_file) -input_pdf = "./Adobe Extract API Sample.pdf" +input_pdf = "./extractPdfInput.pdf" ``` This defines what our output ZIP will be and optionally deletes it if it already exists. Then we define what PDF will be extracted. (You can download the source we used [here](/Adobe%20Extract%20API%20Sample.pdf).) In a real application, these values would be typically be dynamic. @@ -163,19 +163,32 @@ for element in data["elements"]: Here's the complete application (`extract.py`): ```python +import logging +import os +from datetime import datetime + +from adobe.pdfservices.operation.auth.service_principal_credentials import ServicePrincipalCredentials +from adobe.pdfservices.operation.exception.exceptions import ServiceApiException, ServiceUsageException, SdkException +from adobe.pdfservices.operation.pdf_services_media_type import PDFServicesMediaType +from adobe.pdfservices.operation.io.cloud_asset import CloudAsset +from adobe.pdfservices.operation.io.stream_asset import StreamAsset +from adobe.pdfservices.operation.pdf_services import PDFServices +from adobe.pdfservices.operation.pdfjobs.jobs.extract_pdf_job import ExtractPDFJob +from adobe.pdfservices.operation.pdfjobs.params.extract_pdf.extract_element_type import ExtractElementType +from adobe.pdfservices.operation.pdfjobs.params.extract_pdf.extract_pdf_params import ExtractPDFParams +from adobe.pdfservices.operation.pdfjobs.result.extract_pdf_result import ExtractPDFResult + # Initialize the logger logging.basicConfig(level=logging.INFO) - -# # This sample illustrates how to extract Text Information from PDF. # # Refer to README.md for instructions on how to run the samples & understand output zip file. -# + class ExtractTextInfoFromPDF: def __init__(self): try: - file = open('src/resources/extractPdfInput.pdf', 'rb') + file = open('./extractPdfInput.pdf', 'rb') input_stream = file.read() file.close() diff --git a/src/pages/overview/pdf-services-api/quickstarts/python/index.md b/src/pages/overview/pdf-services-api/quickstarts/python/index.md index 1192875f2..8bc889420 100644 --- a/src/pages/overview/pdf-services-api/quickstarts/python/index.md +++ b/src/pages/overview/pdf-services-api/quickstarts/python/index.md @@ -51,7 +51,7 @@ At this point, we've installed the Python SDK for Adobe PDF Services API as a de Our application will take a PDF, `Bodea Brochure.pdf` (downloadable from here) and convert it to a Microsoft Word document, `Bodea Brochure.docx`. -4) In your editor, open the directory where you previously copied the credentials. Create a new file, `autotag.py`. +4) In your editor, open the directory where you previously copied the credentials. Create a new file, `export_pdf_to_docx.py`. Now you're ready to begin coding. @@ -100,7 +100,7 @@ pdf_services = PDFServices(credentials=credentials) 4) Now, let's create an asset from source file and upload. ```python -file = open('src/resources/Bodea Brochure.pdf', 'rb') +file = open('./Bodea Brochure.pdf', 'rb') input_stream = file.read() file.close() From 314804d3e5143dd205bd7a398e0db89f8377dc04 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Thu, 17 Oct 2024 16:38:52 +0530 Subject: [PATCH 28/39] add more samples for watermark and checker --- gatsby-config.js | 8 +- .../howtos/pdf-accessibility-checker-api.md | 294 +++++++++++++++++ .../howtos/pdf-watermark-api.md | 307 +++++++++++++++++- src/pages/overview/releasenotes.md | 2 +- 4 files changed, 605 insertions(+), 6 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 5ef978b8b..08dda7360 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -277,13 +277,13 @@ module.exports = { title: 'Rotate Pages', path: 'overview/pdf-services-api/howtos/rotate-pages.md' }, - { - title: 'SDK Utilities', - path: 'overview/pdf-services-api/howtos/sdk-utilities.md' - }, { title: 'Split PDF', path: 'overview/pdf-services-api/howtos/split-pdf.md' + }, + { + title: 'SDK Utilities', + path: 'overview/pdf-services-api/howtos/sdk-utilities.md' } ] } diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index bc1ee9cb2..0a7b59dd9 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -23,6 +23,300 @@ This parameter specifies the ending page for the accessibility check. If "pageEn See our public API Reference for the [PDF Accessibility Checker API](../../../apis/#tag/PDF-Accessibility-Checker). +## Check accessibility for input PDF + +The sample below performs an accessibility check operation for a given PDF. + +Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. + + + +#### Java + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_java_samples +// Run the sample: +// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfaccessibilitychecker.PDFAccessibilityChecker +public class PDFAccessibilityChecker { + + private static final Logger LOGGER = LoggerFactory.getLogger(PDFAccessibilityChecker.class); + + public static void main(String[] args) { + + try ( + InputStream inputStream = Files + .newInputStream(new File("src/main/resources/accessibilityCheckerInput.pdf") + .toPath())) { + // Initial setup, create credentials instance + Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), + System.getenv("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Asset asset = pdfServices.upload(inputStream, PDFServicesMediaType.PDF.getMediaType()); + + // Creates a new job instance + PDFAccessibilityCheckerJob pdfAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(asset); + + // Submit the job and gets the job result + String location = pdfServices.submit(PDFAccessibilityCheckerJob); + PDFServicesResponse pdfServicesResponse = pdfServices + .getJobResult(location, PDFAccessibilityCheckerResult.class); + + // Get content from the resulting asset(s) + Asset resultAsset = pdfServicesResponse.getResult().getAsset(); + StreamAsset streamAsset = pdfServices.getContent(resultAsset); + + Asset report = pdfServicesResponse.getResult().getReport(); + StreamAsset streamAssetReport = pdfServices.getContent(report); + + String outputFilePath = "/output/pdfAccessibilityCheckerOutput.pdf"; + String outputFilePathReport = "/output/pdfAccessibilityCheckerReport.json"; + + LOGGER.info(String.format("Saving asset at %s", outputFilePath)); + LOGGER.info(String.format("Saving report at %s", outputFilePathReport)); + + new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); + new FileInfo(Directory.GetCurrentDirectory() + outputFilePathReport).Directory.Create(); + + OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePath).toPath()); + OutputStream outputStreamReport = Files.newOutputStream(new File(outputFilePathReport).toPath()); + + IOUtils.copy(streamAsset.getInputStream(), outputStream); + IOUtils.copy(streamAssetReport.getInputStream(), outputStreamReport); + + outputStream.close(); + outputStreamReport.close(); + } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { + System.out.println("Exception encountered while executing operation: "+ ex); + } + } +} +``` + +#### .NET + +```javascript +// Get the samples from https://www.adobe.com/go/pdftoolsapi_net_samples +// Run the sample: +// cd PDFAccessibilityChecker/ +// dotnet run PDFAccessibilityChecker.csproj +namespace PDFAccessibilityChecker +{ + public class Program { + private static readonly ILog log = LogManager.GetLogger(typeof (Program)); + + static void Main() { + //Configure the logging + ConfigureLogging(); + try { + // Initial setup, create credentials instance + ICredentials credentials = new ServicePrincipalCredentials( + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + using Stream inputStream = File.OpenRead(@"checkerPDFInput.pdf"); + IAsset inputDocumentAsset = pdfServices.Upload(inputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Create the PDF Accessibility Checker job instance + PDFAccessibilityCheckerJob pdfAccessibilityCheckerJob = new PDFAccessibilityCheckerJob(inputDocumentAsset); + + // Submits the job and gets the job result + String location = pdfServices.Submit(pdfAccessibilityCheckerJob); + PDFServicesResponse pdfServicesResponse = + pdfServices.GetJobResult (location, typeof (PDFAccessibilityCheckerResult)); + + // Get content from the resulting asset(s) + IAsset outputAsset = pdfServicesResponse.Result.Asset; + StreamAsset streamAsset = pdfServices.GetContent(outputAsset); + + IAsset outputReportAsset = pdfServicesResponse.Result.Report; + StreamAsset streamReportAsset = pdfServices.GetContent(outputReportAsset); + + // Creating output streams and copying stream asset's content to it + String outputPdfPath = '/output/accessibilityChecker.pdf'; + new FileInfo(Directory.GetCurrentDirectory() + outputPdfPath).Directory.Create(); + Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputPdfPath); + streamAsset.Stream.CopyTo(outputStream); + outputStream.Close(); + + String outputJSONPath = '/output/accessibilityChecker.json'; + new FileInfo(Directory.GetCurrentDirectory() + outputJSONPath).Directory.Create(); + Stream outputJSONStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputJSONPath); + streamReportAsset.Stream.CopyTo(outputJSONStream); + outputStream.Close(); + } catch (ServiceUsageException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (ServiceApiException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (SDKException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (IOException ex) { + log.Error("Exception encountered while executing operation", ex); + } catch (Exception ex) { + log.Error("Exception encountered while executing operation", ex); + } + } + + static void ConfigureLogging() { + ILoggerRepository + logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); + XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); + } + } +} +``` + +#### Node JS + +```javascript +// Get the samples from https://github.com/adobe/pdfservices-node-sdk-samples +// Run the sample: +// node src/pdfaccessibilitychecker/pdf-accessibility-checker.js +const { + ServicePrincipalCredentials, + PDFServices, + MimeType, + SDKError, + ServiceUsageError, + ServiceApiError, + PDFAccessibilityCheckerJob, + PDFAccessibilityCheckerResult +} = require("@adobe/pdfservices-node-sdk"); +const fs = require("fs"); + +(async () => { + let readStream; + try { + // Initial setup, create credentials instance + const credentials = new ServicePrincipalCredentials({ + clientId: process.env.PDF_SERVICES_CLIENT_ID, + clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET + }); + + // Creates a PDF Services instance + const pdfServices = new PDFServices({credentials}); + + // Creates an asset(s) from source file(s) and upload + readStream = fs.createReadStream("resources/accessibilityCheckerInput.pdf"); + const inputAsset = await pdfServices.upload({ + readStream, + mimeType: MimeType.PDF + }); + + // Create a new job instance + const job = new PDFAccessibilityCheckerJob({inputAsset}); + + // Submit the job and get the job result + const pollingURL = await pdfServices.submit({job}); + const pdfServicesResponse = await pdfServices.getJobResult({ + pollingURL, + resultType: PDFAccessibilityCheckerResult + }); + + // Get content from the resulting asset(s) + const resultAsset = pdfServicesResponse.result.asset; + const streamAsset = await pdfServices.getContent({asset: resultAsset}); + + const resultAssetReport = pdfServicesResponse.result.report; + const streamAssetReport = await pdfServices.getContent({asset: resultAssetReport}); + + // Creates an output stream and copy result asset's content to it + const outputFilePath = "output/PDFAccessibilityChecker.pdf" + const outputFilePathReport = "output/PDFAccessibilityChecker.json" + console.log(`Saving asset at ${outputFilePath}`); + console.log(`Saving asset at ${outputFilePathReport}`); + + let writeStream = fs.createWriteStream(outputFilePath); + streamAsset.readStream.pipe(writeStream); + writeStream = fs.createWriteStream(outputFilePathReport); + streamAssetReport.readStream.pipe(writeStream); + } catch (err) { + if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { + console.log("Exception encountered while executing operation", err); + } else { + console.log("Exception encountered while executing operation", err); + } + } finally { + readStream?.destroy(); + } +})(); +``` + +#### Python + +```javascript +# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples +# Run the sample: +# python src/PDFAccessibilityChecker/pdf_accessibility_checker.py + +class PDFAccessibilityChecker: + def __init__(self): + try: + pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') + input_stream = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) + + # Creates a new job instance + pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset) + + # Submit the job and gets the job result + location = pdf_services.submit(pdf_accessibility_checker_job) + pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) + + # Get content from the resulting asset(s) + result_asset: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(result_asset) + + report_asset: CloudAsset = pdf_services_response.get_result().get_report() + stream_report: StreamAsset = pdf_services.get_content(report_asset) + + output_file_path = 'output/accessibilitychecker.pdf' + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + output_file_path_json = 'output/accessibilitychecker.json' + with open(output_file_path_json, "wb") as file: + file.write(stream_report.get_input_stream()) + + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') + + + if __name__ == "__main__": + PDFAccessibilityChecker() +``` + +#### REST API + +```javascript +curl --location --request POST 'https://pdf-services.adobe.io/operation/accessibilitychecker' \ +--header 'x-api-key: {{Placeholder for client_id}}' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer {{Placeholder for token}}' \ +--data-raw '{ + "assetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f1878678e68" +}' +``` + + ## Check accessibility for specified pages The sample below performs an accessibility check operation for specified pages of a given PDF. diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index 0ab5a06aa..752bea245 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -45,6 +45,311 @@ The page ranges are specified as an array of objects whose length cannot exceed See our public API Reference for [PDF Watermark API](../../../apis/#tag/PDF-Watermark). +## Apply Watermark on Input PDF + +The sample below performs watermark operation applying watermark in foreground on all pages of a given PDF. + +Please refer to the [API usage guide](../api-usage.md) to understand how to use our APIs. + + + +#### Java + +```javascript +// Get the samples from https://github.com/adobe/pdfservices-java-sdk-samples +// Run the sample: +// mvn -f pom.xml exec:java -Dexec.mainClass=com.adobe.pdfservices.operation.samples.pdfwatermark.PDFWatermark + +package com.adobe.pdfservices.operation.samples.pdfwatermark; + +public class PDFWatermark { + + // Initialize the logger + private static final Logger LOGGER = LoggerFactory.getLogger(PDFWatermark.class); + + public static void main(String[] args) { + + try ( + InputStream sourceFileInputStream = Files.newInputStream(new File("src/main/resources/pdfWatermarkInput.pdf").toPath()); + InputStream watermarkFileInputStream = Files.newInputStream(new File("src/main/resources/watermark.pdf").toPath())) { + + // Initial setup, create credentials instance + Credentials credentials = new ServicePrincipalCredentials(System.getenv("PDF_SERVICES_CLIENT_ID"), System.getenv("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Asset inputDocumentAsset = pdfServices.upload(sourceFileInputStream, PDFServicesMediaType.PDF.getMediaType()); + Asset watermarkDocumentAsset = pdfServices.upload(watermarkFileInputStream, PDFServicesMediaType.PDF.getMediaType()); + + // Creates a new job instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates a new job instance + PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset); + + // Submit the job and gets the job result + String location = pdfServices.submit(pdfWatermarkJob); + PDFServicesResponse pdfServicesResponse = pdfServices.getJobResult(location, PDFWatermarkResult.class); + + // Get content from the resulting asset(s) + Asset resultAsset = pdfServicesResponse.getResult().getAsset(); + StreamAsset streamAsset = pdfServices.getContent(resultAsset); + + // Creates an output stream and copy stream asset's content to it + Files.createDirectories(Paths.get("output/")); + OutputStream outputStream = Files.newOutputStream(new File("output/pdfWatermarkWithOptionsOutput.pdf").toPath()); + LOGGER.info("Saving asset at output/pdfWatermarkWithOptionsOutput.pdf"); + IOUtils.copy(streamAsset.getInputStream(), outputStream); + outputStream.close(); + } catch (ServiceApiException | IOException | SDKException | ServiceUsageException ex) { + LOGGER.error("Exception encountered while executing operation", ex); + } + } +} +``` + +#### .NET + +```javascript +// Get the samples from https://github.com/adobe/PDFServices.NET.SDK.Samples +// Run the sample: +// cd PDFWatermark/ +// dotnet run PDFWatermark.csproj + +namespace PDFWatermark +{ + class Program + { + // Initialize the logger. + private static readonly ILog log = LogManager.GetLogger(typeof(Program)); + + static void Main() + { + //Configure the logging + ConfigureLogging(); + + try + { + // Initial setup, create credentials instance + ICredentials credentials = new ServicePrincipalCredentials( + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_ID"), + Environment.GetEnvironmentVariable("PDF_SERVICES_CLIENT_SECRET")); + + // Creates a PDF Services instance + PDFServices pdfServices = new PDFServices(credentials); + + // Creates an asset(s) from source file(s) and upload + Stream sourceFileInputStream = File.OpenRead(@"pdfWatermarkInput.pdf"); + IAsset inputDocumentAsset = pdfServices.Upload(sourceFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Creates a watermark asset from source file(s) and upload + Stream watermarkFileInputStream = File.OpenRead(@"watermark.pdf"); + IAsset watermarkDocumentAsset = pdfServices.Upload(watermarkFileInputStream, PDFServicesMediaType.PDF.GetMIMETypeValue()); + + // Submits the job and gets the job result + PDFWatermarkJob pdfWatermarkJob = new PDFWatermarkJob(inputDocumentAsset, watermarkDocumentAsset); + String location = pdfServices.Submit(pdfWatermarkJob); + + // Get content from the resulting asset(s) + PDFServicesResponse pdfServicesResponse = + pdfServices.GetJobResult(location, typeof(PDFWatermarkResult)); + + // Creating output streams and copying stream asset's content to it + IAsset resultAsset = pdfServicesResponse.Result.Asset; + StreamAsset streamAsset = pdfServices.GetContent(resultAsset); + + // Creating output streams and copying stream asset's content to it + String outputFilePath = "/output/pdfWatermarkWithOptionsOutput.pdf"; + new FileInfo(Directory.GetCurrentDirectory() + outputFilePath).Directory.Create(); + Stream outputStream = File.OpenWrite(Directory.GetCurrentDirectory() + outputFilePath); + streamAsset.Stream.CopyTo(outputStream); + outputStream.Close(); + } + catch (ServiceUsageException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (ServiceApiException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (SDKException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (IOException ex) + { + log.Error("Exception encountered while executing operation", ex); + } + catch (Exception ex) + { + log.Error("Exception encountered while executing operation", ex); + } + } + + static void ConfigureLogging() + { + ILoggerRepository logRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); + XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config")); + } + } +} +``` + +#### Node JS + +```javascript +// Get the samples from https://github.com/adobe/pdfservices-node-sdk-samples +// Run the sample: +// node src/pdfwatermark/pdf-watermark.js + +const { + ServicePrincipalCredentials, + PDFServices, + MimeType, + PDFWatermarkJob, + PDFWatermarkResult, + SDKError, + ServiceUsageError, + ServiceApiError, +} = require("@adobe/pdfservices-node-sdk"); +const fs = require("fs"); + +(async () => { + let sourceFileReadStream; + let watermarkFileReadStream; + try { + // Initial setup, create credentials instance + const credentials = new ServicePrincipalCredentials({ + clientId: process.env.PDF_SERVICES_CLIENT_ID, + clientSecret: process.env.PDF_SERVICES_CLIENT_SECRET + }); + + // Creates a PDF Services instance + const pdfServices = new PDFServices({credentials}); + + // Creates an asset(s) from source file(s) and upload + sourceFileReadStream = fs.createReadStream("resources/watermarkPDFInput.pdf"); + watermarkFileReadStream = fs.createReadStream("resources/watermark.pdf"); + + const [inputAsset, watermarkAsset] = await pdfServices.uploadAssets({ + streamAssets: [{ + readStream: sourceFileReadStream, + mimeType: MimeType.PDF + }, { + readStream: waterMarkReadStream, + mimeType: MimeType.PDF + }] + }); + + // Creates a new job instance + const job = new PDFWatermarkJob({ + inputAsset: inputAsset, + watermarkAsset: watermarkAsset + }); + + // Submit the job and get the job result + const pollingURL = await pdfServices.submit({job}); + const pdfServicesResponse = await pdfServices.getJobResult({ + pollingURL, + resultType: PDFWatermarkResult + }); + + // Get content from the resulting asset(s) + const resultAsset = pdfServicesResponse.result.asset; + const streamAsset = await pdfServices.getContent({asset: resultAsset}); + + // Creates a write stream and copy stream asset's content to it + const outputFilePath = "./pdfWatermarkOutput.pdf"; + console.log(`Saving asset at ${outputFilePath}`); + + const writeStream = fs.createWriteStream(outputFilePath); + streamAsset.readStream.pipe(writeStream); + } catch (err) { + if (err instanceof SDKError || err instanceof ServiceUsageError || err instanceof ServiceApiError) { + console.log("Exception encountered while executing operation", err); + } else { + console.log("Exception encountered while executing operation", err); + } + } finally { + sourceFileReadStream?.destroy(); + watermarkFileReadStream?.destroy(); + } +})(); +``` + +#### Python + +```javascript +# Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples +# Run the sample: +# python src/pdfwatermark/watermark_pdf.py + +# Initialize the logger +logging.basicConfig(level=logging.INFO) + +class PDFWatermark: + def __init__(self): + try: + pdf_file = open("src/resources/watermarkPDFInput.pdf", 'rb') + source_file_input_stream = pdf_file.read() + pdf_file.close() + + pdf_file = open("src/resources/watermark.pdf", 'rb') + watermark_file_input_stream = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=source_file_input_stream, mime_type=PDFServicesMediaType.PDF) + watermark_asset = pdf_services.upload(input_stream=watermark_file_input_stream, mime_type=PDFServicesMediaType.PDF) + + # Creates a new job instance + pdf_watermark_job = PDFWatermarkJob(input_asset=input_asset, watermark_asset=watermark_asset) + + # Submit the job and gets the job result + location = pdf_services.submit(pdf_watermark_job) + pdf_services_response = pdf_services.get_job_result(location, PDFWatermarkResult) + + # Get content from the resulting asset(s) + pdf_watermark_result: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(pdf_watermark_result) + + # Creates an output stream and copy stream asset's content to it + output_file_path = 'output/pdfWatermark.pdf' + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') + + if __name__ == "__main__": + PDFWatermark:() +``` + +#### REST API + +```javascript +curl --location --request POST 'https://pdf-services.adobe.io/operation/addwatermark' \ +--header 'x-api-key: {{Placeholder for client_id}}' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer {{Placeholder for token}}' \ +--data-raw '{ + "inputDocumentAssetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f68", + "watermarkDocumentAssetID": "urn:aaid:AS:UE1:54cbf87f-d7f5-4918-8e4b-9f1878678e68" +}' +``` + ## Apply Watermark on specified pages The sample below performs watermark operation applying watermark in foreground on specified pages of a given PDF. @@ -335,7 +640,7 @@ const fs = require("fs"); ```javascript # Get the samples from https://github.com/adobe/pdfservices-python-sdk-samples # Run the sample: -# python src/watermarkpdf/watermark_pdf_with_params.py +# python src/pdfwatermark/watermark_pdf_with_params.py # Initialize the logger logging.basicConfig(level=logging.INFO) diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 4f5a6df3d..f71c1cbae 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -323,4 +323,4 @@ Upgrading to the latest SDK should not break existing applications. ### October, 2024; Java SDK 4.2.0 and NodeJS, .NET, Python SDK 4.1.0 minor release -- PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs and REST APIs. +- PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs. From cab2800e78ea8f15d3fed56b8abee06af07b85f5 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Thu, 17 Oct 2024 18:13:19 +0530 Subject: [PATCH 29/39] update --- .../howtos/pdf-accessibility-checker-api.md | 2 +- src/pages/overview/releasenotes.md | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index 0a7b59dd9..a70a6941e 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -25,7 +25,7 @@ See our public API Reference for the [PDF Accessibility Checker API](../../../ap ## Check accessibility for input PDF -The sample below performs an accessibility check operation for a given PDF. +The sample below performs an accessibility check operation on a given PDF. Please refer to the [API usage guide](../gettingstarted.md) to understand how to use our APIs. diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index f71c1cbae..4e7838ca4 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -181,6 +181,15 @@ Upgrading to the latest SDK should not break existing applications. ## Change history + +### October 22, 2024; Java SDK 4.2.0 and NodeJS, .NET, Python SDK 4.1.0 minor release + +- PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs. + +### September 10, 2024; Adobe Document Generation Server Side Release + +- Enhanced support for [JSONata functions](../document-generation-api/templatetags/#jsonata-functions) in Table Tag with Markers. + ### August 23, 2024; Added new features for Document Generation API and updated Acrobat Service API postman collection - Added base64 format support for inline images. @@ -320,7 +329,3 @@ Upgrading to the latest SDK should not break existing applications. ### June, 2023; Adobe Document Generation Server Side Release - Added support for [External Storage](../pdf-services-api/howtos/pdf-external-storage-sol/) in Document Generation API. - -### October, 2024; Java SDK 4.2.0 and NodeJS, .NET, Python SDK 4.1.0 minor release - -- PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs. From b065dedadf7ee8230b3d1bc6be1461a502206930 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Tue, 22 Oct 2024 14:13:58 +0530 Subject: [PATCH 30/39] syntax fix --- .../howtos/pdf-accessibility-checker-api.md | 164 +++++++++--------- .../howtos/pdf-watermark-api.md | 4 +- 2 files changed, 84 insertions(+), 84 deletions(-) diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md index a70a6941e..a9fca7714 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-accessibility-checker-api.md @@ -258,48 +258,48 @@ const fs = require("fs"); class PDFAccessibilityChecker: def __init__(self): - try: - pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') - input_stream = pdf_file.read() - pdf_file.close() - - # Initial setup, create credentials instance - credentials = ServicePrincipalCredentials( - client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), - client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) - - # Creates a PDF Services instance - pdf_services = PDFServices(credentials=credentials) - - # Creates an asset(s) from source file(s) and upload - input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) - - # Creates a new job instance - pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset) - - # Submit the job and gets the job result - location = pdf_services.submit(pdf_accessibility_checker_job) - pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) - - # Get content from the resulting asset(s) - result_asset: CloudAsset = pdf_services_response.get_result().get_asset() - stream_asset: StreamAsset = pdf_services.get_content(result_asset) + try: + pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') + input_stream = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) + + # Creates a new job instance + pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset) + + # Submit the job and gets the job result + location = pdf_services.submit(pdf_accessibility_checker_job) + pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) + + # Get content from the resulting asset(s) + result_asset: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(result_asset) + + report_asset: CloudAsset = pdf_services_response.get_result().get_report() + stream_report: StreamAsset = pdf_services.get_content(report_asset) + + output_file_path = 'output/accessibilitychecker.pdf' + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + output_file_path_json = 'output/accessibilitychecker.json' + with open(output_file_path_json, "wb") as file: + file.write(stream_report.get_input_stream()) - report_asset: CloudAsset = pdf_services_response.get_result().get_report() - stream_report: StreamAsset = pdf_services.get_content(report_asset) + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') - output_file_path = 'output/accessibilitychecker.pdf' - with open(output_file_path, "wb") as file: - file.write(stream_asset.get_input_stream()) - output_file_path_json = 'output/accessibilitychecker.json' - with open(output_file_path_json, "wb") as file: - file.write(stream_report.get_input_stream()) - - except (ServiceApiException, ServiceUsageException, SdkException) as e: - logging.exception(f'Exception encountered while executing operation: {e}') - - if __name__ == "__main__": PDFAccessibilityChecker() ``` @@ -568,51 +568,51 @@ const fs = require("fs"); class PDFAccessibilityChecker: def __init__(self): - try: - pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') - input_stream = pdf_file.read() - pdf_file.close() - - # Initial setup, create credentials instance - credentials = ServicePrincipalCredentials( - client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), - client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) - - # Creates a PDF Services instance - pdf_services = PDFServices(credentials=credentials) - - # Creates an asset(s) from source file(s) and upload - input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) - - # Create parameters for the job - pdf_accessibility_checker_params = PDFAccessibilityCheckerParams(page_start=1, page_end=5) - - # Creates a new job instance - pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset, - pdf_accessibility_checker_params=pdf_accessibility_checker_params) - - # Submit the job and gets the job result - location = pdf_services.submit(pdf_accessibility_checker_job) - pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) - - # Get content from the resulting asset(s) - result_asset: CloudAsset = pdf_services_response.get_result().get_asset() - stream_asset: StreamAsset = pdf_services.get_content(result_asset) - - report_asset: CloudAsset = pdf_services_response.get_result().get_report() - stream_report: StreamAsset = pdf_services.get_content(report_asset) + try: + pdf_file = open("src/resources/CheckerPDFInput.pdf", 'rb') + input_stream = pdf_file.read() + pdf_file.close() + + # Initial setup, create credentials instance + credentials = ServicePrincipalCredentials( + client_id=os.getenv('PDF_SERVICES_CLIENT_ID'), + client_secret=os.getenv('PDF_SERVICES_CLIENT_SECRET')) + + # Creates a PDF Services instance + pdf_services = PDFServices(credentials=credentials) + + # Creates an asset(s) from source file(s) and upload + input_asset = pdf_services.upload(input_stream=input_stream, mime_type=PDFServicesMediaType.PDF) + + # Create parameters for the job + pdf_accessibility_checker_params = PDFAccessibilityCheckerParams(page_start=1, page_end=5) + + # Creates a new job instance + pdf_accessibility_checker_job = PDFAccessibilityCheckerJob(input_asset=input_asset, + pdf_accessibility_checker_params=pdf_accessibility_checker_params) + + # Submit the job and gets the job result + location = pdf_services.submit(pdf_accessibility_checker_job) + pdf_services_response = pdf_services.get_job_result(location, PDFAccessibilityCheckerResult) + + # Get content from the resulting asset(s) + result_asset: CloudAsset = pdf_services_response.get_result().get_asset() + stream_asset: StreamAsset = pdf_services.get_content(result_asset) + + report_asset: CloudAsset = pdf_services_response.get_result().get_report() + stream_report: StreamAsset = pdf_services.get_content(report_asset) + + output_file_path = 'output/accessibilitychecker.pdf' + with open(output_file_path, "wb") as file: + file.write(stream_asset.get_input_stream()) + + output_file_path_json = 'output/accessibilitychecker.json' + with open(output_file_path_json, "wb") as file: + file.write(stream_report.get_input_stream()) - output_file_path = 'output/accessibilitychecker.pdf' - with open(output_file_path, "wb") as file: - file.write(stream_asset.get_input_stream()) + except (ServiceApiException, ServiceUsageException, SdkException) as e: + logging.exception(f'Exception encountered while executing operation: {e}') - output_file_path_json = 'output/accessibilitychecker.json' - with open(output_file_path_json, "wb") as file: - file.write(stream_report.get_input_stream()) - - except (ServiceApiException, ServiceUsageException, SdkException) as e: - logging.exception(f'Exception encountered while executing operation: {e}') - if __name__ == "__main__": PDFAccessibilityChecker() diff --git a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md index 752bea245..e917e4f4a 100644 --- a/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md +++ b/src/pages/overview/pdf-services-api/howtos/pdf-watermark-api.md @@ -334,7 +334,7 @@ class PDFWatermark: logging.exception(f'Exception encountered while executing operation: {e}') if __name__ == "__main__": - PDFWatermark:() + PDFWatermark() ``` #### REST API @@ -699,7 +699,7 @@ class PDFWatermark: logging.exception(f'Exception encountered while executing operation: {e}') if __name__ == "__main__": - PDFWatermark:() + PDFWatermark() ``` #### REST API From 08f2364bb0e8fdd92ea60a67124d2b19429f3ca2 Mon Sep 17 00:00:00 2001 From: Jasnoor Singh <117148595+jasnoors@users.noreply.github.com> Date: Mon, 4 Nov 2024 12:25:41 +0530 Subject: [PATCH 31/39] DCSV-97016 bug fix Co-authored-by: Jasnoor Singh --- src/pages/overview/pdf-services-api/howtos/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/overview/pdf-services-api/howtos/index.md b/src/pages/overview/pdf-services-api/howtos/index.md index 6a3079982..0f979b6b6 100644 --- a/src/pages/overview/pdf-services-api/howtos/index.md +++ b/src/pages/overview/pdf-services-api/howtos/index.md @@ -43,7 +43,7 @@ the details below, you can refer to working code samples: - [Java](https://github.com/adobe/pdfservices-java-sdk-samples/blob/master/src/main/java/com/adobe/pdfservices/operation/samples/customconfigurations/ExportPDFWithSpecifiedRegion.java) - [.NET](https://github.com/adobe/PDFServices.NET.SDK.Samples/blob/master/ExportPDFWithSpecifiedRegion/Program.cs) - [Node.js](https://github.com/adobe/pdfservices-node-sdk-samples/blob/master/src/customconfigurations/export-pdf-with-specified-region.js) -- [Python](https://github.com/adobe/pdfservices-python-sdk-samples/blob/master/src/extractpdf/extract_txt_from_pdf_with_specified_region.py) +- [Python](https://github.com/adobe/pdfservices-python-sdk-samples/blob/main/src/customconfigurations/export_pdf_with_specified_region.py) Available properties: From ff082c60af75da937a48da117f4a10a3e3e27532 Mon Sep 17 00:00:00 2001 From: Sufia Ashraf Date: Tue, 5 Nov 2024 14:38:59 +0530 Subject: [PATCH 32/39] release 4.2.0 --- src/pages/overview/releasenotes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 4e7838ca4..402b96315 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -182,7 +182,7 @@ Upgrading to the latest SDK should not break existing applications. ## Change history -### October 22, 2024; Java SDK 4.2.0 and NodeJS, .NET, Python SDK 4.1.0 minor release +### November 06, 2024; Java SDK 4.2.0 and NodeJS, .NET, Python SDK 4.1.0 minor release - PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs. From 0615bfaf938cfb88a0dd0509ab9fe27d129b101b Mon Sep 17 00:00:00 2001 From: mahour Date: Tue, 5 Nov 2024 21:09:57 +0530 Subject: [PATCH 33/39] updated version for sdk watermark and a11y operations --- .../document-generation-api/quickstarts/dotnet/index.md | 2 +- .../document-generation-api/quickstarts/java/index.md | 2 +- .../pdf-accessibility-auto-tag-api/gettingstarted.md | 2 +- .../quickstarts/dotnet/index.md | 2 +- .../quickstarts/java/index.md | 2 +- .../overview/pdf-electronic-seal-api/gettingstarted.md | 2 +- .../pdf-electronic-seal-api/quickstarts/java/index.md | 2 +- src/pages/overview/pdf-extract-api/gettingstarted.md | 2 +- .../overview/pdf-extract-api/quickstarts/dotnet/index.md | 2 +- .../overview/pdf-extract-api/quickstarts/java/index.md | 2 +- src/pages/overview/pdf-services-api/gettingstarted.md | 2 +- .../overview/pdf-services-api/quickstarts/dotnet/index.md | 2 +- .../overview/pdf-services-api/quickstarts/java/index.md | 2 +- src/pages/overview/releasenotes.md | 8 ++++---- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/pages/overview/document-generation-api/quickstarts/dotnet/index.md b/src/pages/overview/document-generation-api/quickstarts/dotnet/index.md index 7c9995a88..a18223e5b 100644 --- a/src/pages/overview/document-generation-api/quickstarts/dotnet/index.md +++ b/src/pages/overview/document-generation-api/quickstarts/dotnet/index.md @@ -55,7 +55,7 @@ To complete this guide, you will need: - + diff --git a/src/pages/overview/document-generation-api/quickstarts/java/index.md b/src/pages/overview/document-generation-api/quickstarts/java/index.md index 9416119bc..7cb5eaac0 100644 --- a/src/pages/overview/document-generation-api/quickstarts/java/index.md +++ b/src/pages/overview/document-generation-api/quickstarts/java/index.md @@ -63,7 +63,7 @@ To complete this guide, you will need: UTF-8 11 11 - 4.1.1 + 4.2.0 diff --git a/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md b/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md index ffd063f91..b25cbd12c 100644 --- a/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md +++ b/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md @@ -637,7 +637,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 1. After downloading the package zip, run following command ``` -pip hash /pdfservices-sdk-4.0.0.tar.gz +pip hash /pdfservices-sdk-4.1.0.tar.gz ``` 1. Above command will return the hash of downloaded package. diff --git a/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/dotnet/index.md b/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/dotnet/index.md index 1350902cd..44ae89c41 100644 --- a/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/dotnet/index.md +++ b/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/dotnet/index.md @@ -56,7 +56,7 @@ To complete this guide, you will need: - + diff --git a/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/java/index.md b/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/java/index.md index bdf540467..993aa9821 100644 --- a/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/java/index.md +++ b/src/pages/overview/pdf-accessibility-auto-tag-api/quickstarts/java/index.md @@ -63,7 +63,7 @@ To complete this guide, you will need: UTF-8 11 11 - 4.1.1 + 4.2.0 diff --git a/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md b/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md index bcb1d52ef..effce4c49 100644 --- a/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md +++ b/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md @@ -686,7 +686,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 1. After downloading the package zip, run following command ``` -pip hash /pdfservices-sdk-4.0.0.tar.gz +pip hash /pdfservices-sdk-4.1.0.tar.gz ``` 2. Above command will return the hash of downloaded package. diff --git a/src/pages/overview/pdf-electronic-seal-api/quickstarts/java/index.md b/src/pages/overview/pdf-electronic-seal-api/quickstarts/java/index.md index dac10268a..c2674528f 100644 --- a/src/pages/overview/pdf-electronic-seal-api/quickstarts/java/index.md +++ b/src/pages/overview/pdf-electronic-seal-api/quickstarts/java/index.md @@ -63,7 +63,7 @@ To complete this guide, you will need: UTF-8 11 11 - 4.1.1 + 4.2.0 diff --git a/src/pages/overview/pdf-extract-api/gettingstarted.md b/src/pages/overview/pdf-extract-api/gettingstarted.md index 4341b6b30..7d1726c34 100644 --- a/src/pages/overview/pdf-extract-api/gettingstarted.md +++ b/src/pages/overview/pdf-extract-api/gettingstarted.md @@ -637,7 +637,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 1. After downloading the package zip, run following command ``` -pip hash /pdfservices-sdk-4.0.0.tar.gz +pip hash /pdfservices-sdk-4.1.0.tar.gz ``` 1. Above command will return the hash of downloaded package. diff --git a/src/pages/overview/pdf-extract-api/quickstarts/dotnet/index.md b/src/pages/overview/pdf-extract-api/quickstarts/dotnet/index.md index e1524fe38..ff658c9c6 100644 --- a/src/pages/overview/pdf-extract-api/quickstarts/dotnet/index.md +++ b/src/pages/overview/pdf-extract-api/quickstarts/dotnet/index.md @@ -55,7 +55,7 @@ To complete this guide, you will need: - + diff --git a/src/pages/overview/pdf-extract-api/quickstarts/java/index.md b/src/pages/overview/pdf-extract-api/quickstarts/java/index.md index 0a930fe02..7dc0398e8 100644 --- a/src/pages/overview/pdf-extract-api/quickstarts/java/index.md +++ b/src/pages/overview/pdf-extract-api/quickstarts/java/index.md @@ -63,7 +63,7 @@ To complete this guide, you will need: UTF-8 11 11 - 4.1.1 + 4.2.0 diff --git a/src/pages/overview/pdf-services-api/gettingstarted.md b/src/pages/overview/pdf-services-api/gettingstarted.md index 15875e064..8fcf2b39b 100644 --- a/src/pages/overview/pdf-services-api/gettingstarted.md +++ b/src/pages/overview/pdf-services-api/gettingstarted.md @@ -636,7 +636,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 1. After downloading the package zip, run following command ``` -pip hash /pdfservices-sdk-4.0.0.tar.gz +pip hash /pdfservices-sdk-4.1.0.tar.gz ``` 2. Above command will return the hash of downloaded package. diff --git a/src/pages/overview/pdf-services-api/quickstarts/dotnet/index.md b/src/pages/overview/pdf-services-api/quickstarts/dotnet/index.md index 6c73535ef..0060e1ed3 100644 --- a/src/pages/overview/pdf-services-api/quickstarts/dotnet/index.md +++ b/src/pages/overview/pdf-services-api/quickstarts/dotnet/index.md @@ -55,7 +55,7 @@ To complete this guide, you will need: - + diff --git a/src/pages/overview/pdf-services-api/quickstarts/java/index.md b/src/pages/overview/pdf-services-api/quickstarts/java/index.md index aed2cf012..a2e773880 100644 --- a/src/pages/overview/pdf-services-api/quickstarts/java/index.md +++ b/src/pages/overview/pdf-services-api/quickstarts/java/index.md @@ -63,7 +63,7 @@ To complete this guide, you will need: UTF-8 11 11 - 4.1.1 + 4.2.0 diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 402b96315..3d13f6f58 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -93,8 +93,8 @@ version. UTF-8 11 11 - 4.1.0 - 4.1.0 + 4.2.0 + 4.2.0 @@ -116,7 +116,7 @@ import com.adobe.pdfservices.operation.ExecutionContext; * Update the latest SDK dependency in package.json file of your project ``` -"@adobe/pdfservices-node-sdk": "4.0.1" +"@adobe/pdfservices-node-sdk": "4.1.0" ``` * Require the `@adobe/pdfservices-node-sdk` in the Sample file to access the SDK interface @@ -140,7 +140,7 @@ const pageLayout = new PDFServicesSdk.CreatePDF.options.html.PageLayout(); ``` - + ``` From 4a609c48b393d6391dfbf1bfd0bb3532bca0cebb Mon Sep 17 00:00:00 2001 From: mahour Date: Tue, 5 Nov 2024 21:37:32 +0530 Subject: [PATCH 34/39] sync with master --- .../stylingformattingtags.md | 10 ++------ .../document-generation-api/templatetags.md | 23 +++++++++++++++---- src/pages/overview/releasenotes.md | 5 ++++ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/pages/overview/document-generation-api/stylingformattingtags.md b/src/pages/overview/document-generation-api/stylingformattingtags.md index 60b65741e..95d2ef04d 100644 --- a/src/pages/overview/document-generation-api/stylingformattingtags.md +++ b/src/pages/overview/document-generation-api/stylingformattingtags.md @@ -53,12 +53,6 @@ Styling for the text tag can be provided using the json data through the HTML ba - Any HTML tags which are not supported will be ignored. -Formatting for image can be provided using the attributes of the img tag. - -- The img tag supports the height and width attributes. - -- Any other unsupported attributes inside the img tag will be ignored. - ## Inline styling attributes supported - font-size : Xpt or Ypx ; X=dynamic positive integer 1–1638 pt, 1pt = 1/72 inch; Y=dynamic positive integer 1–2184 px, 1px = 1/96 inch ( point (pt) and pixels (px) are the only supported unit for font size.) @@ -84,9 +78,9 @@ JSON representation of the input data: ## Inline images supported attributes -[Click here](../document-generation-api/inlineimages.md) to refer documentation on how to add Inline Images. +You may find documentation for using inline images [here](../document-generation-api/inlineimages.md). -Formatting for image can be provided using the attributes of the img tag. +Formatting for images can be provided using the attributes of the img tag. - The img tag supports the height and width attributes. diff --git a/src/pages/overview/document-generation-api/templatetags.md b/src/pages/overview/document-generation-api/templatetags.md index 2cef92de2..976d72c5e 100644 --- a/src/pages/overview/document-generation-api/templatetags.md +++ b/src/pages/overview/document-generation-api/templatetags.md @@ -26,10 +26,9 @@ A placeholder(text tags) gets replaced by the actual input data. A placeholder variable can only be applied to an input field of type -string, number or boolean.
Formatting applied to the placeholder -variable in the document template will be retained in the output -document.
-For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section: +string, number or boolean.
Please refer to the **Arrays** section to use array as a placeholder variable.
Formatting applied to the placeholder +variable in the document template will be retained in the output document.
+For more simplified styling and formatting for the placeholder tag from the input json data, please refer [styling and formatting](../document-generation-api/stylingformattingtags.md) section. JSON representation of the input data: @@ -74,6 +73,22 @@ A prefix value can be specified for the placeholder variable. Doing so will appe this value before the result of the tag. ![Placeholder tags with prefix image set](../images/placeholder_prefix.png) + +**Arrays** + +To work with arrays, please refer to the [JSONata Functions](#jsonata-functions) section. + +JSON representation of the input data: + +```json +{ + "companyName": "Tech Corp", + "discountCoupons": ["SummerSale", "BlackFriday", "NewYearSpecial"] +} +``` + +![working_with_arrays](../images/working_with_array.png) + ## Images To dynamically insert an image in the document, add any image as diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 3d13f6f58..e24988901 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -186,6 +186,11 @@ Upgrading to the latest SDK should not break existing applications. - PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs. + +### October 1, 2024; Java SDK 4.1.1 patch release + +- Bug fixes and stability improvements. + ### September 10, 2024; Adobe Document Generation Server Side Release - Enhanced support for [JSONata functions](../document-generation-api/templatetags/#jsonata-functions) in Table Tag with Markers. From 1bd40898bd3b0c84f0a39e335ce16d98b69bbdd0 Mon Sep 17 00:00:00 2001 From: mahour Date: Tue, 5 Nov 2024 21:54:31 +0530 Subject: [PATCH 35/39] sync with master --- .../document-generation-api/templatetags.md | 14 ++++++++++++++ src/pages/overview/releasenotes.md | 7 +------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/pages/overview/document-generation-api/templatetags.md b/src/pages/overview/document-generation-api/templatetags.md index 976d72c5e..ce1e0f5b5 100644 --- a/src/pages/overview/document-generation-api/templatetags.md +++ b/src/pages/overview/document-generation-api/templatetags.md @@ -462,6 +462,20 @@ Here is the list of [supported aggregation functions](https://docs.jsonata.org/a aggregate numerical calculation can only be applied to a list of numbers. +## JSONata Functions +The Document Generation API supports various JSONata functions, including: + +- [String Functions](https://docs.jsonata.org/string-functions) +- [Numeric Functions](https://docs.jsonata.org/numeric-functions) +- [Aggregation Functions](https://docs.jsonata.org/aggregation-functions) +- [Boolean Functions](https://docs.jsonata.org/boolean-functions) +- [Array Functions](https://docs.jsonata.org/array-functions) +- [Date/Time Functions](https://docs.jsonata.org/date-time-functions) +- [Higher Order Functions](https://docs.jsonata.org/higher-order-functions) + + +It is recommended to test these functions before incorporating them into your template. + ## Adobe Sign Adobe Sign text tags can be placed anywhere within the contents of the document template. diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index e24988901..0cb5ca992 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -154,7 +154,7 @@ using Adobe.PDFServicesSDK; * Add the following dependency in your project’s requirements.txt file: ``` -pdfservices-sdk~=4.0.0 +pdfservices-sdk~=4.1.0 ``` ## Archived Documentation @@ -186,11 +186,6 @@ Upgrading to the latest SDK should not break existing applications. - PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs. - -### October 1, 2024; Java SDK 4.1.1 patch release - -- Bug fixes and stability improvements. - ### September 10, 2024; Adobe Document Generation Server Side Release - Enhanced support for [JSONata functions](../document-generation-api/templatetags/#jsonata-functions) in Table Tag with Markers. From 6325be52d4bcbf86e0e41f7e91e4e40f6c34f531 Mon Sep 17 00:00:00 2001 From: mahour Date: Tue, 5 Nov 2024 22:01:26 +0530 Subject: [PATCH 36/39] updated sha --- .../pdf-accessibility-auto-tag-api/gettingstarted.md | 8 ++++---- .../overview/pdf-electronic-seal-api/gettingstarted.md | 8 ++++---- src/pages/overview/pdf-extract-api/gettingstarted.md | 8 ++++---- src/pages/overview/pdf-services-api/gettingstarted.md | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md b/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md index b25cbd12c..51fd0fd1b 100644 --- a/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md +++ b/src/pages/overview/pdf-accessibility-auto-tag-api/gettingstarted.md @@ -251,7 +251,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 4. Verify the hash you generated matches the value in the .sha1 file. ``` -be0ec6dba49fc91b1dae3a3bcde8d1ee2bb9a815 +29d29e4fee46bcb6891966a09124d74228ee2b50 ``` #### Logging @@ -394,7 +394,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -t8ZkMOY+EnaEuHcuEX43DIqiZW+fhRETpabMa70+jQfXa9VqNuFXfCo5mlMpnC4PHiUzldg7djq+DcXZV5n1zA== +GVi6LEnaHwb0C4ZvhRbu3HyGwpDElG6FMhjCwmYsmSGS1hexoArNVvF7rY1T4ygHkdhY6WEEiVobwwLmoAraBw== ``` #### Logging @@ -508,7 +508,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -sha512-kDdXe632b2QsaoBCdFvMJYFbvqDS7rSBbEl7Onj2jPT0JMPjbk3IX5XNqCM7TDMyexYyAu6FlSWA8F+PjUhpHg== +sha512-ZvwGfMlGa0mGK5HpPAdTTlsaeKKPLEbVfAeLsHr7YAQ6NO7cVkbxaPqV3Ng8dpq4mNj5Ah0Y1Q80uTjLb0Qf+A== ``` #### Logging @@ -644,7 +644,7 @@ pip hash /pdfservices-sdk-4.1.0.tar.gz 2. Verify the hash matches the value published here. ``` -9537bf4659d3e939b86f0d925dec2eafc1fc533d09c96674791389b09c88e8c9 +ec24e0ddb8da9a968e8b8aa94203f48afb496dc99e505f6debcf0c2d51307cd2 ``` ###### To generate tagged PDF from the sample file diff --git a/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md b/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md index effce4c49..25a2d1ebb 100644 --- a/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md +++ b/src/pages/overview/pdf-electronic-seal-api/gettingstarted.md @@ -300,7 +300,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 4. Verify the hash you generated matches the value in the .sha1 file. ``` -be0ec6dba49fc91b1dae3a3bcde8d1ee2bb9a815 +29d29e4fee46bcb6891966a09124d74228ee2b50 ``` #### Logging @@ -443,7 +443,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -t8ZkMOY+EnaEuHcuEX43DIqiZW+fhRETpabMa70+jQfXa9VqNuFXfCo5mlMpnC4PHiUzldg7djq+DcXZV5n1zA== +GVi6LEnaHwb0C4ZvhRbu3HyGwpDElG6FMhjCwmYsmSGS1hexoArNVvF7rY1T4ygHkdhY6WEEiVobwwLmoAraBw== ``` #### Logging @@ -557,7 +557,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -sha512-kDdXe632b2QsaoBCdFvMJYFbvqDS7rSBbEl7Onj2jPT0JMPjbk3IX5XNqCM7TDMyexYyAu6FlSWA8F+PjUhpHg== +sha512-ZvwGfMlGa0mGK5HpPAdTTlsaeKKPLEbVfAeLsHr7YAQ6NO7cVkbxaPqV3Ng8dpq4mNj5Ah0Y1Q80uTjLb0Qf+A== ``` #### Logging @@ -693,7 +693,7 @@ pip hash /pdfservices-sdk-4.1.0.tar.gz 3. Verify the hash matches the value published here. ``` -9537bf4659d3e939b86f0d925dec2eafc1fc533d09c96674791389b09c88e8c9 +ec24e0ddb8da9a968e8b8aa94203f48afb496dc99e505f6debcf0c2d51307cd2 ``` ## Public API diff --git a/src/pages/overview/pdf-extract-api/gettingstarted.md b/src/pages/overview/pdf-extract-api/gettingstarted.md index 7d1726c34..2184efd5b 100644 --- a/src/pages/overview/pdf-extract-api/gettingstarted.md +++ b/src/pages/overview/pdf-extract-api/gettingstarted.md @@ -251,7 +251,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 4. Verify the hash you generated matches the value in the .sha1 file. ``` -be0ec6dba49fc91b1dae3a3bcde8d1ee2bb9a815 +29d29e4fee46bcb6891966a09124d74228ee2b50 ``` #### Logging @@ -394,7 +394,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -t8ZkMOY+EnaEuHcuEX43DIqiZW+fhRETpabMa70+jQfXa9VqNuFXfCo5mlMpnC4PHiUzldg7djq+DcXZV5n1zA== +GVi6LEnaHwb0C4ZvhRbu3HyGwpDElG6FMhjCwmYsmSGS1hexoArNVvF7rY1T4ygHkdhY6WEEiVobwwLmoAraBw== ``` #### Logging @@ -508,7 +508,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -sha512-kDdXe632b2QsaoBCdFvMJYFbvqDS7rSBbEl7Onj2jPT0JMPjbk3IX5XNqCM7TDMyexYyAu6FlSWA8F+PjUhpHg== +sha512-ZvwGfMlGa0mGK5HpPAdTTlsaeKKPLEbVfAeLsHr7YAQ6NO7cVkbxaPqV3Ng8dpq4mNj5Ah0Y1Q80uTjLb0Qf+A== ``` #### Logging @@ -644,7 +644,7 @@ pip hash /pdfservices-sdk-4.1.0.tar.gz 2. Verify the hash matches the value published here. ``` -9537bf4659d3e939b86f0d925dec2eafc1fc533d09c96674791389b09c88e8c9 +ec24e0ddb8da9a968e8b8aa94203f48afb496dc99e505f6debcf0c2d51307cd2 ``` ###### To extract data from the sample PDF file diff --git a/src/pages/overview/pdf-services-api/gettingstarted.md b/src/pages/overview/pdf-services-api/gettingstarted.md index 8fcf2b39b..2cc3d6dfe 100644 --- a/src/pages/overview/pdf-services-api/gettingstarted.md +++ b/src/pages/overview/pdf-services-api/gettingstarted.md @@ -250,7 +250,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 4. Verify the hash you generated matches the value in the .sha1 file. ``` -be0ec6dba49fc91b1dae3a3bcde8d1ee2bb9a815 +29d29e4fee46bcb6891966a09124d74228ee2b50 ``` #### Logging @@ -393,7 +393,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -t8ZkMOY+EnaEuHcuEX43DIqiZW+fhRETpabMa70+jQfXa9VqNuFXfCo5mlMpnC4PHiUzldg7djq+DcXZV5n1zA== +GVi6LEnaHwb0C4ZvhRbu3HyGwpDElG6FMhjCwmYsmSGS1hexoArNVvF7rY1T4ygHkdhY6WEEiVobwwLmoAraBw== ``` #### Logging @@ -507,7 +507,7 @@ For security reasons you may wish to confirm the installer's authenticity. To do 3. Verify the hash in the downloaded file matches the value published here. ``` -sha512-kDdXe632b2QsaoBCdFvMJYFbvqDS7rSBbEl7Onj2jPT0JMPjbk3IX5XNqCM7TDMyexYyAu6FlSWA8F+PjUhpHg== +sha512-ZvwGfMlGa0mGK5HpPAdTTlsaeKKPLEbVfAeLsHr7YAQ6NO7cVkbxaPqV3Ng8dpq4mNj5Ah0Y1Q80uTjLb0Qf+A== ``` #### Logging @@ -643,7 +643,7 @@ pip hash /pdfservices-sdk-4.1.0.tar.gz 3. Verify the hash matches the value published here. ``` -9537bf4659d3e939b86f0d925dec2eafc1fc533d09c96674791389b09c88e8c9 +ec24e0ddb8da9a968e8b8aa94203f48afb496dc99e505f6debcf0c2d51307cd2 ``` ## Public API From ce1d2b74ac0f4f46e4ea285d9f834dda567857cf Mon Sep 17 00:00:00 2001 From: mahour Date: Tue, 5 Nov 2024 22:08:49 +0530 Subject: [PATCH 37/39] added release notes --- src/pages/overview/releasenotes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pages/overview/releasenotes.md b/src/pages/overview/releasenotes.md index 0cb5ca992..96b1748a1 100644 --- a/src/pages/overview/releasenotes.md +++ b/src/pages/overview/releasenotes.md @@ -186,6 +186,10 @@ Upgrading to the latest SDK should not break existing applications. - PDF Watermark and PDF Accessibility Checker operations are now available for all the users in PDF Services SDKs. +### October 1, 2024; Java SDK 4.1.1 patch release + +- Bug fixes and stability improvements. + ### September 10, 2024; Adobe Document Generation Server Side Release - Enhanced support for [JSONata functions](../document-generation-api/templatetags/#jsonata-functions) in Table Tag with Markers. From d83d4a2ea8397eb40b974d0aad5b6ecf7c5a229b Mon Sep 17 00:00:00 2001 From: Dmitry Matiouchenko Date: Tue, 5 Nov 2024 14:56:11 -0800 Subject: [PATCH 38/39] fix: update Layout shadow component to support new search --- .../components/Layout/index.js | 503 ++++++++++++------ 1 file changed, 349 insertions(+), 154 deletions(-) diff --git a/src/@adobe/gatsby-theme-aio/components/Layout/index.js b/src/@adobe/gatsby-theme-aio/components/Layout/index.js index 4bcc66a55..0cbf2f4cc 100644 --- a/src/@adobe/gatsby-theme-aio/components/Layout/index.js +++ b/src/@adobe/gatsby-theme-aio/components/Layout/index.js @@ -15,7 +15,8 @@ import { Helmet } from 'react-helmet'; import { css, Global } from '@emotion/react'; import loadable from '@loadable/component'; import algoliaSearch from 'algoliasearch'; -import { graphql, useStaticQuery } from 'gatsby'; +import { graphql, useStaticQuery, Link as GatsbyLink } from 'gatsby'; +import Axios from 'axios'; import { DESKTOP_SCREEN_WIDTH, findSelectedPages, @@ -28,7 +29,6 @@ import { SIDENAV_WIDTH, trailingSlashFix } from '@adobe/gatsby-theme-aio/src/utils'; -import { adobeIndexes } from '@adobe/gatsby-theme-aio/algolia/helpers/get-products-indexes.js'; import '@spectrum-css/vars/dist/spectrum-global.css'; import '@spectrum-css/vars/dist/spectrum-medium.css'; import '@spectrum-css/vars/dist/spectrum-large.css'; @@ -44,17 +44,23 @@ import { SideNav } from '../SideNav'; import { SEO } from '../SEO'; import { ProgressCircle } from '@adobe/gatsby-theme-aio/src/components/ProgressCircle'; import nextId from 'react-id-generator'; -import {GlobalHeader} from "@adobe/gatsby-theme-aio/src/components/GlobalHeader"; // GATSBY_ALGOLIA_APPLICATION_ID=... // GATSBY_ALGOLIA_SEARCH_API_KEY=... // GATSBY_ALGOLIA_SEARCH_INDEX=[{"index": "index label"}, {"all": "All Results"}] // GATSBY_ALGOLIA_INDEX_ALL=["index1", "index2", ...] -const hasSearch = !!(process.env.GATSBY_ALGOLIA_APPLICATION_ID && process.env.GATSBY_ALGOLIA_SEARCH_API_KEY); +const hasSearch = !!( + process.env.GATSBY_ALGOLIA_APPLICATION_ID && process.env.GATSBY_ALGOLIA_SEARCH_API_KEY +); +// GATSBY_ALGOLIA_INDEX_ENV_PREFIX=[prod | stage | *] this is the env prefix assigned to the index name during indexing +const algoliaIndexEnv = process.env.GATSBY_ALGOLIA_INDEX_ENV_PREFIX; let algolia = null; if (hasSearch) { - algolia = algoliaSearch(process.env.GATSBY_ALGOLIA_APPLICATION_ID, process.env.GATSBY_ALGOLIA_SEARCH_API_KEY); + algolia = algoliaSearch( + process.env.GATSBY_ALGOLIA_APPLICATION_ID, + process.env.GATSBY_ALGOLIA_SEARCH_API_KEY + ); } else { console.warn('AIO: Algolia config missing.'); } @@ -68,26 +74,26 @@ const pageSrc = { openAPI: { src: null, block: null, - frontMatter: 'openAPISpec' + frontMatter: 'openAPISpec', }, frame: { src: null, block: null, - frontMatter: 'frameSrc' - } + frontMatter: 'frameSrc', + }, }; -const toggleSideNav = (setShowSideNav) => { - setShowSideNav((showSideNav) => !showSideNav); +const toggleSideNav = setShowSideNav => { + setShowSideNav(showSideNav => !showSideNav); }; -const addScript = (url) => +const addScript = url => new Promise((resolve, reject) => { const script = document.createElement('script'); script.src = url; - script.onload = (val) => resolve(val); - script.onerror = (err) => reject(err); - script.onabort = (err) => reject(err); + script.onload = val => resolve(val); + script.onerror = err => reject(err); + script.onabort = err => reject(err); document.head.appendChild(script); }); @@ -115,11 +121,70 @@ const updatePageSrc = (type, frontMatter, setIsLoading) => { } }; +// Used to update the url in the browser +const setQueryStringParameter = (name, value) => { + const params = new URLSearchParams(window.location.search); + params.set(name, value); + window.history.replaceState({}, '', `${window.location.pathname}?${params}`); +}; + +/** + * @returns The query string from the URL + */ +export const getQueryString = () => { + const params = new URLSearchParams(window.location.search); + return params.toString(); +}; + +const searchIFrameSource = () => { + /** + * Returns expected origin based on the host + * @param {*} host The host + * @param {*} suffix A suffix to append + * @returns The expected origin + */ + const setExpectedOrigin = (host, suffix = '') => { + if (isDevEnvironment(host)) { + return `http://localhost:8000`; + } else if (isStageEnvironment(host)) { + return `https://developer-stage.adobe.com${suffix}`; + } else { + return `https://developer.adobe.com${suffix}`; + } + }; + + /** + * Checks whether the current URL is a dev environment based on host value + * @param {*} host The host + * @returns True if the current URL is a dev environment, false otherwise + */ + function isDevEnvironment(host) { + return host.indexOf('localhost') >= 0; + } + + /** + * Checks whether the current URL is a stage environment based on host value + * @param {*} host The host + * @returns True if the current URL is a stage environment, false otherwise + */ + function isStageEnvironment(host) { + return host.indexOf('developer-stage') >= 0; + } + + const src = isDevEnvironment(window.location.host) + ? setExpectedOrigin(window.location.host) + : `${setExpectedOrigin(window.location.host, '/search-frame')}`; + const queryString = new URLSearchParams(window.location.search); + return queryString && queryString.toString().length > 0 + ? `${src}?${queryString.toString()}` + : src; +}; + export default ({ children, pageContext, location }) => { const [ims, setIms] = useState(null); const [isLoadingIms, setIsLoadingIms] = useState(true); // ["index1", "index2", ...] - const [indexAll, setIndexAll] = useState(null); + const [indexAll, setIndexAll] = useState(false); // Load and initialize IMS useEffect(() => { @@ -139,6 +204,7 @@ export default ({ children, pageContext, location }) => { window.adobeIMS.initialize(); } catch (e) { console.error(`AIO: IMS error.`); + } finally { setIsLoadingIms(false); } })(); @@ -148,28 +214,6 @@ export default ({ children, pageContext, location }) => { } }, []); - // Set Search indexAll - useEffect(() => { - (async () => { - // const ALGOLIA_INDEX_ALL_SRC = process.env.GATSBY_ALGOLIA_INDEX_ALL_SRC; - // const ALGOLIA_INDEX_ALL = adobeIndexes; - - try { - // if (ALGOLIA_INDEX_ALL_SRC) { - // await addScript(`${ALGOLIA_INDEX_ALL_SRC}`); - // setIndexAll(window.AIO_ALGOLIA_INDEX_ALL); - // } else if (ALGOLIA_INDEX_ALL) { - // setIndexAll(JSON.parse(adobeIndexes)); - // } - if (adobeIndexes) { - setIndexAll(adobeIndexes); - } - } catch (e) { - console.error(`AIO: Failed setting search index.`); - } - })(); - }, []); - // Load all data once and pass it to the Provider const data = useStaticQuery( graphql` @@ -270,6 +314,8 @@ export default ({ children, pageContext, location }) => { const [showSearch, setShowSearch] = useState(false); const [showSideNav, setShowSideNav] = useState(false); const [isLoading, setIsLoading] = useState(false); + const [loadSearchFrame, setLoadSearchFrame] = useState(false); + const [hasSideNav, setHasSideNav] = useState(false); // Show search if search param is set useEffect(() => { @@ -279,10 +325,18 @@ export default ({ children, pageContext, location }) => { } }, [setShowSearch]); + useEffect( () => { + if (window.innerWidth >= 1280) { + setShowSideNav(false); + setHasSideNav(false); + } + }, [location]); + useEffect(() => { window.onpopstate = () => { const searchParams = new URL(window.location).searchParams; if (searchParams.get(SEARCH_PARAMS.query)) { + searchParams.get(SEARCH_PARAMS.query); setShowSearch(true); } else { setShowSearch(false); @@ -293,18 +347,18 @@ export default ({ children, pageContext, location }) => { // Unify all paths location.pathname = trailingSlashFix(decodeURIComponent(location.pathname)); - pages.forEach((page) => { + pages.forEach(page => { normalizePagePath(page); if (page.menu) { - page.menu.forEach((menu) => { + page.menu.forEach(menu => { normalizePagePath(menu); }); } }); if (versions) { - versions.forEach((version) => { + versions.forEach(version => { normalizePagePath(version); }); } @@ -312,18 +366,18 @@ export default ({ children, pageContext, location }) => { normalizePagePath(home); normalizePagePath(docs); - const normalizeSubPages = (page) => { + const normalizeSubPages = page => { normalizePagePath(page); if (page.pages) { - page.pages.forEach((subPage) => { + page.pages.forEach(subPage => { normalizeSubPages(subPage); }); } }; if (subPages) { - subPages.forEach((subPage) => { + subPages.forEach(subPage => { normalizeSubPages(subPage); }); } @@ -332,7 +386,9 @@ export default ({ children, pageContext, location }) => { const pagesWithRootFix = rootFixPages(pages); const sideNavSelectedPages = findSelectedPages(pathWithRootFix, subPages); const sideNavSelectedSubPages = findSubPages(pathWithRootFix, pagesWithRootFix, subPages); - const hasSideNav = sideNavSelectedSubPages.length > 0; + if (sideNavSelectedSubPages.length > 0) { + setHasSideNav(true); + } const frontMatter = pageContext?.frontmatter; @@ -344,7 +400,36 @@ export default ({ children, pageContext, location }) => { updatePageSrc('openAPI', frontMatter, setIsLoading); updatePageSrc('frame', frontMatter, setIsLoading); - if (pathPrefix === "/search-frame") { + // Set Search indexAll + useEffect(() => { + if (hasSearch) { + Axios.get( + 'https://raw.githubusercontent.com/AdobeDocs/search-indices/main/product-index-map.json' + ) + .then(result => { + const productIndexMap = result.data; + if (typeof productIndexMap === 'string') { + setIndexAll(JSON.parse(productIndexMap)); + } else if (Object.prototype.toString.call(productIndexMap) == '[object Array]') { + // https://stackoverflow.com/a/12996879/15028986 + setIndexAll(productIndexMap); + } + }) + .catch(err => { + console.error(`AIO: Failed fetching search index.\n${err}`); + }); + } + if (window.innerWidth <= 1280) { + setHasSideNav(true); + } + window.addEventListener('resize', () => { + if (window.innerWidth <= 1280) { + setHasSideNav(true); + } + }); + }, []); + + if (pathPrefix === '/search-frame') { return ( <> @@ -367,110 +452,196 @@ export default ({ children, pageContext, location }) => {
- + min-height: 100vh; + background-color: transparent; + `}> + {hasSearch && indexAll && ( + + )}
); } + let searchPathNameCheck = ''; + + const searchFrameOnLoad = (counter = 0, loaded) => { + const renderedFrame = document.getElementById('searchIframe'); + + renderedFrame.contentWindow.postMessage( + JSON.stringify({ localPathName: window.location.pathname }), + '*' + ); + if (window.location.pathname !== '/') { + if (searchPathNameCheck !== window.location.pathname) { + // attempt to establish connection for 3 seconds then time out + if (counter > 30) { + // eslint-disable-next-line no-console + console.warn('Loading Search iFrame timed out'); + return; + } + window.setTimeout(() => { + searchFrameOnLoad(renderedFrame, counter + 1, loaded); + }, 100); + } + } + // Past this point we successfully passed the local pathname + // and received a confirmation from the iframe + if (!loaded) { + const searchParams = new URL(window.location).searchParams; + if (searchParams.get(SEARCH_PARAMS.query)) { + setShowSearch(true); + } + } + + loaded = true; + }; + + // Referenced https://stackoverflow.com/a/10444444/15028986 + const checkIframeLoaded = () => { + const renderedFrame = document.getElementById('searchIframe'); + // Get a handle to the iframe element + let iframeDoc; + try { + iframeDoc = renderedFrame.contentDocument; + // Check if loading is complete + if (iframeDoc.readyState === 'complete') { + renderedFrame.onload = () => { + searchFrameOnLoad(); + }; + // The loading is complete, call the function we want executed once the iframe is loaded + return; + } + } catch (error) { + window.setTimeout(checkIframeLoaded, 100); + } + }; + + const onMessageReceivedFromIframe = evt => { + // const expectedOrigin = setExpectedOrigin(window.location.host); + // if (evt.origin !== expectedOrigin) return; + try { + const message = typeof evt.data === 'string' ? JSON.parse(evt.data) : evt.data; + if (message.query) { + setQueryStringParameter(SEARCH_PARAMS.query, message.query); + setQueryStringParameter(SEARCH_PARAMS.keywords, message.keywords); + setQueryStringParameter(SEARCH_PARAMS.index, message.index); + } else if (message.received) { + searchPathNameCheck = message.received; + } + } catch (e) { + // eslint-disable-next-line no-console + console.error(e); + } + }; + + useEffect(() => { + window.addEventListener('message', onMessageReceivedFromIframe); + if (hasSearch) { + setLoadSearchFrame(true); + } + }, []); + + useEffect(() => { + checkIframeLoaded(); + }, [loadSearchFrame]); + return ( <> @@ -567,6 +738,7 @@ export default ({ children, pageContext, location }) => { -moz-osx-font-smoothing: grayscale; ${showSearch && 'overflow: hidden;'} + ${showSideNav && 'overflow: hidden;'} } *[hidden] { @@ -586,9 +758,13 @@ export default ({ children, pageContext, location }) => { allSitePage, allMdx, allGithub, - allGithubContributors + allGithubContributors, }}> - +
{ searchButtonId={searchButtonId} />
+ {hasSearch && loadSearchFrame && ( + + )} +
{ createElement(pageSrc['frame'].block, { src: pageSrc['frame'].src, height: frontMatter?.frameHeight, - location + location, })} @@ -695,17 +900,6 @@ export default ({ children, pageContext, location }) => {
- {hasSearch && showSearch && indexAll && ( - - )} -
{ {hasSideNav && (
{ width: 100%; ${showSideNav && - ` + ` pointer-events: auto; opacity: 1; `} @@ -753,4 +948,4 @@ export default ({ children, pageContext, location }) => { ); -}; +}; \ No newline at end of file From 0007d3a5e749ad37728a31ed03333bafed42dd83 Mon Sep 17 00:00:00 2001 From: Dmitry Matiouchenko Date: Tue, 5 Nov 2024 15:32:04 -0800 Subject: [PATCH 39/39] fix: missing imports in Layout --- package.json | 2 +- .../components/Layout/index.js | 1 + yarn.lock | 3603 +---------------- 3 files changed, 187 insertions(+), 3419 deletions(-) diff --git a/package.json b/package.json index 8695e94b8..51e007857 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "url": "https://github.com/icaraps" }, "dependencies": { - "@adobe/gatsby-theme-aio": "^4.14.4", + "@adobe/gatsby-theme-aio": "^4.14.14", "gatsby": "4.22.0", "react": "^17.0.2", "react-dom": "^17.0.2" diff --git a/src/@adobe/gatsby-theme-aio/components/Layout/index.js b/src/@adobe/gatsby-theme-aio/components/Layout/index.js index 0cbf2f4cc..14e7d4ef1 100644 --- a/src/@adobe/gatsby-theme-aio/components/Layout/index.js +++ b/src/@adobe/gatsby-theme-aio/components/Layout/index.js @@ -41,6 +41,7 @@ import '@adobe/focus-ring-polyfill'; import { Provider } from '@adobe/gatsby-theme-aio/src/components/Context'; import { Search } from '@adobe/gatsby-theme-aio/src/components/Search'; import { SideNav } from '../SideNav'; +import { GlobalHeader } from '@adobe/gatsby-theme-aio/src/components/GlobalHeader'; import { SEO } from '../SEO'; import { ProgressCircle } from '@adobe/gatsby-theme-aio/src/components/ProgressCircle'; import nextId from 'react-id-generator'; diff --git a/yarn.lock b/yarn.lock index 1432750e1..1038fc7e5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -33,14 +33,13 @@ __metadata: languageName: node linkType: hard -"@adobe/gatsby-theme-aio@npm:^4.14.4": - version: 4.14.4 - resolution: "@adobe/gatsby-theme-aio@npm:4.14.4" +"@adobe/gatsby-theme-aio@npm:^4.14.14": + version: 4.14.16 + resolution: "@adobe/gatsby-theme-aio@npm:4.14.16" dependencies: "@adobe/focus-ring-polyfill": ^0.1.5 "@adobe/gatsby-source-github-file-contributors": ^0.3.1 "@adobe/prism-adobe": ^1.0.3 - "@adobe/react-spectrum": ^3.35.1 "@emotion/react": ^11.10.4 "@loadable/component": ^5.15.2 "@mdx-js/mdx": 1.6.22 @@ -132,7 +131,7 @@ __metadata: gatsby: ^4.22.0 react: ^17.0.2 react-dom: ^17.0.2 - checksum: 846ee1128ccfee37bb36313ee594349369bba472f93ca7f6b6142b7ede79842f808f3458659abbbe7972171166a14674aa1860b8ca7539c1300a804f3794b54d + checksum: 23efce4352fb14582a06f845362ec7cf242e66db49014d2dc6e39c70efdcc2f40265b0c9f17cc55cb96a6cde828f3456b9d9edea5f80fa9ca56f5d8260d0d2e6 languageName: node linkType: hard @@ -143,96 +142,6 @@ __metadata: languageName: node linkType: hard -"@adobe/react-spectrum-ui@npm:1.2.0": - version: 1.2.0 - resolution: "@adobe/react-spectrum-ui@npm:1.2.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 18ad87c76e2019f22fa9f18df22fc06cb99e27d46fc82ed6974a4cab1d04c6a223ded51fae95d0890069cb7c9a10add468e5e9c62b9b33ac9b5ab9de25ff12e5 - languageName: node - linkType: hard - -"@adobe/react-spectrum-workflow@npm:2.3.4": - version: 2.3.4 - resolution: "@adobe/react-spectrum-workflow@npm:2.3.4" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1c008fec02f19160a6a0589f9647d29b9652322b087ba521ba7e890747a23c70268c2e58799977823a65a8c44d832162743e0ecb3b082614bc70ba59a6eac2fc - languageName: node - linkType: hard - -"@adobe/react-spectrum@npm:^3.35.1": - version: 3.35.1 - resolution: "@adobe/react-spectrum@npm:3.35.1" - dependencies: - "@internationalized/string": ^3.2.3 - "@react-aria/i18n": ^3.11.1 - "@react-aria/ssr": ^3.9.4 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-spectrum/actionbar": ^3.4.5 - "@react-spectrum/actiongroup": ^3.10.5 - "@react-spectrum/avatar": ^3.0.12 - "@react-spectrum/badge": ^3.1.13 - "@react-spectrum/breadcrumbs": ^3.9.7 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/buttongroup": ^3.6.13 - "@react-spectrum/calendar": ^3.4.9 - "@react-spectrum/checkbox": ^3.9.6 - "@react-spectrum/combobox": ^3.12.5 - "@react-spectrum/contextualhelp": ^3.6.11 - "@react-spectrum/datepicker": ^3.9.6 - "@react-spectrum/dialog": ^3.8.11 - "@react-spectrum/divider": ^3.5.13 - "@react-spectrum/dnd": ^3.3.10 - "@react-spectrum/dropzone": ^3.0.1 - "@react-spectrum/filetrigger": ^3.0.1 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/icon": ^3.7.13 - "@react-spectrum/illustratedmessage": ^3.5.1 - "@react-spectrum/image": ^3.5.1 - "@react-spectrum/inlinealert": ^3.2.5 - "@react-spectrum/labeledvalue": ^3.1.14 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/link": ^3.6.7 - "@react-spectrum/list": ^3.7.10 - "@react-spectrum/listbox": ^3.12.9 - "@react-spectrum/menu": ^3.19.1 - "@react-spectrum/meter": ^3.5.1 - "@react-spectrum/numberfield": ^3.9.3 - "@react-spectrum/overlays": ^5.6.1 - "@react-spectrum/picker": ^3.14.5 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/provider": ^3.9.7 - "@react-spectrum/radio": ^3.7.6 - "@react-spectrum/searchfield": ^3.8.6 - "@react-spectrum/slider": ^3.6.9 - "@react-spectrum/statuslight": ^3.5.13 - "@react-spectrum/switch": ^3.5.5 - "@react-spectrum/table": ^3.12.10 - "@react-spectrum/tabs": ^3.8.10 - "@react-spectrum/tag": ^3.2.6 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/textfield": ^3.12.1 - "@react-spectrum/theme-dark": ^3.5.10 - "@react-spectrum/theme-default": ^3.5.10 - "@react-spectrum/theme-light": ^3.4.10 - "@react-spectrum/tooltip": ^3.6.7 - "@react-spectrum/view": ^3.6.10 - "@react-spectrum/well": ^3.4.13 - "@react-stately/collections": ^3.10.7 - "@react-stately/data": ^3.11.4 - "@react-types/shared": ^3.23.1 - client-only: ^0.0.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 856e4b720e44c0ad6027b02da01fdb22bd4532b222904dc05d4633f11a78bb959c9883808b746a4841d58c45884afb4fcd966077456cc9a156b685ad85477661 - languageName: node - linkType: hard - "@algolia/cache-browser-local-storage@npm:4.17.0": version: 4.17.0 resolution: "@algolia/cache-browser-local-storage@npm:4.17.0" @@ -1859,15 +1768,6 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": - version: 7.24.8 - resolution: "@babel/runtime@npm:7.24.8" - dependencies: - regenerator-runtime: ^0.14.0 - checksum: 6b1e4230580f67a807ad054720812bbefbb024cc2adc1159d050acbb764c4c81c7ac5f7a042c48f578987c5edc2453c71039268df059058e9501fa6023d764b0 - languageName: node - linkType: hard - "@babel/template@npm:^7.12.7, @babel/template@npm:^7.16.7, @babel/template@npm:^7.18.10, @babel/template@npm:^7.20.7": version: 7.20.7 resolution: "@babel/template@npm:7.20.7" @@ -2126,55 +2026,6 @@ __metadata: languageName: node linkType: hard -"@formatjs/ecma402-abstract@npm:2.0.0": - version: 2.0.0 - resolution: "@formatjs/ecma402-abstract@npm:2.0.0" - dependencies: - "@formatjs/intl-localematcher": 0.5.4 - tslib: ^2.4.0 - checksum: 0bba3b4f1a966c72d3f53173d650294fe313825b6451396c1040fb92bb86b2f771729888a1dadbc0a0074ef809229033fe8ff17c86dcb07a8ad42253b0c3a269 - languageName: node - linkType: hard - -"@formatjs/fast-memoize@npm:2.2.0": - version: 2.2.0 - resolution: "@formatjs/fast-memoize@npm:2.2.0" - dependencies: - tslib: ^2.4.0 - checksum: 8697fe72a7ece252d600a7d08105f2a2f758e2dd96f54ac0a4c508b1205a559fc08835635e1f8e5ca9dcc3ee61ce1fca4a0e7047b402f29fc96051e293a280ff - languageName: node - linkType: hard - -"@formatjs/icu-messageformat-parser@npm:2.7.8": - version: 2.7.8 - resolution: "@formatjs/icu-messageformat-parser@npm:2.7.8" - dependencies: - "@formatjs/ecma402-abstract": 2.0.0 - "@formatjs/icu-skeleton-parser": 1.8.2 - tslib: ^2.4.0 - checksum: 404d6732653632eae3b10cfa70dc57c4fb0fe500c6ef9e687e938e4cb29e18b4e5d46633c88a2c06864328eb2f4713fbb6be404c6033682370d568971e2dda0d - languageName: node - linkType: hard - -"@formatjs/icu-skeleton-parser@npm:1.8.2": - version: 1.8.2 - resolution: "@formatjs/icu-skeleton-parser@npm:1.8.2" - dependencies: - "@formatjs/ecma402-abstract": 2.0.0 - tslib: ^2.4.0 - checksum: 8735322fa93ddd471822ba77400411660cb6221c87955cdcea159e8f9b72188106b4d4bf57d737d248810ae1974e1df4974914a6fb6045e91bf5ea22cc7fd30f - languageName: node - linkType: hard - -"@formatjs/intl-localematcher@npm:0.5.4": - version: 0.5.4 - resolution: "@formatjs/intl-localematcher@npm:0.5.4" - dependencies: - tslib: ^2.4.0 - checksum: a0af57874fcd163add5f7a0cb1c008e9b09feb1d24cbce1263379ae0393cddd6681197a7f2f512f351a97666fc8675ed52cc17d1834266ee8fc65e9edf3435f6 - languageName: node - linkType: hard - "@gatsbyjs/parcel-namer-relative-to-cwd@npm:1.7.0": version: 1.7.0 resolution: "@gatsbyjs/parcel-namer-relative-to-cwd@npm:1.7.0" @@ -2678,43 +2529,6 @@ __metadata: languageName: node linkType: hard -"@internationalized/date@npm:^3.5.4": - version: 3.5.4 - resolution: "@internationalized/date@npm:3.5.4" - dependencies: - "@swc/helpers": ^0.5.0 - checksum: df73fb4f11e5db918f5a76f94edcaadd34b67bd4160e8ee4e2a5f518e01cdfa7196fbcabd26bfa9d8376e4822a4a1c73d68fb08249cadfaaeba5bb1d41cff032 - languageName: node - linkType: hard - -"@internationalized/message@npm:^3.1.4": - version: 3.1.4 - resolution: "@internationalized/message@npm:3.1.4" - dependencies: - "@swc/helpers": ^0.5.0 - intl-messageformat: ^10.1.0 - checksum: 37990cf4fd666afe8d165f3c9042e88c2d95b4a03d6e67595a49d57aff938d19f91826c7c6e5cfa2863c3d8d555365e797d5979da575a835b533fd2e31876bef - languageName: node - linkType: hard - -"@internationalized/number@npm:^3.5.3": - version: 3.5.3 - resolution: "@internationalized/number@npm:3.5.3" - dependencies: - "@swc/helpers": ^0.5.0 - checksum: f905cb5302d5a84660fbe0264930fadf286c7a5860373c289863bc2b9d003690552743da2b3155d65e3e9fd0e49b83673caf49c306b9bab39d6e871b6777c588 - languageName: node - linkType: hard - -"@internationalized/string@npm:^3.2.3": - version: 3.2.3 - resolution: "@internationalized/string@npm:3.2.3" - dependencies: - "@swc/helpers": ^0.5.0 - checksum: aad1dd1de52fa48f17e41ad0a502bab621a08aadb8ccfc02512211d05f7111920d094b49811394a930542a98fe22522c2b5818f6d64eb38aca9638b7b4f11ccd - languageName: node - linkType: hard - "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3761,3093 +3575,265 @@ __metadata: version: 2.6.2 resolution: "@parcel/reporter-dev-server@npm:2.6.2" dependencies: - "@parcel/plugin": 2.6.2 - "@parcel/utils": 2.6.2 - checksum: 44007a3bce0ed6d0a64c2d82644e36ea193a6f5871ba614c083b43a7204031214be7b9de018e497b7fb4fcf01458fa07a665e8213ae6e5b276277f3f2d25bedd - languageName: node - linkType: hard - -"@parcel/resolver-default@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/resolver-default@npm:2.6.2" - dependencies: - "@parcel/node-resolver-core": 2.6.2 - "@parcel/plugin": 2.6.2 - checksum: e0dfff6e62892bfce11a76f66fa1a6013fdcf4f5f8d8afb80b43f0f2111ce0214bdc8348b32207658bd19b8bc046b53f77b1cb5a12892cc668df50373cacd78d - languageName: node - linkType: hard - -"@parcel/runtime-browser-hmr@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/runtime-browser-hmr@npm:2.6.2" - dependencies: - "@parcel/plugin": 2.6.2 - "@parcel/utils": 2.6.2 - checksum: 39a324c4ef4014a8a122fe989d3802dd09eac9a40ff8a762c4e02b1cd49ab0bff4cb1e803333a707ae2ae6a84907c4331f8a39aad753048347f618ffb70e29a9 - languageName: node - linkType: hard - -"@parcel/runtime-js@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/runtime-js@npm:2.6.2" - dependencies: - "@parcel/plugin": 2.6.2 - "@parcel/utils": 2.6.2 - nullthrows: ^1.1.1 - checksum: 861e89c53625b23b0e4c48a938db8f8bc168eb5d739416d3a2e81f91346dcdb163b03e73441fc609c8c8308f679497de7454ce86788251b995d57cf8c1908afe - languageName: node - linkType: hard - -"@parcel/runtime-react-refresh@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/runtime-react-refresh@npm:2.6.2" - dependencies: - "@parcel/plugin": 2.6.2 - "@parcel/utils": 2.6.2 - react-error-overlay: 6.0.9 - react-refresh: ^0.9.0 - checksum: 0c33a13dd47a822bc962cf394d57989d60fc2396463c523f8058dfada537a1d96f3d681932d793304d6d37eea7a9e4c39745c6ce42d3f3f8ddd9c6bced640b21 - languageName: node - linkType: hard - -"@parcel/runtime-service-worker@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/runtime-service-worker@npm:2.6.2" - dependencies: - "@parcel/plugin": 2.6.2 - "@parcel/utils": 2.6.2 - nullthrows: ^1.1.1 - checksum: 2a9790ad275212746873f0ee7a4296156096bf89ceb0c53b8be1f04bc110cbe451bcc3d4f8dca994f2641280e6ae37cba0f507b630ac1b85403f7f385a97f765 - languageName: node - linkType: hard - -"@parcel/source-map@npm:^2.0.0": - version: 2.1.1 - resolution: "@parcel/source-map@npm:2.1.1" - dependencies: - detect-libc: ^1.0.3 - checksum: 1fa27a7047ec08faf7fe1dd0e2ae95a27b84697ecfaed029d0b7d06e46d84ed8f98a9dc9d308fe623655f3c985052dcf7622de479bfa6103c44884fb7f6c810a - languageName: node - linkType: hard - -"@parcel/transformer-js@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/transformer-js@npm:2.6.2" - dependencies: - "@parcel/diagnostic": 2.6.2 - "@parcel/plugin": 2.6.2 - "@parcel/source-map": ^2.0.0 - "@parcel/utils": 2.6.2 - "@parcel/workers": 2.6.2 - "@swc/helpers": ^0.4.2 - browserslist: ^4.6.6 - detect-libc: ^1.0.3 - nullthrows: ^1.1.1 - regenerator-runtime: ^0.13.7 - semver: ^5.7.1 - peerDependencies: - "@parcel/core": ^2.6.2 - checksum: 32a0480b2986b843d55e0c48a965ff842bf7e4d99325d77c1a7e451a1afc41f7f2602b5a61c79dda1d5382b75834b8e5a452cfb7242d029226f750236cbd3bcf - languageName: node - linkType: hard - -"@parcel/transformer-json@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/transformer-json@npm:2.6.2" - dependencies: - "@parcel/plugin": 2.6.2 - json5: ^2.2.0 - checksum: 0b4162ba936999e10ad66a569d16b42947c7e2f98f3ac83fcabe20aefac8990797f8032115441a1d49ad01ccb2555b31d70c3cf7f202ba2a1fcc1bc7e4703fe0 - languageName: node - linkType: hard - -"@parcel/transformer-raw@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/transformer-raw@npm:2.6.2" - dependencies: - "@parcel/plugin": 2.6.2 - checksum: aa8543194f4958f21f74e8c06171116b63c17113d584b121128765277d604965f42a1acb8aca8a7babb2051697cc74edf4be9bd4c203601cff6c291da9cf5383 - languageName: node - linkType: hard - -"@parcel/transformer-react-refresh-wrap@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/transformer-react-refresh-wrap@npm:2.6.2" - dependencies: - "@parcel/plugin": 2.6.2 - "@parcel/utils": 2.6.2 - react-refresh: ^0.9.0 - checksum: 6655b93d5e362b4916eab061ec93badeefec0f07a28245d647d1eda2945f062874a6f2692446353e62c9a261a53840a31a6164775123192cd864d24af5f2e2ab - languageName: node - linkType: hard - -"@parcel/types@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/types@npm:2.6.2" - dependencies: - "@parcel/cache": 2.6.2 - "@parcel/diagnostic": 2.6.2 - "@parcel/fs": 2.6.2 - "@parcel/package-manager": 2.6.2 - "@parcel/source-map": ^2.0.0 - "@parcel/workers": 2.6.2 - utility-types: ^3.10.0 - checksum: 16f3c3ac36eb6f4bfdf91e65b893b10be8911f708752976baf270d087f82957069fb84b410312fc231543ed74573e6dcf5bc01373fe1113f87f91833cb6d5a86 - languageName: node - linkType: hard - -"@parcel/utils@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/utils@npm:2.6.2" - dependencies: - "@parcel/codeframe": 2.6.2 - "@parcel/diagnostic": 2.6.2 - "@parcel/hash": 2.6.2 - "@parcel/logger": 2.6.2 - "@parcel/markdown-ansi": 2.6.2 - "@parcel/source-map": ^2.0.0 - chalk: ^4.1.0 - checksum: a74fdca9664412c6a18ef151cba80e784bb5e74784c5b1e1a8f00c0ab8c747203a819a3211e6822b9d86694825297b73c7fd4a8145212f78b2718d1e4b03c987 - languageName: node - linkType: hard - -"@parcel/watcher@npm:^2.0.0": - version: 2.1.0 - resolution: "@parcel/watcher@npm:2.1.0" - dependencies: - is-glob: ^4.0.3 - micromatch: ^4.0.5 - node-addon-api: ^3.2.1 - node-gyp: latest - node-gyp-build: ^4.3.0 - checksum: 17f512ad6d5dbb40053ceea7091f8af754afc63786b8f050b225b89a8ba24900468aad8bc4edb25c0349b4c0c8d061f50aa19242c0af52cbc30e6ebf50c7bf4c - languageName: node - linkType: hard - -"@parcel/workers@npm:2.6.2": - version: 2.6.2 - resolution: "@parcel/workers@npm:2.6.2" - dependencies: - "@parcel/diagnostic": 2.6.2 - "@parcel/logger": 2.6.2 - "@parcel/types": 2.6.2 - "@parcel/utils": 2.6.2 - chrome-trace-event: ^1.0.2 - nullthrows: ^1.1.1 - peerDependencies: - "@parcel/core": ^2.6.2 - checksum: 92b65cd3fde225dcd377f1f529caeb0d8ee56a9aeef3785716b1ad210132e5dc1b6bd9b7c4c6920094e0030c6aad9cc42d5dbf7b4fb0fb4668eedfd332e0b242 - languageName: node - linkType: hard - -"@pkgjs/parseargs@npm:^0.11.0": - version: 0.11.0 - resolution: "@pkgjs/parseargs@npm:0.11.0" - checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f - languageName: node - linkType: hard - -"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.7": - version: 0.5.10 - resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.10" - dependencies: - ansi-html-community: ^0.0.8 - common-path-prefix: ^3.0.0 - core-js-pure: ^3.23.3 - error-stack-parser: ^2.0.6 - find-up: ^5.0.0 - html-entities: ^2.1.0 - loader-utils: ^2.0.4 - schema-utils: ^3.0.0 - source-map: ^0.7.3 - peerDependencies: - "@types/webpack": 4.x || 5.x - react-refresh: ">=0.10.0 <1.0.0" - sockjs-client: ^1.4.0 - type-fest: ">=0.17.0 <4.0.0" - webpack: ">=4.43.0 <6.0.0" - webpack-dev-server: 3.x || 4.x - webpack-hot-middleware: 2.x - webpack-plugin-serve: 0.x || 1.x - peerDependenciesMeta: - "@types/webpack": - optional: true - sockjs-client: - optional: true - type-fest: - optional: true - webpack-dev-server: - optional: true - webpack-hot-middleware: - optional: true - webpack-plugin-serve: - optional: true - checksum: c45beded9c56fbbdc7213a2c36131ace5db360ed704d462cc39d6678f980173a91c9a3f691e6bd3a026f25486644cd0027e8a12a0a4eced8e8b886a0472e7d34 - languageName: node - linkType: hard - -"@prefresh/babel-plugin@npm:^0.4.3": - version: 0.4.4 - resolution: "@prefresh/babel-plugin@npm:0.4.4" - checksum: 1cd7e9b27936fd8947ecd7e4da70abd05935f44840af3d054ad87638d38ea61f304c45ff7610a4d56bde72e260ddee869cc45806738738edebe7d5a0fe96059a - languageName: node - linkType: hard - -"@prefresh/core@npm:^1.3.3": - version: 1.4.1 - resolution: "@prefresh/core@npm:1.4.1" - peerDependencies: - preact: ^10.0.0 - checksum: afac93e1225d871d88c47717f8b6a328abc9760b212836986fd8bb3017bb6737bb397e016b31c4f542722d0b9c05e1e43d1b5710a61c8efb5208d717d2bb1bba - languageName: node - linkType: hard - -"@prefresh/utils@npm:^1.1.2": - version: 1.1.3 - resolution: "@prefresh/utils@npm:1.1.3" - checksum: a95b816d08a68f499489f1e0098effcda99ccba06c80986cb0dfbcda4fc9c8f8e3238603ead4ee35bb9fb7985de66b1a785d12c64fbc61600e0a8bd388fc2de0 - languageName: node - linkType: hard - -"@prefresh/webpack@npm:^3.3.4": - version: 3.3.4 - resolution: "@prefresh/webpack@npm:3.3.4" - dependencies: - "@prefresh/core": ^1.3.3 - "@prefresh/utils": ^1.1.2 - peerDependencies: - "@prefresh/babel-plugin": ^0.4.0 - preact: ^10.4.0 - webpack: ^4.0.0 || ^5.0.0 - checksum: 49d2184856f7c3335d339b3cff52c85b9524c6b215c120f701bfc7053781adea8db8908f158a756a9234af09acedff101fd087f4adcda367b38ca6403a9e5442 - languageName: node - linkType: hard - -"@react-aria/actiongroup@npm:^3.7.5": - version: 3.7.5 - resolution: "@react-aria/actiongroup@npm:3.7.5" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-stately/list": ^3.10.5 - "@react-types/actiongroup": ^3.4.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 12ea704b87d03c181ba16e0e6e6cbff75d47a433b944358c37e229fc34881f0134d66ae06968ba2cb150df1646ac0d0f3fc28d36499ab306d147cfa893c7649a - languageName: node - linkType: hard - -"@react-aria/breadcrumbs@npm:^3.5.13": - version: 3.5.13 - resolution: "@react-aria/breadcrumbs@npm:3.5.13" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/link": ^3.7.1 - "@react-aria/utils": ^3.24.1 - "@react-types/breadcrumbs": ^3.7.5 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8c285dac2838500f7b77e8fde5d4b137b89154cebc2977e49556da23c49fcddbb5b433a7d19f2c2d1c695c570753411a3ea4eae3da2cf9a9c8f7cef9a7513ed1 - languageName: node - linkType: hard - -"@react-aria/button@npm:^3.9.5": - version: 3.9.5 - resolution: "@react-aria/button@npm:3.9.5" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-stately/toggle": ^3.7.4 - "@react-types/button": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: b2954a637d6718cf25be00ffe82369c20c1a5306c3d4fe09775a8ad56f9c7fc3a1312db8421bf840beab4e299ad121147d70a8cf99f58865f86d7977856aaee2 - languageName: node - linkType: hard - -"@react-aria/calendar@npm:^3.5.8": - version: 3.5.8 - resolution: "@react-aria/calendar@npm:3.5.8" - dependencies: - "@internationalized/date": ^3.5.4 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/live-announcer": ^3.3.4 - "@react-aria/utils": ^3.24.1 - "@react-stately/calendar": ^3.5.1 - "@react-types/button": ^3.9.4 - "@react-types/calendar": ^3.4.6 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0458f676468468b1610db0001654de5b62fe9d8487b9bcca6e72758a116189391d43ffda7fd7ee6692502be9ec8ec63e9e0cef7574d5ff7124ef402c924bd887 - languageName: node - linkType: hard - -"@react-aria/checkbox@npm:^3.14.3": - version: 3.14.3 - resolution: "@react-aria/checkbox@npm:3.14.3" - dependencies: - "@react-aria/form": ^3.0.5 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/toggle": ^3.10.4 - "@react-aria/utils": ^3.24.1 - "@react-stately/checkbox": ^3.6.5 - "@react-stately/form": ^3.0.3 - "@react-stately/toggle": ^3.7.4 - "@react-types/checkbox": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7e58ed1eb31dc4671165072d9788627653844c8f91949b36411c03a8eea3dc78630eedae0735aa90fc172a45dc5899181806b389bc77210144a069d26a0f4c0b - languageName: node - linkType: hard - -"@react-aria/color@npm:3.0.0-beta.33": - version: 3.0.0-beta.33 - resolution: "@react-aria/color@npm:3.0.0-beta.33" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/numberfield": ^3.11.3 - "@react-aria/slider": ^3.7.8 - "@react-aria/spinbutton": ^3.6.5 - "@react-aria/textfield": ^3.14.5 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-stately/color": ^3.6.1 - "@react-stately/form": ^3.0.3 - "@react-types/color": 3.0.0-beta.25 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d5c0c74273c54267ffa8122f35e0234a518f770ffd8c750b9f7a8cdfc2d29b0a87740abefb2a126572b890d6f2471a1cdf267cda697436bbd45e1645ceca5787 - languageName: node - linkType: hard - -"@react-aria/combobox@npm:^3.9.1": - version: 3.9.1 - resolution: "@react-aria/combobox@npm:3.9.1" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/listbox": ^3.12.1 - "@react-aria/live-announcer": ^3.3.4 - "@react-aria/menu": ^3.14.1 - "@react-aria/overlays": ^3.22.1 - "@react-aria/selection": ^3.18.1 - "@react-aria/textfield": ^3.14.5 - "@react-aria/utils": ^3.24.1 - "@react-stately/collections": ^3.10.7 - "@react-stately/combobox": ^3.8.4 - "@react-stately/form": ^3.0.3 - "@react-types/button": ^3.9.4 - "@react-types/combobox": ^3.11.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 466311fa574f9ca89e07a084fde8d308faf999596e4cc898ca6c1b9de4952a7c263f5f93f3904b3182e93d8c8cd5bb998fed55a7af5e3921e424ee9fed524795 - languageName: node - linkType: hard - -"@react-aria/datepicker@npm:^3.10.1": - version: 3.10.1 - resolution: "@react-aria/datepicker@npm:3.10.1" - dependencies: - "@internationalized/date": ^3.5.4 - "@internationalized/number": ^3.5.3 - "@internationalized/string": ^3.2.3 - "@react-aria/focus": ^3.17.1 - "@react-aria/form": ^3.0.5 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/spinbutton": ^3.6.5 - "@react-aria/utils": ^3.24.1 - "@react-stately/datepicker": ^3.9.4 - "@react-stately/form": ^3.0.3 - "@react-types/button": ^3.9.4 - "@react-types/calendar": ^3.4.6 - "@react-types/datepicker": ^3.7.4 - "@react-types/dialog": ^3.5.10 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 127bb202c57b96d02df27992acd96a6a4414ca2077ed07b42e756705e033fde9c693b6ca08f30f5e9f0aa0a4109ec4e52f00c0f1533f58b3512d2cd71d9ebce1 - languageName: node - linkType: hard - -"@react-aria/dialog@npm:^3.5.14": - version: 3.5.14 - resolution: "@react-aria/dialog@npm:3.5.14" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/overlays": ^3.22.1 - "@react-aria/utils": ^3.24.1 - "@react-types/dialog": ^3.5.10 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5b4db6b35b45cd0ce3298136c12ae4b81f658bed5604caa2d5dc3281c531a108c15a5873eb69c0a3a6a59b1e3cad4dada1bb9590807a866affa5ebd19d11f5ce - languageName: node - linkType: hard - -"@react-aria/dnd@npm:^3.6.1": - version: 3.6.1 - resolution: "@react-aria/dnd@npm:3.6.1" - dependencies: - "@internationalized/string": ^3.2.3 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/live-announcer": ^3.3.4 - "@react-aria/overlays": ^3.22.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/dnd": ^3.3.1 - "@react-types/button": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: ebb56a3560ca27f729de2277fa61f3c0ac30e15df10a4c0f51b6dd476d923b4cb3adf3d25381802efdeea8589407bbad171116440b4dc9f0ce9e6ae6ebbeb97f - languageName: node - linkType: hard - -"@react-aria/focus@npm:^3.17.1": - version: 3.17.1 - resolution: "@react-aria/focus@npm:3.17.1" - dependencies: - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - clsx: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 2855d29d3d88d5d3a5c2c4bba480dd8fc81cc48647191d5cd7380365ef353ab1760bd48669011b9b6b7dcff81fd833715af36d5a5900c79a8461a6e1370bb9e7 - languageName: node - linkType: hard - -"@react-aria/form@npm:^3.0.5": - version: 3.0.5 - resolution: "@react-aria/form@npm:3.0.5" - dependencies: - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-stately/form": ^3.0.3 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7e86489a34bdf5de6b1a01860a7e2ca95ac7f8bdda4da8b8573558bf7dacd1ef5613eff5889f16a5fc1695d362b249cbcda5b4a775a616cc923eb1d951d88737 - languageName: node - linkType: hard - -"@react-aria/grid@npm:^3.9.1": - version: 3.9.1 - resolution: "@react-aria/grid@npm:3.9.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/live-announcer": ^3.3.4 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/collections": ^3.10.7 - "@react-stately/grid": ^3.8.7 - "@react-stately/selection": ^3.15.1 - "@react-stately/virtualizer": ^3.7.1 - "@react-types/checkbox": ^3.8.1 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 4f9f8274d98e26e1634c845f0769db4470d6417febf278bf6b22af40bacf2a6c465220ba64f578fb1ecbef88dbde40ec047f2973b3c071b30cad4c760d043dbb - languageName: node - linkType: hard - -"@react-aria/gridlist@npm:^3.8.1": - version: 3.8.1 - resolution: "@react-aria/gridlist@npm:3.8.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/grid": ^3.9.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/collections": ^3.10.7 - "@react-stately/list": ^3.10.5 - "@react-stately/tree": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8ec69fdb6bb25160c5ff84363d96cd28bd1d3e2809f0599f67e1ab9257376b99afa7e718a7dbe18b02450b19918024e9e7cbac6f399d33df74727653c89ddccf - languageName: node - linkType: hard - -"@react-aria/i18n@npm:^3.11.1": - version: 3.11.1 - resolution: "@react-aria/i18n@npm:3.11.1" - dependencies: - "@internationalized/date": ^3.5.4 - "@internationalized/message": ^3.1.4 - "@internationalized/number": ^3.5.3 - "@internationalized/string": ^3.2.3 - "@react-aria/ssr": ^3.9.4 - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5c115f6e0b227f973671d8fe65f4d23de4bf4e805915749218758202e0ed6701ead1641ab25124eb67e5e653bed09312d3343cfe230f5045f1a5779f7205662d - languageName: node - linkType: hard - -"@react-aria/interactions@npm:^3.21.3": - version: 3.21.3 - resolution: "@react-aria/interactions@npm:3.21.3" - dependencies: - "@react-aria/ssr": ^3.9.4 - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0ee5346601420efc05e485d51c563a2c3c4bb2b5c4004ce9599224043fb725e5dbcf8e937fe56540e252f846498c8ebe889ff0adf54ab807e6dee01abb54c7e9 - languageName: node - linkType: hard - -"@react-aria/label@npm:^3.7.8": - version: 3.7.8 - resolution: "@react-aria/label@npm:3.7.8" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 51eb60b8eb5a0aebeaca44a88fa4dc140daeac31bf3255e47132141314637b2430bcdae3d7105b1e52af8ef1f284e1b1c48159af52bb406c0aa064a3d5571291 - languageName: node - linkType: hard - -"@react-aria/link@npm:^3.7.1": - version: 3.7.1 - resolution: "@react-aria/link@npm:3.7.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-types/link": ^3.5.5 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: dd1c59e7687364f9a0a304969fcf36d284e380afc65046c0787b2243cd77e8242c690761320086f7be16c09dbfe4fd85c15b85b6498438f48322bad35f5737ec - languageName: node - linkType: hard - -"@react-aria/listbox@npm:^3.12.1": - version: 3.12.1 - resolution: "@react-aria/listbox@npm:3.12.1" - dependencies: - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/collections": ^3.10.7 - "@react-stately/list": ^3.10.5 - "@react-types/listbox": ^3.4.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 11f7f68d534b6520c0c186291d6cf09fa199beaa0be405002f94512063de9e44ed4b33bc58c0e7e95ab3c93f815edff72d3f678557ca33c037e9267d2d57ef27 - languageName: node - linkType: hard - -"@react-aria/live-announcer@npm:^3.3.4": - version: 3.3.4 - resolution: "@react-aria/live-announcer@npm:3.3.4" - dependencies: - "@swc/helpers": ^0.5.0 - checksum: f216c6049ea77bcecec17cfbb1453e59b2b6034aa03edc6e9df74ab162a1f4197e7b07fb71b086a3b074981ef3171706f7fec4b9877901b7243c16321696a64c - languageName: node - linkType: hard - -"@react-aria/menu@npm:^3.14.1": - version: 3.14.1 - resolution: "@react-aria/menu@npm:3.14.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/overlays": ^3.22.1 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/collections": ^3.10.7 - "@react-stately/menu": ^3.7.1 - "@react-stately/tree": ^3.8.1 - "@react-types/button": ^3.9.4 - "@react-types/menu": ^3.9.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 16749e0df95f3b91cf507078a8b88d28dd9c5f3d7fe28a951e5e1b4be9eefbd9434f02ad351c841798df8bd546c2de993952ad3a09cbd8302a0da04508f0eb39 - languageName: node - linkType: hard - -"@react-aria/meter@npm:^3.4.13": - version: 3.4.13 - resolution: "@react-aria/meter@npm:3.4.13" - dependencies: - "@react-aria/progress": ^3.4.13 - "@react-types/meter": ^3.4.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 42a031da8538bd791a4d2b5805136847fa6d60f043ff75cc134d8dd24cf2a19137d50fbfc717518c2aee2e18397a3be591daee0ae010c580c0a92cdfce10afbc - languageName: node - linkType: hard - -"@react-aria/numberfield@npm:^3.11.3": - version: 3.11.3 - resolution: "@react-aria/numberfield@npm:3.11.3" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/spinbutton": ^3.6.5 - "@react-aria/textfield": ^3.14.5 - "@react-aria/utils": ^3.24.1 - "@react-stately/form": ^3.0.3 - "@react-stately/numberfield": ^3.9.3 - "@react-types/button": ^3.9.4 - "@react-types/numberfield": ^3.8.3 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 63b0c1c1238e4a3b63058fb60174493e9f6ed370694a1c2ea2b04d3920367dfe16637834b3ccb65e30ebe2219786b9e585e26960e31166a4f8193715c3e75dde - languageName: node - linkType: hard - -"@react-aria/overlays@npm:^3.22.1": - version: 3.22.1 - resolution: "@react-aria/overlays@npm:3.22.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/ssr": ^3.9.4 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-stately/overlays": ^3.6.7 - "@react-types/button": ^3.9.4 - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 14a81edee5d2d2af05d21f209c712e4838753aaec7ad7bea4d362a2c354c70cb7f5b2e70cf549ce644f5849af1be7721550cfa577e973d4241605f55ab916115 - languageName: node - linkType: hard - -"@react-aria/progress@npm:^3.4.13": - version: 3.4.13 - resolution: "@react-aria/progress@npm:3.4.13" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/label": ^3.7.8 - "@react-aria/utils": ^3.24.1 - "@react-types/progress": ^3.5.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: db76f5ea818038b5f055ffec6e5fc5fb615af7b8a881d583698067523e80e154e0ef25d41d5551ade5126d6599e77a79b92791e029ccfae032e080ce420541d7 - languageName: node - linkType: hard - -"@react-aria/radio@npm:^3.10.4": - version: 3.10.4 - resolution: "@react-aria/radio@npm:3.10.4" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/form": ^3.0.5 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/utils": ^3.24.1 - "@react-stately/radio": ^3.10.4 - "@react-types/radio": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7c51bc40b3c547def84af5546b7c854b97f4836325177d04bb5f4364939dcda9c5d14e2f099bd86f9e38ad925142894dbe93dc6fe1cdf3acf58c697f4fe6c516 - languageName: node - linkType: hard - -"@react-aria/searchfield@npm:^3.7.5": - version: 3.7.5 - resolution: "@react-aria/searchfield@npm:3.7.5" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/textfield": ^3.14.5 - "@react-aria/utils": ^3.24.1 - "@react-stately/searchfield": ^3.5.3 - "@react-types/button": ^3.9.4 - "@react-types/searchfield": ^3.5.5 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 699751f6399e499052d889f2178bd4cb1ff1baef66ef4926efd255bf9c7f9279d13156eb808591e3c142ca67d878c957298a0e24d45ed218dc9dc7553c45c62d - languageName: node - linkType: hard - -"@react-aria/select@npm:^3.14.5": - version: 3.14.5 - resolution: "@react-aria/select@npm:3.14.5" - dependencies: - "@react-aria/form": ^3.0.5 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/listbox": ^3.12.1 - "@react-aria/menu": ^3.14.1 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-stately/select": ^3.6.4 - "@react-types/button": ^3.9.4 - "@react-types/select": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 97154245b6ea6d14c527f1aaf3243ea06501d12f270925a666a231844cce488be51f3c089c5282d5578ccd507e3aebcdcec8cde40da5bb2da937199e01672d7e - languageName: node - linkType: hard - -"@react-aria/selection@npm:^3.18.1": - version: 3.18.1 - resolution: "@react-aria/selection@npm:3.18.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-stately/selection": ^3.15.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7ed29bd7ebd3a517ec1a049ad36390e0f2ccd41fbea3d826195e895e690b62fe440df96a040cbc8dcaf27eef5cb623116fc05bc995c935b45dd96ca175fd5acd - languageName: node - linkType: hard - -"@react-aria/separator@npm:^3.3.13": - version: 3.3.13 - resolution: "@react-aria/separator@npm:3.3.13" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 85d6ec8a9835834ffdfa4686ae78ead9d124b79a56e57a289da66b4f822371ae85192f0638386b059bff112d7321b7923ac9886db1dede8d921ae10ebf2c1e39 - languageName: node - linkType: hard - -"@react-aria/slider@npm:^3.7.8": - version: 3.7.8 - resolution: "@react-aria/slider@npm:3.7.8" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/utils": ^3.24.1 - "@react-stately/slider": ^3.5.4 - "@react-types/shared": ^3.23.1 - "@react-types/slider": ^3.7.3 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 107931f11d827e821c230d651a86c885cd7d63bab7fe6a621881036ca99f580c667daf60d143de8dc9f22595c39eb9d2c1ae468fd9f840ebb44b53c611446436 - languageName: node - linkType: hard - -"@react-aria/spinbutton@npm:^3.6.5": - version: 3.6.5 - resolution: "@react-aria/spinbutton@npm:3.6.5" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/live-announcer": ^3.3.4 - "@react-aria/utils": ^3.24.1 - "@react-types/button": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 256c848189d6be9d5e83641e608464cf3007116a7918ec39689950371377b61186bd9f84994434058b837539d7ccde6ab3b005ddb3cb44912066d62ecfc8c1f2 - languageName: node - linkType: hard - -"@react-aria/ssr@npm:^3.9.4": - version: 3.9.4 - resolution: "@react-aria/ssr@npm:3.9.4" - dependencies: - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 503669ee9105d6dcf9ef1fb5f3fbfccad28e1ebae0ce707e9272da2ec5b1bcd0f3a725ab340b619177def9e238482274c901600687340d58a622ad14bbd4298b - languageName: node - linkType: hard - -"@react-aria/switch@npm:^3.6.4": - version: 3.6.4 - resolution: "@react-aria/switch@npm:3.6.4" - dependencies: - "@react-aria/toggle": ^3.10.4 - "@react-stately/toggle": ^3.7.4 - "@react-types/switch": ^3.5.3 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 392542a116ba244b8822bfcb1d28e844ba48758df1540fceb4405a833eef191ac11f24a8c5751c0b30b7a67f895c5d9a070265c27d5d56af14084a06bd45d988 - languageName: node - linkType: hard - -"@react-aria/table@npm:^3.14.1": - version: 3.14.1 - resolution: "@react-aria/table@npm:3.14.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/grid": ^3.9.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/live-announcer": ^3.3.4 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-stately/collections": ^3.10.7 - "@react-stately/flags": ^3.0.3 - "@react-stately/table": ^3.11.8 - "@react-stately/virtualizer": ^3.7.1 - "@react-types/checkbox": ^3.8.1 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@react-types/table": ^3.9.5 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 98c0b1d80b498649fb6ef98a19830274ce5b84b6a6ae66b04e9cdd4dc0c6f51cde6d65c03e13e9d92e332edfec8018234ed5c48d5118491cbeb95679dc37f114 - languageName: node - linkType: hard - -"@react-aria/tabs@npm:^3.9.1": - version: 3.9.1 - resolution: "@react-aria/tabs@npm:3.9.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/tabs": ^3.6.6 - "@react-types/shared": ^3.23.1 - "@react-types/tabs": ^3.3.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 26233ca9b2db281665e2951607221ce29401b920d6daca50ed49ad71c8d801f8c658f8a53faeb9e18f3d22af0998d52f7b7ffc20dccb829786ab7557648f5ff0 - languageName: node - linkType: hard - -"@react-aria/tag@npm:^3.4.1": - version: 3.4.1 - resolution: "@react-aria/tag@npm:3.4.1" - dependencies: - "@react-aria/gridlist": ^3.8.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/list": ^3.10.5 - "@react-types/button": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 2167853ddffb5faf84faabe27d6968d16b5e50b89a5ada3e082a54d06bccf0ad1ad9ce0376c5064933ae663dfc9e97e73cb91c73c02f00854291761ea7c00aa2 - languageName: node - linkType: hard - -"@react-aria/textfield@npm:^3.14.5": - version: 3.14.5 - resolution: "@react-aria/textfield@npm:3.14.5" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/form": ^3.0.5 - "@react-aria/label": ^3.7.8 - "@react-aria/utils": ^3.24.1 - "@react-stately/form": ^3.0.3 - "@react-stately/utils": ^3.10.1 - "@react-types/shared": ^3.23.1 - "@react-types/textfield": ^3.9.3 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: a0f4dce62543c7a7c8dd62ca161cb6e065d0c35a0e0853d9e644eba40e81a64b1bbd85f25350d609a8af587b96aaeded77d71cfb8b07f4d18ac9c3799fc2e2c8 - languageName: node - linkType: hard - -"@react-aria/toggle@npm:^3.10.4": - version: 3.10.4 - resolution: "@react-aria/toggle@npm:3.10.4" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-stately/toggle": ^3.7.4 - "@react-types/checkbox": ^3.8.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 4131d28c3761c70fe3cae35abc6c371c65bcab2d1b1712b82c94c438f8b38b33c39fd3198acf78bb8fb8bbcbcfa60381595ae03b526a44d36aac407369b72098 - languageName: node - linkType: hard - -"@react-aria/toolbar@npm:3.0.0-beta.5": - version: 3.0.0-beta.5 - resolution: "@react-aria/toolbar@npm:3.0.0-beta.5" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e95a58e81fb5f8a627f44b8bf6c0df1955f42fc4156f538f22c28ba69367222589c694914287d6d3fb7028b5c8b6da50867bfee8460596122ce1729d47d1c6b2 - languageName: node - linkType: hard - -"@react-aria/tooltip@npm:^3.7.4": - version: 3.7.4 - resolution: "@react-aria/tooltip@npm:3.7.4" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-stately/tooltip": ^3.4.9 - "@react-types/shared": ^3.23.1 - "@react-types/tooltip": ^3.4.9 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 60b8e519b1561e6113da76f6b02cd6cb37d880dd6876a78a8323f62c23b594042073e8c0f3f181a04a1eaea99b82f2e33d891f3c21882a34c607dc8f36567ed3 - languageName: node - linkType: hard - -"@react-aria/tree@npm:3.0.0-alpha.1": - version: 3.0.0-alpha.1 - resolution: "@react-aria/tree@npm:3.0.0-alpha.1" - dependencies: - "@react-aria/gridlist": ^3.8.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/selection": ^3.18.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/tree": ^3.8.1 - "@react-types/button": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5fb7b910e454addc4f88861946bee3f6d135c7898960b6aae802b7fe57ea0277ab132bace3441c083e0945368c06acf8bbfb497823c33a160c1dbcadc2d52429 - languageName: node - linkType: hard - -"@react-aria/utils@npm:^3.24.1": - version: 3.24.1 - resolution: "@react-aria/utils@npm:3.24.1" - dependencies: - "@react-aria/ssr": ^3.9.4 - "@react-stately/utils": ^3.10.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - clsx: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3ea920b878769a739b5a3c085207d0b2c5a914fdd1968063b0c55ae68aa5fd68d53f9810498bc5c3c61945245929e54532983912f136f6bda40141f9a5e4f0be - languageName: node - linkType: hard - -"@react-aria/virtualizer@npm:^3.10.1": - version: 3.10.1 - resolution: "@react-aria/virtualizer@npm:3.10.1" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-stately/virtualizer": ^3.7.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 6080eef35521c331dbeb9c82dfb20aad91893aeb2a67d70b95c4083815b1f40047cd00f163e5cebf7a8cbf1c27af22e85c62970e8d42b3b38ccd566aaaa09190 - languageName: node - linkType: hard - -"@react-aria/visually-hidden@npm:^3.8.12": - version: 3.8.12 - resolution: "@react-aria/visually-hidden@npm:3.8.12" - dependencies: - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 062aaa85b59cfa9a6f7818cb4a53485ede1912c260cddf13d9ac30e6c488692a15456a15641cbc4831a6dd14e0325588e93e56a7255ca638dc12b4b7af21fae3 - languageName: node - linkType: hard - -"@react-spectrum/actionbar@npm:^3.4.5": - version: 3.4.5 - resolution: "@react-spectrum/actionbar@npm:3.4.5" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/live-announcer": ^3.3.4 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/actiongroup": ^3.10.5 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/overlays": ^5.6.1 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-types/actionbar": ^3.1.7 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 4a26d6be29b9da83b4d417127c71e9de0581e123c154ed12fb4e187ea6c0dccbfa5bc5da900f07a561ea0bb5e51fe53da50cb41b7a5f33675c75509a5027c599 - languageName: node - linkType: hard - -"@react-spectrum/actiongroup@npm:^3.10.5": - version: 3.10.5 - resolution: "@react-spectrum/actiongroup@npm:3.10.5" - dependencies: - "@react-aria/actiongroup": ^3.7.5 - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/menu": ^3.19.1 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/tooltip": ^3.6.7 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/list": ^3.10.5 - "@react-types/actiongroup": ^3.4.9 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@spectrum-icons/workflow": ^4.2.12 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.2.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 54a55557a1a58cbaaa36d4e3599483f424e4b4ca4933852ce99db998cd6cb8336ab8ad87ac438d9c336a6555e708986e5481f5ca7393452b7b790bcbcac33780 - languageName: node - linkType: hard - -"@react-spectrum/avatar@npm:^3.0.12": - version: 3.0.12 - resolution: "@react-spectrum/avatar@npm:3.0.12" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/avatar": ^3.0.7 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.2.1 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 34173ee6d14b3e35afbf419e41e29a9163d8c574acb0c4b2daeb3dcf59bf8b16a6e985b9d0741fa450ae878ca3bc42339b23e9b57c1a4ef7cb18678925e21b17 - languageName: node - linkType: hard - -"@react-spectrum/badge@npm:^3.1.13": - version: 3.1.13 - resolution: "@react-spectrum/badge@npm:3.1.13" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-types/badge": ^3.1.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 74c2244836ae3900335faeee4a163ed24995ace11974cf95297e3d74799ef9f872b55dd524a676f01812ad4c12e0af59f73ae4165933e0a02b31b14fad8ec9d7 - languageName: node - linkType: hard - -"@react-spectrum/breadcrumbs@npm:^3.9.7": - version: 3.9.7 - resolution: "@react-spectrum/breadcrumbs@npm:3.9.7" - dependencies: - "@react-aria/breadcrumbs": ^3.5.13 - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/menu": ^3.19.1 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-types/breadcrumbs": ^3.7.5 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1b2a68b3cdc0aa5d094b62cdb07308ebd08bd853f575848a627d49973407ecf5bafa60d339974c7ab4b1567cc156ec7fcaedc55e4e916a34368751cc700abc9a - languageName: node - linkType: hard - -"@react-spectrum/button@npm:^3.16.4": - version: 3.16.4 - resolution: "@react-spectrum/button@npm:3.16.4" - dependencies: - "@react-aria/button": ^3.9.5 - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/toggle": ^3.7.4 - "@react-types/button": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8ff444ed6ebcfa609789c4322a3c1322bd1c2125eff6182c05232f1d0f68fd75e3437cd70d980119441bc60946a0dd5f5487ad868ed6489cea475230cbf166e4 - languageName: node - linkType: hard - -"@react-spectrum/buttongroup@npm:^3.6.13": - version: 3.6.13 - resolution: "@react-spectrum/buttongroup@npm:3.6.13" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/buttongroup": ^3.3.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: ede45a73232a65b3b86b2a176a96fd9d134c05d61cf13e0622f658fe4a4bb8d1f726f92dffe973e7a3c96ff1092b3660467f54d207a125110d4a271cadc853e6 - languageName: node - linkType: hard - -"@react-spectrum/calendar@npm:^3.4.9": - version: 3.4.9 - resolution: "@react-spectrum/calendar@npm:3.4.9" - dependencies: - "@internationalized/date": ^3.5.4 - "@react-aria/calendar": ^3.5.8 - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/calendar": ^3.5.1 - "@react-types/button": ^3.9.4 - "@react-types/calendar": ^3.4.6 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: f63cd5d3817521ac7ebba09834bfd5aba6a36144e8d78007fd61c5b9ba9acece9c02fb6fb748b13be778e4f745a84e9a97030c61c88cd38f09c643309b732734 - languageName: node - linkType: hard - -"@react-spectrum/checkbox@npm:^3.9.6": - version: 3.9.6 - resolution: "@react-spectrum/checkbox@npm:3.9.6" - dependencies: - "@react-aria/checkbox": ^3.14.3 - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/checkbox": ^3.6.5 - "@react-stately/toggle": ^3.7.4 - "@react-types/checkbox": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - react-aria-components: ^1.2.1 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 864651dc2d192593bfa7e261e7ba022ebfe07ac6cb299c583cfd2eef3e53de3945022c6c1062a366dcc0e37e3f9af802834c2acc4239ab1f01afb3e8db1852e1 - languageName: node - linkType: hard - -"@react-spectrum/combobox@npm:^3.12.5": - version: 3.12.5 - resolution: "@react-spectrum/combobox@npm:3.12.5" - dependencies: - "@react-aria/button": ^3.9.5 - "@react-aria/combobox": ^3.9.1 - "@react-aria/dialog": ^3.5.14 - "@react-aria/focus": ^3.17.1 - "@react-aria/form": ^3.0.5 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/overlays": ^3.22.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/listbox": ^3.12.9 - "@react-spectrum/overlays": ^5.6.1 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/textfield": ^3.12.1 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/combobox": ^3.8.4 - "@react-types/button": ^3.9.4 - "@react-types/combobox": ^3.11.1 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 05ce74e0d8bbc3191f7d0d8b04a29f929ac5a64345ea31a631cb57070cb7eea5fcf2ea77c99f50aeedd246b0271959450ea02e9ab1c7caaeb175892052270bd2 - languageName: node - linkType: hard - -"@react-spectrum/contextualhelp@npm:^3.6.11": - version: 3.6.11 - resolution: "@react-spectrum/contextualhelp@npm:3.6.11" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/dialog": ^3.8.11 - "@react-spectrum/utils": ^3.11.7 - "@react-types/contextualhelp": ^3.2.10 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/workflow": ^4.2.12 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: b6fca1f1b8a47ea31da3af335b05b62ac24d4128e4efa8d78db06995e8f2728a391d612a53efd844dc7fda9f5c04dc31aef26080f35045368dbf5e0474c02c8f - languageName: node - linkType: hard - -"@react-spectrum/datepicker@npm:^3.9.6": - version: 3.9.6 - resolution: "@react-spectrum/datepicker@npm:3.9.6" - dependencies: - "@internationalized/date": ^3.5.4 - "@react-aria/datepicker": ^3.10.1 - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/calendar": ^3.4.9 - "@react-spectrum/dialog": ^3.8.11 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/utils": ^3.11.7 - "@react-spectrum/view": ^3.6.10 - "@react-stately/datepicker": ^3.9.4 - "@react-types/datepicker": ^3.7.4 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@spectrum-icons/workflow": ^4.2.12 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3414b1da9dc17134b3bcb5220fbad7fc195957c29fe8e437a25393a32dd75273c767383c131f8f5568ff67e45509410d32793a43922dcd7fe2897d2c11a19f27 - languageName: node - linkType: hard - -"@react-spectrum/dialog@npm:^3.8.11": - version: 3.8.11 - resolution: "@react-spectrum/dialog@npm:3.8.11" - dependencies: - "@react-aria/dialog": ^3.5.14 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/overlays": ^3.22.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/buttongroup": ^3.6.13 - "@react-spectrum/divider": ^3.5.13 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/overlays": ^5.6.1 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-spectrum/view": ^3.6.10 - "@react-stately/overlays": ^3.6.7 - "@react-types/button": ^3.9.4 - "@react-types/dialog": ^3.5.10 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: dbf3aef980c0f49a155ded720ea183db3b33e50652c787a547557a63bcd484035f9c5360e214d00daa9e071bb3b0ca2458e8fa969c77bae30810000bbff045ca - languageName: node - linkType: hard - -"@react-spectrum/divider@npm:^3.5.13": - version: 3.5.13 - resolution: "@react-spectrum/divider@npm:3.5.13" - dependencies: - "@react-aria/separator": ^3.3.13 - "@react-spectrum/utils": ^3.11.7 - "@react-types/divider": ^3.3.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e17307202b8659c8d3fcdeab6603d2d7c9a08bf62b5dd5a31abbd2d6191abf871536029db508d99b2005ca35d1e3fd1adf0e9322530ac38726181ade8a3a7da2 - languageName: node - linkType: hard - -"@react-spectrum/dnd@npm:^3.3.10": - version: 3.3.10 - resolution: "@react-spectrum/dnd@npm:3.3.10" - dependencies: - "@react-aria/dnd": ^3.6.1 - "@react-stately/dnd": ^3.3.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0611fe46ff738aeb8dca48c8caf8b62e43380bd59036c6e40616cb92b651991e68a27ecf80aed7c68726c666befca9a8142cb50759d232ac18f3f282c4c50bd5 - languageName: node - linkType: hard - -"@react-spectrum/dropzone@npm:^3.0.1": - version: 3.0.1 - resolution: "@react-spectrum/dropzone@npm:3.0.1" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - react-aria-components: ^1.2.1 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8495bb643849214af9b1c9057903eb5b40827f45252bb16e5653f5495649ccff0278c46791d131a070b66cec1e1426a8bf619a73058b967a9e92da4a3725f0a0 - languageName: node - linkType: hard - -"@react-spectrum/filetrigger@npm:^3.0.1": - version: 3.0.1 - resolution: "@react-spectrum/filetrigger@npm:3.0.1" - dependencies: - "@swc/helpers": ^0.5.0 - react-aria-components: ^1.2.1 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5929b7ee4ca359ebf682c5fd8a88b99c83fd26345f34272f14a491e0fb035f2618a1a39d4af6f4676363a1a1e580b88aabc94a53453ff03cd001c05ad93850a0 - languageName: node - linkType: hard - -"@react-spectrum/form@npm:^3.7.6": - version: 3.7.6 - resolution: "@react-spectrum/form@npm:3.7.6" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/form": ^3.0.3 - "@react-types/form": ^3.7.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1d54ff9055371e8794b814905e679e585697073768788bb26e30cf176670a8c3749f716a8b85976340ac7f9a179cae6e53ddd98e8757d443bcf3d618187ee28b - languageName: node - linkType: hard - -"@react-spectrum/icon@npm:^3.7.13": - version: 3.7.13 - resolution: "@react-spectrum/icon@npm:3.7.13" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: c02fa25a1755e6b0bd648b26175d36964afc135d192770a85830e875e16fbe947f9a59cd305945f0a1b8e14044f79b29825d30422ec2e9dfbcd66573d1d7a2ca - languageName: node - linkType: hard - -"@react-spectrum/illustratedmessage@npm:^3.5.1": - version: 3.5.1 - resolution: "@react-spectrum/illustratedmessage@npm:3.5.1" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/utils": ^3.11.7 - "@react-types/illustratedmessage": ^3.3.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0b84a490d4b1e0f133dbd8be61fef077b3b3803e0b37a334320445435627b463489dbe240a2d9de880bb0cdb41aebee968af34db828f0980d254429a27b39872 - languageName: node - linkType: hard - -"@react-spectrum/image@npm:^3.5.1": - version: 3.5.1 - resolution: "@react-spectrum/image@npm:3.5.1" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/image": ^3.4.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5d75e99cc6e9797222ec2bafa82577b281dd708fb76337b0fe6f9114bcc9ab9f67e6b6ec6c0c548adfaa1afac98c086b918da7f77b1cbbcd4d8f05314afc18f4 - languageName: node - linkType: hard - -"@react-spectrum/inlinealert@npm:^3.2.5": - version: 3.2.5 - resolution: "@react-spectrum/inlinealert@npm:3.2.5" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d5fade37a9cc8bef90ec4bf39890745b8b00034333b426a6a5d391b066ce78ffd642ed797526f8549cca32601f90ecc1d0f708291f6a26cdd69c8a1ec04a310d - languageName: node - linkType: hard - -"@react-spectrum/label@npm:^3.16.6": - version: 3.16.6 - resolution: "@react-spectrum/label@npm:3.16.6" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/utils": ^3.11.7 - "@react-types/label": ^3.9.3 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: f95069e05cc752ab3ec4639d0607c0492142e348b6537c967bec74a2ba7f8232707fbf1a3849da9d5f35f48d2d924a35dbfb69207b4facdc34dba6d12f3c970d - languageName: node - linkType: hard - -"@react-spectrum/labeledvalue@npm:^3.1.14": - version: 3.1.14 - resolution: "@react-spectrum/labeledvalue@npm:3.1.14" - dependencies: - "@internationalized/date": ^3.5.4 - "@react-aria/i18n": ^3.11.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0c889d99ee55a53c44aabfbadff385d58fb47b242770cb02a2f2c771f2ce0a68c8079e4f8d6cafb3807c60756216781bc0f32d7bb9c3ac47af607c21ce7a731c - languageName: node - linkType: hard - -"@react-spectrum/layout@npm:^3.6.5": - version: 3.6.5 - resolution: "@react-spectrum/layout@npm:3.6.5" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/layout": ^3.3.15 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 785c5e6ce966ac65bb3a89665fdf8099c0b31044aad0138ff3248478d7028a343c166516e888ab73e8ec722940bf9fefd7c34ae3220012bd2895607525357d55 - languageName: node - linkType: hard - -"@react-spectrum/link@npm:^3.6.7": - version: 3.6.7 - resolution: "@react-spectrum/link@npm:3.6.7" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/link": ^3.7.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/link": ^3.5.5 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: abc8dd63254821f8947858c7a7ede942bac32ef752eda6705e9aa267d02c7b319996d0d8c90640af174504be96c72e72359fde400b4870b8a75f15cdade24500 - languageName: node - linkType: hard - -"@react-spectrum/list@npm:^3.7.10": - version: 3.7.10 - resolution: "@react-spectrum/list@npm:3.7.10" - dependencies: - "@react-aria/button": ^3.9.5 - "@react-aria/focus": ^3.17.1 - "@react-aria/gridlist": ^3.8.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/utils": ^3.24.1 - "@react-aria/virtualizer": ^3.10.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-spectrum/checkbox": ^3.9.6 - "@react-spectrum/dnd": ^3.3.10 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/layout": ^3.13.9 - "@react-stately/list": ^3.10.5 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - react-transition-group: ^4.4.5 - peerDependencies: - "@react-spectrum/provider": ^3.2.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 45568e8d7d59325aedbcc253503ee0d6a2547de952a24759474223c26bb1dd88317a2bd541b7b37579c0fde8c81f8fc394030b5d71eaabf5c5006f96426d888e - languageName: node - linkType: hard - -"@react-spectrum/listbox@npm:^3.12.9": - version: 3.12.9 - resolution: "@react-spectrum/listbox@npm:3.12.9" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/listbox": ^3.12.1 - "@react-aria/utils": ^3.24.1 - "@react-aria/virtualizer": ^3.10.1 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/layout": ^3.13.9 - "@react-stately/list": ^3.10.5 - "@react-stately/virtualizer": ^3.7.1 - "@react-types/listbox": ^3.4.9 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.2.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 661651b5f26ae33c09c8c6faad6cdef1d2de523bddeb2d57ff3a261ba563aabc4d1842ee40310034a6751f7c5c58e3579c3be261d0176a2c53cec13b806ad8f1 - languageName: node - linkType: hard - -"@react-spectrum/menu@npm:^3.19.1": - version: 3.19.1 - resolution: "@react-spectrum/menu@npm:3.19.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/menu": ^3.14.1 - "@react-aria/overlays": ^3.22.1 - "@react-aria/separator": ^3.3.13 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/overlays": ^5.6.1 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/menu": ^3.7.1 - "@react-stately/overlays": ^3.6.7 - "@react-stately/tree": ^3.8.1 - "@react-types/menu": ^3.9.9 - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@spectrum-icons/workflow": ^4.2.12 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 988b02b449f9cb4d733828d65a190f355c3383e6c2f6bd03a245e0335541d678ee58f51fbf7ec97b8c882e941118ac9fb035762619b6dd9547f6962818abfca1 - languageName: node - linkType: hard - -"@react-spectrum/meter@npm:^3.5.1": - version: 3.5.1 - resolution: "@react-spectrum/meter@npm:3.5.1" - dependencies: - "@react-aria/meter": ^3.4.13 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/utils": ^3.11.7 - "@react-types/meter": ^3.4.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0f5bf7e81c6b0a410b201ad8d3a00dba3550ad565d30cb7ebc904ced9d79792224e5037e5dfb9e33ab8ebd91519d33b298d74d0d8f3fe9d430652c48d635e22b - languageName: node - linkType: hard - -"@react-spectrum/numberfield@npm:^3.9.3": - version: 3.9.3 - resolution: "@react-spectrum/numberfield@npm:3.9.3" - dependencies: - "@react-aria/button": ^3.9.5 - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/numberfield": ^3.11.3 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/textfield": ^3.12.1 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/numberfield": ^3.9.3 - "@react-types/button": ^3.9.4 - "@react-types/numberfield": ^3.8.3 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@spectrum-icons/workflow": ^4.2.12 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5a076bdea11e0a2c2fa943c9bd63708b1323185f9062559c7d709953fe813b33d29d245629ff1edec1d1067b953d3c64b88886a5d5181e05e02e0c83eba6ebe8 - languageName: node - linkType: hard - -"@react-spectrum/overlays@npm:^5.6.1": - version: 5.6.1 - resolution: "@react-spectrum/overlays@npm:5.6.1" - dependencies: - "@react-aria/interactions": ^3.21.3 - "@react-aria/overlays": ^3.22.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/overlays": ^3.6.7 - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - react-transition-group: ^4.4.5 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: df7936cdbfbc57cc585a02dfd242bf1b4bbb1b7cfa6175e0f07570f87cf316f10e0b84018ef831c7d877b9d706eae12989cd99d7b460fd0df7a5fd41938aec93 - languageName: node - linkType: hard - -"@react-spectrum/picker@npm:^3.14.5": - version: 3.14.5 - resolution: "@react-spectrum/picker@npm:3.14.5" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/select": ^3.14.5 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/listbox": ^3.12.9 - "@react-spectrum/overlays": ^5.6.1 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/select": ^3.6.4 - "@react-types/select": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.1.4 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 90390ce2ba2ce46fbf7abe4035f68e0553ad113be135050f6c642361371045e9f1dc802bc85100c43ce1582954656efbeec4614ee44ddfd0016c0ab0a5aa7f06 - languageName: node - linkType: hard - -"@react-spectrum/progress@npm:^3.7.7": - version: 3.7.7 - resolution: "@react-spectrum/progress@npm:3.7.7" - dependencies: - "@react-aria/progress": ^3.4.13 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/progress": ^3.5.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7473b49aecc39373effe0de0c48aaa2a0ab84d3f1770153f58a93eea4690030ba70de993ef77590d63f6f82960e9a42f3b71079e170c54cfae2120a0087696c6 - languageName: node - linkType: hard - -"@react-spectrum/provider@npm:^3.9.7": - version: 3.9.7 - resolution: "@react-spectrum/provider@npm:3.9.7" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/overlays": ^3.22.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/provider": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - clsx: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 206345debfb24565fcc293fa9afb77171d716585a6d8fe4465d1f60ebd53522f62c2b5c965495efe19c9fcacf813218370ba08cad3b397bf848fd2fdbaf0a3cc - languageName: node - linkType: hard - -"@react-spectrum/radio@npm:^3.7.6": - version: 3.7.6 - resolution: "@react-spectrum/radio@npm:3.7.6" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/radio": ^3.10.4 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/radio": ^3.10.4 - "@react-types/radio": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3c61a351885573b04c24ab294bebf4871142350e1727a58db727f9162562ea287371195eeb41224fdf1ea64eef89e50730261ecfc1285b3e1b22e8c846ed1753 - languageName: node - linkType: hard - -"@react-spectrum/searchfield@npm:^3.8.6": - version: 3.8.6 - resolution: "@react-spectrum/searchfield@npm:3.8.6" - dependencies: - "@react-aria/searchfield": ^3.7.5 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/textfield": ^3.12.1 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/searchfield": ^3.5.3 - "@react-types/searchfield": ^3.5.5 - "@react-types/textfield": ^3.9.3 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 952b2f691d430d7e44bff46bce9822cc0681999d70133c04fff8a34900869a3b59474cfc5682f0cfa95eb2d225279e501e299fe53bea8325887dc2ecbddcd14c - languageName: node - linkType: hard - -"@react-spectrum/slider@npm:^3.6.9": - version: 3.6.9 - resolution: "@react-spectrum/slider@npm:3.6.9" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/slider": ^3.7.8 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/slider": ^3.5.4 - "@react-types/shared": ^3.23.1 - "@react-types/slider": ^3.7.3 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 078dbf7e4ccd1c3c007fafc569f6aa2d3f21cf297924ddb81f573aadcc8fb2e89b40c461b925473591d784c79bb378d20df8670feae1887fed19978d9defd337 - languageName: node - linkType: hard - -"@react-spectrum/statuslight@npm:^3.5.13": - version: 3.5.13 - resolution: "@react-spectrum/statuslight@npm:3.5.13" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@react-types/statuslight": ^3.3.9 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 875cb8255c69329b57496a58b3cbc9814d5c9985e2c679ebb1055bd12ed58093af6ca34e747dfdbda146ae027938c1f4ec3ccd2de8a43df4259efeae21fbcbea - languageName: node - linkType: hard - -"@react-spectrum/switch@npm:^3.5.5": - version: 3.5.5 - resolution: "@react-spectrum/switch@npm:3.5.5" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/switch": ^3.6.4 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/toggle": ^3.7.4 - "@react-types/shared": ^3.23.1 - "@react-types/switch": ^3.5.3 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3546df01a7764d5e25ba68a6aa5e5af34c7d84a88ae092ba07345cba7a6e913e759d1ddccda5744381a49fdb801ac7041bb7c2da8f460af47a0fed30f4c30c71 - languageName: node - linkType: hard - -"@react-spectrum/table@npm:^3.12.10": - version: 3.12.10 - resolution: "@react-spectrum/table@npm:3.12.10" - dependencies: - "@react-aria/button": ^3.9.5 - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/overlays": ^3.22.1 - "@react-aria/table": ^3.14.1 - "@react-aria/utils": ^3.24.1 - "@react-aria/virtualizer": ^3.10.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-spectrum/checkbox": ^3.9.6 - "@react-spectrum/dnd": ^3.3.10 - "@react-spectrum/layout": ^3.6.5 - "@react-spectrum/menu": ^3.19.1 - "@react-spectrum/progress": ^3.7.7 - "@react-spectrum/tooltip": ^3.6.7 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/flags": ^3.0.3 - "@react-stately/layout": ^3.13.9 - "@react-stately/table": ^3.11.8 - "@react-stately/virtualizer": ^3.7.1 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@react-types/table": ^3.9.5 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8fd2af5dbc9488417448d7fcc79d1aaa25de4228e083a6228f2897202fb09970f13703bf68c042600b42fd992e7babd0798ba81d379b301cdf4ebb542593480e - languageName: node - linkType: hard - -"@react-spectrum/tabs@npm:^3.8.10": - version: 3.8.10 - resolution: "@react-spectrum/tabs@npm:3.8.10" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/tabs": ^3.9.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/picker": ^3.14.5 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/list": ^3.10.5 - "@react-stately/tabs": ^3.6.6 - "@react-types/select": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@react-types/tabs": ^3.3.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1362aa0e6ce8c4319d5c4315561c937d508e2e1b10fd652fd5f8563f0e22a5d35bd24dc7aa1246baf5c18b0596b2163d89e991fa53707ce426295aab38c9bf4a - languageName: node - linkType: hard - -"@react-spectrum/tag@npm:^3.2.6": - version: 3.2.6 - resolution: "@react-spectrum/tag@npm:3.2.6" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/selection": ^3.18.1 - "@react-aria/tag": ^3.4.1 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/button": ^3.16.4 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/text": ^3.5.5 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/collections": ^3.10.7 - "@react-stately/list": ^3.10.5 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: edca8657168cc4219df9d10c18ef3ff928318c5b9cd2332f6155eee49f3c06cdfac89ebb0097d79cc0d78051b4c3745696df3e5130e71ee3945d36623f5ebab4 - languageName: node - linkType: hard - -"@react-spectrum/text@npm:^3.5.5": - version: 3.5.5 - resolution: "@react-spectrum/text@npm:3.5.5" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@react-types/text": ^3.3.9 - "@swc/helpers": ^0.5.0 - react-aria-components: ^1.2.1 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1878b1f9807ff565f64e268fb9450e69ca4ac20613853890df649784fbd21d9773482047a2fa94ebafac00ca49d0f81a119128b0a1fa745b775dee43d4cb2c61 - languageName: node - linkType: hard - -"@react-spectrum/textfield@npm:^3.12.1": - version: 3.12.1 - resolution: "@react-spectrum/textfield@npm:3.12.1" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/textfield": ^3.14.5 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/form": ^3.7.6 - "@react-spectrum/label": ^3.16.6 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/utils": ^3.10.1 - "@react-types/shared": ^3.23.1 - "@react-types/textfield": ^3.9.3 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e152f32ead141e1bf3f4e02781bc73825d72a8382f1821abbd484f310dc35872219447e7bb529e5ce5659bded00a8f53b7843baec7f031af359dd0f532a7a320 - languageName: node - linkType: hard - -"@react-spectrum/theme-dark@npm:^3.5.10": - version: 3.5.10 - resolution: "@react-spectrum/theme-dark@npm:3.5.10" - dependencies: - "@react-types/provider": ^3.8.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 88bb544fc79d167db8445c53d392a221cf1934d6846d15beb15eb67b4315c0556c13219c18211d3ad8ee493b6fe3ef6ace302f0b69c2a5f090d051c95826f928 - languageName: node - linkType: hard - -"@react-spectrum/theme-default@npm:^3.5.10": - version: 3.5.10 - resolution: "@react-spectrum/theme-default@npm:3.5.10" - dependencies: - "@react-types/provider": ^3.8.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 67eb6000515627c4a9b35ffd64835091a45f723ac9dc2b0ee88a0883be178653f5a480ba1a4b79a006328adf73ee110b2baa06d76cdfb866cbaa9e127d056ba3 - languageName: node - linkType: hard - -"@react-spectrum/theme-light@npm:^3.4.10": - version: 3.4.10 - resolution: "@react-spectrum/theme-light@npm:3.4.10" - dependencies: - "@react-types/provider": ^3.8.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 593bd355e64b4a7429d59dce1a15bf52f2923eb355d95ecbaa95b583be19964ea47fe9057fd3b53e51608235487efcbd82b70d4544264994b7fb66e759742c4a - languageName: node - linkType: hard - -"@react-spectrum/tooltip@npm:^3.6.7": - version: 3.6.7 - resolution: "@react-spectrum/tooltip@npm:3.6.7" - dependencies: - "@react-aria/focus": ^3.17.1 - "@react-aria/overlays": ^3.22.1 - "@react-aria/tooltip": ^3.7.4 - "@react-aria/utils": ^3.24.1 - "@react-spectrum/overlays": ^5.6.1 - "@react-spectrum/utils": ^3.11.7 - "@react-stately/tooltip": ^3.4.9 - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - "@react-types/tooltip": ^3.4.9 - "@spectrum-icons/ui": ^3.6.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: bc2b0b1783c1b0bec9e0a01339f8a33559a503ee98f915e8b7d02119a58e5f6ca856e52759a1bd4730471c171277dd75465d525127c8487389b1ca430270851b - languageName: node - linkType: hard - -"@react-spectrum/utils@npm:^3.11.7": - version: 3.11.7 - resolution: "@react-spectrum/utils@npm:3.11.7" - dependencies: - "@react-aria/i18n": ^3.11.1 - "@react-aria/ssr": ^3.9.4 - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - clsx: ^2.0.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 74998214d8babdd48f21e207a65f03a4c743dc75ac3ef301b8ebfde17cb87acbcf8b066f5182a2444385ba65cd5de38a233c39e289a355ef90bf2f77d1ec1bba - languageName: node - linkType: hard - -"@react-spectrum/view@npm:^3.6.10": - version: 3.6.10 - resolution: "@react-spectrum/view@npm:3.6.10" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@react-types/view": ^3.4.9 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8662d00cec8cb35d9a620d6656df07dc5d4940ef6a87c96a5dde2077538f102ad946ce1acdcfd7658fc28d18945000a6c89eb9364e003e3d8447b25c9b05d110 - languageName: node - linkType: hard - -"@react-spectrum/well@npm:^3.4.13": - version: 3.4.13 - resolution: "@react-spectrum/well@npm:3.4.13" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-spectrum/utils": ^3.11.7 - "@react-types/shared": ^3.23.1 - "@react-types/well": ^3.3.9 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: ccec539514540c2dcd684f9ef3e9119dcc04d0aa37bf016ffda4894cae17f4dc2fe1015d0648203fb24baa4a3187b869b4df5346edb7f942b7345e13b9a1ad20 - languageName: node - linkType: hard - -"@react-stately/calendar@npm:^3.5.1": - version: 3.5.1 - resolution: "@react-stately/calendar@npm:3.5.1" - dependencies: - "@internationalized/date": ^3.5.4 - "@react-stately/utils": ^3.10.1 - "@react-types/calendar": ^3.4.6 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: cc89fd2cff80977c71e67ac035b39cc6521f2be1474f21485e9a3919be18b7780f8a3d495cac1f3f50aa5fb2560874a5048ba9749e90f184e113f7e9e215b6ee - languageName: node - linkType: hard - -"@react-stately/checkbox@npm:^3.6.5": - version: 3.6.5 - resolution: "@react-stately/checkbox@npm:3.6.5" - dependencies: - "@react-stately/form": ^3.0.3 - "@react-stately/utils": ^3.10.1 - "@react-types/checkbox": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 8181533763370159f2b2d8f8902b9afe0ffbbcbd39dd89208282b9d2d17acff4cac962df1fc0796a5f282d6dff805e3204e31fd9436268a3eea9da4821f90279 - languageName: node - linkType: hard - -"@react-stately/collections@npm:^3.10.7": - version: 3.10.7 - resolution: "@react-stately/collections@npm:3.10.7" - dependencies: - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 9540f1282c860cb8803c30f556667f8dfb76fcc30a2d033d6d2c2a9db174b10d7d6eb467badd6d70513161c3e7cf2eb9af30c01fa734acc5826607db8c47de13 - languageName: node - linkType: hard - -"@react-stately/color@npm:^3.6.1": - version: 3.6.1 - resolution: "@react-stately/color@npm:3.6.1" - dependencies: - "@internationalized/number": ^3.5.3 - "@internationalized/string": ^3.2.3 - "@react-aria/i18n": ^3.11.1 - "@react-stately/form": ^3.0.3 - "@react-stately/numberfield": ^3.9.3 - "@react-stately/slider": ^3.5.4 - "@react-stately/utils": ^3.10.1 - "@react-types/color": 3.0.0-beta.25 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: a972e5e0457003bf28b89f8c8500da11bf090316c5f06d531eef51e116f1ab4a35785b173579d6edf27fd4ac09db6396ce67a71713b90d26954a233638e4ca41 - languageName: node - linkType: hard - -"@react-stately/combobox@npm:^3.8.4": - version: 3.8.4 - resolution: "@react-stately/combobox@npm:3.8.4" - dependencies: - "@react-stately/collections": ^3.10.7 - "@react-stately/form": ^3.0.3 - "@react-stately/list": ^3.10.5 - "@react-stately/overlays": ^3.6.7 - "@react-stately/select": ^3.6.4 - "@react-stately/utils": ^3.10.1 - "@react-types/combobox": ^3.11.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: c39deb7ba129655624bc8a25ce18281f81e85334c154fb465b0c6b17a61376779dc0bbe427b38e998fb6ca360aedb89cc1b759fa0da695f2bd8ba7bcef8fdf38 - languageName: node - linkType: hard - -"@react-stately/data@npm:^3.11.4": - version: 3.11.4 - resolution: "@react-stately/data@npm:3.11.4" - dependencies: - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: eb4235c6d3876f5f4d0eedec7da9f0e1242cd27ef1a04288f430047d6201caff7ad1fdbbfb275d39bc5bd0b88766c75dc23feb84676495a23e90c6be7ec6db75 - languageName: node - linkType: hard - -"@react-stately/datepicker@npm:^3.9.4": - version: 3.9.4 - resolution: "@react-stately/datepicker@npm:3.9.4" - dependencies: - "@internationalized/date": ^3.5.4 - "@internationalized/string": ^3.2.3 - "@react-stately/form": ^3.0.3 - "@react-stately/overlays": ^3.6.7 - "@react-stately/utils": ^3.10.1 - "@react-types/datepicker": ^3.7.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7faaadd551e8be87d45a5114bd510d3232c96e6303380c168b5cb542964a4e228ba8e056c19d9189750375874e6e5c422a4ef8f7f133e0937f5279a76bc3400b - languageName: node - linkType: hard - -"@react-stately/dnd@npm:^3.3.1": - version: 3.3.1 - resolution: "@react-stately/dnd@npm:3.3.1" - dependencies: - "@react-stately/selection": ^3.15.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 029d063409d1f7fb8e43f4548d9a0b007d8791b1a988e4abfe9f9464f885bc0d22757115192c19013b6cc79cfbc516b1b32856f68655bee45090f213b98505fe - languageName: node - linkType: hard - -"@react-stately/flags@npm:^3.0.3": - version: 3.0.3 - resolution: "@react-stately/flags@npm:3.0.3" - dependencies: - "@swc/helpers": ^0.5.0 - checksum: 8b88ccde3224efdafc947c9ee416fa45d0cf71f3d992790a6c0ba8227ca668e6d53e63fb3b2c2a3bcc80be92595c38b2473ba5b42bd81099ba24ebcf23635e8e - languageName: node - linkType: hard - -"@react-stately/form@npm:^3.0.3": - version: 3.0.3 - resolution: "@react-stately/form@npm:3.0.3" - dependencies: - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 667a34eb0d8edb66ebb93df00c70283954cd12568f0d017f7d40a5005cb7ab840a82b7e66d8edde1f26b268ccb674e26fbb102cbbd05deca7c21d924bc77eb96 - languageName: node - linkType: hard - -"@react-stately/grid@npm:^3.8.7": - version: 3.8.7 - resolution: "@react-stately/grid@npm:3.8.7" - dependencies: - "@react-stately/collections": ^3.10.7 - "@react-stately/selection": ^3.15.1 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 2d63aa8837f7aafb1f59cf83efa5cc74e4fdd14cc87eaef048a96612034492ad7b311c2ca5c826d1ea3172dee0aed70d2e0c3ab5bff2b9e422331cfc8e129668 - languageName: node - linkType: hard - -"@react-stately/layout@npm:^3.13.9": - version: 3.13.9 - resolution: "@react-stately/layout@npm:3.13.9" - dependencies: - "@react-stately/collections": ^3.10.7 - "@react-stately/table": ^3.11.8 - "@react-stately/virtualizer": ^3.7.1 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@react-types/table": ^3.9.5 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 08f23b82057a3f6307408cc719a2b193b3063b9e09ebde76c1e5ea341faf9d15f52205aad956532b0a8b9348a2c95a6fea381f3a82da4ee4b336db44bebb2162 - languageName: node - linkType: hard - -"@react-stately/list@npm:^3.10.5": - version: 3.10.5 - resolution: "@react-stately/list@npm:3.10.5" - dependencies: - "@react-stately/collections": ^3.10.7 - "@react-stately/selection": ^3.15.1 - "@react-stately/utils": ^3.10.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e4dda7edf6f3a6c1fb4c39f4df933498ba11de41be75c579fe989b9a038828235b00e35b02b4571f06eb1a1045d5c945ecaac1f04bf44f854f9ec5fa48932a6f - languageName: node - linkType: hard - -"@react-stately/menu@npm:^3.7.1": - version: 3.7.1 - resolution: "@react-stately/menu@npm:3.7.1" - dependencies: - "@react-stately/overlays": ^3.6.7 - "@react-types/menu": ^3.9.9 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 24d5f6746ed45564003d9f68951a7079693ea1bcdeb62ccccd97fd052ba1afa129e32c9bca0020983b10bb4f96f9c5d3186fb98cced40dc346a6b12f3839dde6 - languageName: node - linkType: hard - -"@react-stately/numberfield@npm:^3.9.3": - version: 3.9.3 - resolution: "@react-stately/numberfield@npm:3.9.3" - dependencies: - "@internationalized/number": ^3.5.3 - "@react-stately/form": ^3.0.3 - "@react-stately/utils": ^3.10.1 - "@react-types/numberfield": ^3.8.3 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 84b043a60fb6010656797f072fa20208dcb51847ccee803ea6a317de7db3af07faaea05fccebb5b0cda533b7af7d62eb40ea565f0578ef21871735d9c18d7805 - languageName: node - linkType: hard - -"@react-stately/overlays@npm:^3.6.7": - version: 3.6.7 - resolution: "@react-stately/overlays@npm:3.6.7" - dependencies: - "@react-stately/utils": ^3.10.1 - "@react-types/overlays": ^3.8.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 37b309931e26354eb11ff97ed634dc66d93181b72a07843295a4cc2cb756611599fea46fb65d7a1e26292a1fdda5ed4d74835c812349160771619af4d999b551 - languageName: node - linkType: hard - -"@react-stately/radio@npm:^3.10.4": - version: 3.10.4 - resolution: "@react-stately/radio@npm:3.10.4" - dependencies: - "@react-stately/form": ^3.0.3 - "@react-stately/utils": ^3.10.1 - "@react-types/radio": ^3.8.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 73283d79a4d35351361b19438bd8ba59f3afa5fac3a4ebac4ff00c42ce38bea61f05ff5e161107dbaec6dd270e530430b1462c97e4a987b4b6eabfb289331bc5 - languageName: node - linkType: hard - -"@react-stately/searchfield@npm:^3.5.3": - version: 3.5.3 - resolution: "@react-stately/searchfield@npm:3.5.3" - dependencies: - "@react-stately/utils": ^3.10.1 - "@react-types/searchfield": ^3.5.5 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 231d471c94896f0d28780855ae025f924c4128e900f6ce44565808101a556398047ce357145bb9137fa4e233e0e73d3f9686fde94b3386ce5b7eac7b8ec69b46 - languageName: node - linkType: hard - -"@react-stately/select@npm:^3.6.4": - version: 3.6.4 - resolution: "@react-stately/select@npm:3.6.4" - dependencies: - "@react-stately/form": ^3.0.3 - "@react-stately/list": ^3.10.5 - "@react-stately/overlays": ^3.6.7 - "@react-types/select": ^3.9.4 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: cde5683a759b00411a7c7eb9bfe5133ee8f9c90b247bd280678e729a8a7783e866962d709708ea672813584fbeaaf9423263ae60d4e2ca1e6474b0ea6811d1e0 - languageName: node - linkType: hard - -"@react-stately/selection@npm:^3.15.1": - version: 3.15.1 - resolution: "@react-stately/selection@npm:3.15.1" - dependencies: - "@react-stately/collections": ^3.10.7 - "@react-stately/utils": ^3.10.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: ed9f673604670110c2875b8b1637865529904fe532e959d7a572e20626c596a20e6f49bb0a93d9ed2abe2cc30ab467cef8357c622fc29217785b9a558e75585c - languageName: node - linkType: hard - -"@react-stately/slider@npm:^3.5.4": - version: 3.5.4 - resolution: "@react-stately/slider@npm:3.5.4" - dependencies: - "@react-stately/utils": ^3.10.1 - "@react-types/shared": ^3.23.1 - "@react-types/slider": ^3.7.3 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1ca62b352902349773df23f39b6782d4497987c9c21ac7065d0ef4c94814414ffc4ee62f097333f8a9ed3de4f6d6899aa7b81556b60be63f2865cabc24209d66 - languageName: node - linkType: hard - -"@react-stately/table@npm:^3.11.8": - version: 3.11.8 - resolution: "@react-stately/table@npm:3.11.8" - dependencies: - "@react-stately/collections": ^3.10.7 - "@react-stately/flags": ^3.0.3 - "@react-stately/grid": ^3.8.7 - "@react-stately/selection": ^3.15.1 - "@react-stately/utils": ^3.10.1 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@react-types/table": ^3.9.5 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 751d212e19a17f01e1244df63b41e4ab4db56baf7eb73632f89adc21698f7ef2563bd331d34f12154630e8fe583064f89100a2cd4181bb525cafcf16b69f7b80 - languageName: node - linkType: hard - -"@react-stately/tabs@npm:^3.6.6": - version: 3.6.6 - resolution: "@react-stately/tabs@npm:3.6.6" - dependencies: - "@react-stately/list": ^3.10.5 - "@react-types/shared": ^3.23.1 - "@react-types/tabs": ^3.3.7 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d4e842c46be72114ff7c997f435741f93c52a784354354d7b7df4d031b463eabf5c63625a3dee02eec3d7078f2302c4b3403018b15385bb813301ce63c3454f9 - languageName: node - linkType: hard - -"@react-stately/toggle@npm:^3.7.4": - version: 3.7.4 - resolution: "@react-stately/toggle@npm:3.7.4" - dependencies: - "@react-stately/utils": ^3.10.1 - "@react-types/checkbox": ^3.8.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 2c75b712ab87577ad8de6a981bddebfd364c11e692f0584e6d0c5970c0f87c42a7737372b303eeadd043d4f7013984aed029cf221ec1ac20939409ca4ace5541 - languageName: node - linkType: hard - -"@react-stately/tooltip@npm:^3.4.9": - version: 3.4.9 - resolution: "@react-stately/tooltip@npm:3.4.9" - dependencies: - "@react-stately/overlays": ^3.6.7 - "@react-types/tooltip": ^3.4.9 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 24eaaafaec308d3f11800d4868800652bb162e6c7d1e15f97896e18743218a9e222b908e9985c366a84baffd93fe31fa5349f3b0c2f685dd6a12c77e1c45685f - languageName: node - linkType: hard - -"@react-stately/tree@npm:^3.8.1": - version: 3.8.1 - resolution: "@react-stately/tree@npm:3.8.1" - dependencies: - "@react-stately/collections": ^3.10.7 - "@react-stately/selection": ^3.15.1 - "@react-stately/utils": ^3.10.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: f6cec7c6422636c819b2ecdb4c53d1ad428698b41bad88d8c4e1d9cdbe0fa6696812cb77449396710987fb3ed14069a8de5c056ac2259f6fb82e443a003e6aa8 - languageName: node - linkType: hard - -"@react-stately/utils@npm:^3.10.1": - version: 3.10.1 - resolution: "@react-stately/utils@npm:3.10.1" - dependencies: - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: b5252fcab7a6c5fe413030613a5891e2893070b6d65e318b3233e5d96af7f122045329a9b3754f47ceab5a652d51e2fb95e256a7060e595638f2b045741f2258 - languageName: node - linkType: hard - -"@react-stately/virtualizer@npm:^3.7.1": - version: 3.7.1 - resolution: "@react-stately/virtualizer@npm:3.7.1" - dependencies: - "@react-aria/utils": ^3.24.1 - "@react-types/shared": ^3.23.1 - "@swc/helpers": ^0.5.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 6510c43e90478b017d990648472ec9329a78399683cb9ec8d3c84f73b293a373eaf501bee77655dfab59cab96a7bf91b4ec7f6906d57da14ad5839f37cb1a6da - languageName: node - linkType: hard - -"@react-types/actionbar@npm:^3.1.7": - version: 3.1.7 - resolution: "@react-types/actionbar@npm:3.1.7" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 4bc6abb3f6e1c9148d1e2b707cea1457e8d439c977e550efd67d17ec8de76adcabffe1e9cf2767ddb5cf355e5666352d157e3266680f583fc9a9a16d023596b5 - languageName: node - linkType: hard - -"@react-types/actiongroup@npm:^3.4.9": - version: 3.4.9 - resolution: "@react-types/actiongroup@npm:3.4.9" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 6400eab6a6c6ca11b9f15e8c63203b8422ddb44a769ea72c6c390b58196da2fd8f98f6dedd19f32be2ff6e778d13b47ac372eca2ca68fde02ef4d919c7edadd6 - languageName: node - linkType: hard - -"@react-types/avatar@npm:^3.0.7": - version: 3.0.7 - resolution: "@react-types/avatar@npm:3.0.7" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 9bb47620bad752f130a5e6ae26a4e23a4bc82a8f838d6510cf445d504cadf605babd1db3c4dcc194441eddbfa4af43e960d4d33dcc074e3bdb14e8187f33e499 - languageName: node - linkType: hard - -"@react-types/badge@npm:^3.1.9": - version: 3.1.9 - resolution: "@react-types/badge@npm:3.1.9" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: ba173cb4d47b13aa1b8aad36f4f03a5071941376a5fb0371399500daefd4d235891e67a8ceefafc933d58a9226cf5ee5ad8877732bdea5d0f3bda56968767a6c - languageName: node - linkType: hard - -"@react-types/breadcrumbs@npm:^3.7.5": - version: 3.7.5 - resolution: "@react-types/breadcrumbs@npm:3.7.5" - dependencies: - "@react-types/link": ^3.5.5 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5765e877aff02ecacbfe7516b29fef506569002fb1e48a00ad9e6706eb79921fc162e3cf73197338e5389507d62e731776923bfac8b98886e3eec7806b1f8157 - languageName: node - linkType: hard - -"@react-types/button@npm:^3.9.4": - version: 3.9.4 - resolution: "@react-types/button@npm:3.9.4" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 2c16247709be5d7acdc631439ff3647dc7ce20c037bdc8b3aee2662c17d177cc9d6060898672f08b48d05ea118d86c41df5588a8088053ae30ec38f3055851d8 - languageName: node - linkType: hard - -"@react-types/buttongroup@npm:^3.3.9": - version: 3.3.9 - resolution: "@react-types/buttongroup@npm:3.3.9" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 498e5777b620ce6ce49c939ebf23d1653dd3c02b57cdf5b0c3b7deae346d8badd5310aaa9924bf580839c21ff9cab23ad2146c8a5ed5ce957f8c8ef4764caa2d - languageName: node - linkType: hard - -"@react-types/calendar@npm:^3.4.6": - version: 3.4.6 - resolution: "@react-types/calendar@npm:3.4.6" - dependencies: - "@internationalized/date": ^3.5.4 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 2755ac9af08e79c23c18094ccd62f63e71537cad85e24ddaffda5b66f0392f3e427e5bbbbc4005c54198ede5f6a3febaf5e8056b19cf35bb8e3fe39c0cb6ffcb - languageName: node - linkType: hard - -"@react-types/checkbox@npm:^3.8.1": - version: 3.8.1 - resolution: "@react-types/checkbox@npm:3.8.1" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 3d87a8363e794e2586f3569f376d489e9a11e288cc3c56bd610b61141691154a7b54243bc8cd5eec0ac0450ccf3e9d66fd5e610f50436ec014ec5417ff64ea2e - languageName: node - linkType: hard - -"@react-types/color@npm:3.0.0-beta.25": - version: 3.0.0-beta.25 - resolution: "@react-types/color@npm:3.0.0-beta.25" - dependencies: - "@react-types/shared": ^3.23.1 - "@react-types/slider": ^3.7.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: db51b4fc6d5ce47043e150a259591fdc79916f54884bd0c11c76bebf7774f83dde01d3daa6b522a51621eea2f6442668f2d5f5e7bbc4fb3fcadbee104ad21482 - languageName: node - linkType: hard - -"@react-types/combobox@npm:^3.11.1": - version: 3.11.1 - resolution: "@react-types/combobox@npm:3.11.1" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 6bbaa9f412cd2a84ff9085c9d5d4fc5a9fefc51ec9ae66ded6d1f439ca8834c0587a2b45bb6c27bd28a0ad9b7d88c2757c66d74e0e9bbd92c4d59ec116819483 - languageName: node - linkType: hard - -"@react-types/contextualhelp@npm:^3.2.10": - version: 3.2.10 - resolution: "@react-types/contextualhelp@npm:3.2.10" - dependencies: - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 91c2d342f8fe7ad6513227a160477789fcbbef9baec77fd13c5e572066f7c4522f426fdf631107ecd25238c82f37b7774a49a15d80c32d156b6939d3219fc96a - languageName: node - linkType: hard - -"@react-types/datepicker@npm:^3.7.4": - version: 3.7.4 - resolution: "@react-types/datepicker@npm:3.7.4" - dependencies: - "@internationalized/date": ^3.5.4 - "@react-types/calendar": ^3.4.6 - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 80b03e8e02e41d4d9030df426c7678e4f8d66aab28bbf4330d723f48f78fc5a58859ccb7fa3e6f9777537fbddca80029f3f26c56c95fbb85eda341a685f84a0b - languageName: node - linkType: hard - -"@react-types/dialog@npm:^3.5.10": - version: 3.5.10 - resolution: "@react-types/dialog@npm:3.5.10" - dependencies: - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7d411fc66c97b51840a7c395034308efc78061715131660b7ff9a4a69c7316d3645d8c5497b6518c94abd7f779389968129b8325b0cab6e77374ff70d94a70a3 - languageName: node - linkType: hard - -"@react-types/divider@npm:^3.3.9": - version: 3.3.9 - resolution: "@react-types/divider@npm:3.3.9" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 4677a7eee6d93c1614bedc164817e106e7e836e20a8375329ed18217b3844f9dde8acc5f84c1bf2fccf4d196e2843695a4f9e91eb9b67a27e5a54b7df943829f - languageName: node - linkType: hard - -"@react-types/form@npm:^3.7.4": - version: 3.7.4 - resolution: "@react-types/form@npm:3.7.4" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d39e370df895aed7ed59474ab6f072624b0240ff102f6d8eb7463fd21cbe98d61ea4f74dafbb6bb481a394c7fe35f0e3b2024c41eabed223c70ac96a869ee19c - languageName: node - linkType: hard - -"@react-types/grid@npm:^3.2.6": - version: 3.2.6 - resolution: "@react-types/grid@npm:3.2.6" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1d25a5727a8ed47c3f1c19fb0442ca8690605eeb62be9efc45c53b924cc2c8ec4290688f7b3e9f2abb8c828d22f8d5de9598ff48dd7d555dbf05bb92363958af - languageName: node - linkType: hard - -"@react-types/illustratedmessage@npm:^3.3.9": - version: 3.3.9 - resolution: "@react-types/illustratedmessage@npm:3.3.9" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1a8b63c18367ef9c2599a1d9daf562a3951c8110a732c5211b363634da35a2c265cb538af204bf6e74b879d12778ae4bef1e5d7b7c60e002a63d37806899c80d - languageName: node - linkType: hard - -"@react-types/image@npm:^3.4.1": - version: 3.4.1 - resolution: "@react-types/image@npm:3.4.1" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e4b8cae92cbbe7d2aac2778c0af6228c999475ab61256a7514ab224dac13795431b938b5df7fd30b3edbfffdc4d73ca11b8e64cd46b88706c74f418ca736a864 - languageName: node - linkType: hard - -"@react-types/label@npm:^3.9.3": - version: 3.9.3 - resolution: "@react-types/label@npm:3.9.3" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 03ffb11826660e4a3c54381421763e28be040afea703294181d0a6a30148f7bb141d29f0f208e1c82e77ab477adf006b7410fca0aeb091b0e7882e550cfa2794 - languageName: node - linkType: hard - -"@react-types/layout@npm:^3.3.15": - version: 3.3.15 - resolution: "@react-types/layout@npm:3.3.15" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 50b8cb6d70ff52cf934d6432db20f127228e6dd03218db60c831b69aac7f68a2e68ca15352a56e8dd468fc79134abb46571aa8f8bcb5f3f3e779c408dd193e79 - languageName: node - linkType: hard - -"@react-types/link@npm:^3.5.5": - version: 3.5.5 - resolution: "@react-types/link@npm:3.5.5" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 7b1dbb528650ead2f3501741f97789f7a335b6e1b4dd8fe767c8aad6471061dfe25e6b1da63dec353779497c5dfcbb735f65c3dd54a049536fafdd414f1e764c - languageName: node - linkType: hard - -"@react-types/listbox@npm:^3.4.9": - version: 3.4.9 - resolution: "@react-types/listbox@npm:3.4.9" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 125f2b7b9b5f0caa24abcbd4892ec73a6984c29f17572bbac194a6e45430580f84efa16764fe56ec30022b9fd241c57a74d03f168d556f12690c5dd9fd72f5d6 + "@parcel/plugin": 2.6.2 + "@parcel/utils": 2.6.2 + checksum: 44007a3bce0ed6d0a64c2d82644e36ea193a6f5871ba614c083b43a7204031214be7b9de018e497b7fb4fcf01458fa07a665e8213ae6e5b276277f3f2d25bedd languageName: node linkType: hard -"@react-types/menu@npm:^3.9.9": - version: 3.9.9 - resolution: "@react-types/menu@npm:3.9.9" +"@parcel/resolver-default@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/resolver-default@npm:2.6.2" dependencies: - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 67765462a185c779794470d166a74321cc7a1f40c4a8c5c5fd48693acb8c2f937d2564b9cd578e5dea62061b47964eb4444c06edc4a19e57cc9e226ce48acf24 + "@parcel/node-resolver-core": 2.6.2 + "@parcel/plugin": 2.6.2 + checksum: e0dfff6e62892bfce11a76f66fa1a6013fdcf4f5f8d8afb80b43f0f2111ce0214bdc8348b32207658bd19b8bc046b53f77b1cb5a12892cc668df50373cacd78d languageName: node linkType: hard -"@react-types/meter@npm:^3.4.1": - version: 3.4.1 - resolution: "@react-types/meter@npm:3.4.1" +"@parcel/runtime-browser-hmr@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/runtime-browser-hmr@npm:2.6.2" dependencies: - "@react-types/progress": ^3.5.4 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0367b0027a38a2985226539bb58e72c53c15514a48fdd0dda106a99a18604b4ed8ce4c40ce12601f968bde617f0e800ecb60868bdb4c06cb145f6939db087e90 + "@parcel/plugin": 2.6.2 + "@parcel/utils": 2.6.2 + checksum: 39a324c4ef4014a8a122fe989d3802dd09eac9a40ff8a762c4e02b1cd49ab0bff4cb1e803333a707ae2ae6a84907c4331f8a39aad753048347f618ffb70e29a9 languageName: node linkType: hard -"@react-types/numberfield@npm:^3.8.3": - version: 3.8.3 - resolution: "@react-types/numberfield@npm:3.8.3" +"@parcel/runtime-js@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/runtime-js@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: dc0d723391be06d51e08ece2b0e4cafc007db097cc1888992a9ba1fffcffac93ddc99716504b958cf430e681e174b889038a7c02682711b3d09194ec0bf56d45 + "@parcel/plugin": 2.6.2 + "@parcel/utils": 2.6.2 + nullthrows: ^1.1.1 + checksum: 861e89c53625b23b0e4c48a938db8f8bc168eb5d739416d3a2e81f91346dcdb163b03e73441fc609c8c8308f679497de7454ce86788251b995d57cf8c1908afe languageName: node linkType: hard -"@react-types/overlays@npm:^3.8.7": - version: 3.8.7 - resolution: "@react-types/overlays@npm:3.8.7" +"@parcel/runtime-react-refresh@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/runtime-react-refresh@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: f02fea4749c25fa349dddf6c2e7b13796087dbde8621b9de32b874d3646668d00e9d289c2da54458345ade2a3fe46b850445681b05659c587f73fc998af23a2a + "@parcel/plugin": 2.6.2 + "@parcel/utils": 2.6.2 + react-error-overlay: 6.0.9 + react-refresh: ^0.9.0 + checksum: 0c33a13dd47a822bc962cf394d57989d60fc2396463c523f8058dfada537a1d96f3d681932d793304d6d37eea7a9e4c39745c6ce42d3f3f8ddd9c6bced640b21 languageName: node linkType: hard -"@react-types/progress@npm:^3.5.4": - version: 3.5.4 - resolution: "@react-types/progress@npm:3.5.4" +"@parcel/runtime-service-worker@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/runtime-service-worker@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 59b9b2d18d0753e0d76b16b97bb357c6114eade40de7bfa762fe1d946361a6b31dafa0393283895ff48f0790ef1f0d4d57a0766cc0671d6a8436ef3941878dd9 + "@parcel/plugin": 2.6.2 + "@parcel/utils": 2.6.2 + nullthrows: ^1.1.1 + checksum: 2a9790ad275212746873f0ee7a4296156096bf89ceb0c53b8be1f04bc110cbe451bcc3d4f8dca994f2641280e6ae37cba0f507b630ac1b85403f7f385a97f765 languageName: node linkType: hard -"@react-types/provider@npm:^3.8.1": - version: 3.8.1 - resolution: "@react-types/provider@npm:3.8.1" +"@parcel/source-map@npm:^2.0.0": + version: 2.1.1 + resolution: "@parcel/source-map@npm:2.1.1" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 62a1854ad5fc6762d71db7bf86cfd9a15fe848797db957322926df6db5513f7ef7ae74ad2aea892a678740b90fff82233cfd9e153be9c93f2315e2188cd8aa5b + detect-libc: ^1.0.3 + checksum: 1fa27a7047ec08faf7fe1dd0e2ae95a27b84697ecfaed029d0b7d06e46d84ed8f98a9dc9d308fe623655f3c985052dcf7622de479bfa6103c44884fb7f6c810a languageName: node linkType: hard -"@react-types/radio@npm:^3.8.1": - version: 3.8.1 - resolution: "@react-types/radio@npm:3.8.1" +"@parcel/transformer-js@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/transformer-js@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 + "@parcel/diagnostic": 2.6.2 + "@parcel/plugin": 2.6.2 + "@parcel/source-map": ^2.0.0 + "@parcel/utils": 2.6.2 + "@parcel/workers": 2.6.2 + "@swc/helpers": ^0.4.2 + browserslist: ^4.6.6 + detect-libc: ^1.0.3 + nullthrows: ^1.1.1 + regenerator-runtime: ^0.13.7 + semver: ^5.7.1 peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: acdb76043990a1965ff6f85d5a5420f1493496e69131dc07ebc75b11476a77ab16814368cca902a39f212609b57ea417002ea8a7f621c9cb470499effcf83f38 + "@parcel/core": ^2.6.2 + checksum: 32a0480b2986b843d55e0c48a965ff842bf7e4d99325d77c1a7e451a1afc41f7f2602b5a61c79dda1d5382b75834b8e5a452cfb7242d029226f750236cbd3bcf languageName: node linkType: hard -"@react-types/searchfield@npm:^3.5.5": - version: 3.5.5 - resolution: "@react-types/searchfield@npm:3.5.5" +"@parcel/transformer-json@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/transformer-json@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 - "@react-types/textfield": ^3.9.3 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 6c69522bbf20537796cac51e28261caf31d1b1b007e5767abf3b54d98e4bd9207b3d37ea6989717289ce336e08d7e3ec051ef03ff1a38d9e92d69f54f6dcb06e + "@parcel/plugin": 2.6.2 + json5: ^2.2.0 + checksum: 0b4162ba936999e10ad66a569d16b42947c7e2f98f3ac83fcabe20aefac8990797f8032115441a1d49ad01ccb2555b31d70c3cf7f202ba2a1fcc1bc7e4703fe0 languageName: node linkType: hard -"@react-types/select@npm:^3.9.4": - version: 3.9.4 - resolution: "@react-types/select@npm:3.9.4" +"@parcel/transformer-raw@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/transformer-raw@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: eb6b314ef42fcb17e7ad08f340df0db2fdec5ae3de9e90451aa6b448f5e6995abca575f3f866928712f63f6c9e6f2aff1e389fd1eede676b7b51214d073f34ad + "@parcel/plugin": 2.6.2 + checksum: aa8543194f4958f21f74e8c06171116b63c17113d584b121128765277d604965f42a1acb8aca8a7babb2051697cc74edf4be9bd4c203601cff6c291da9cf5383 languageName: node linkType: hard -"@react-types/shared@npm:^3.23.1": - version: 3.23.1 - resolution: "@react-types/shared@npm:3.23.1" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: a180d8b34b1ccf98f9d50bbbb0451090444aa576e1fecc46a769b24cf827658e1a77e5affb17407cfac25897ba461fb4234a160e5c8efa484880fcb4f230c2fe +"@parcel/transformer-react-refresh-wrap@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/transformer-react-refresh-wrap@npm:2.6.2" + dependencies: + "@parcel/plugin": 2.6.2 + "@parcel/utils": 2.6.2 + react-refresh: ^0.9.0 + checksum: 6655b93d5e362b4916eab061ec93badeefec0f07a28245d647d1eda2945f062874a6f2692446353e62c9a261a53840a31a6164775123192cd864d24af5f2e2ab languageName: node linkType: hard -"@react-types/slider@npm:^3.7.3": - version: 3.7.3 - resolution: "@react-types/slider@npm:3.7.3" +"@parcel/types@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/types@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 9a73900e37aa49f16233d2cb6bf5e37d002a68ded097010d5c9d75fd2aba5074ed5de547dd267f27ec33599c46d523176e218fbee7540b2f687b20710be0840f + "@parcel/cache": 2.6.2 + "@parcel/diagnostic": 2.6.2 + "@parcel/fs": 2.6.2 + "@parcel/package-manager": 2.6.2 + "@parcel/source-map": ^2.0.0 + "@parcel/workers": 2.6.2 + utility-types: ^3.10.0 + checksum: 16f3c3ac36eb6f4bfdf91e65b893b10be8911f708752976baf270d087f82957069fb84b410312fc231543ed74573e6dcf5bc01373fe1113f87f91833cb6d5a86 languageName: node linkType: hard -"@react-types/statuslight@npm:^3.3.9": - version: 3.3.9 - resolution: "@react-types/statuslight@npm:3.3.9" +"@parcel/utils@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/utils@npm:2.6.2" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 49a0fdc5503e994c19574bdcefd6704146d5fa9f2844ee4cf48c3f461b58520644a215aa7eaa938a65623e8fce31b1ce1a0e8a73b2bb2894d0c4a2f378fecc1d + "@parcel/codeframe": 2.6.2 + "@parcel/diagnostic": 2.6.2 + "@parcel/hash": 2.6.2 + "@parcel/logger": 2.6.2 + "@parcel/markdown-ansi": 2.6.2 + "@parcel/source-map": ^2.0.0 + chalk: ^4.1.0 + checksum: a74fdca9664412c6a18ef151cba80e784bb5e74784c5b1e1a8f00c0ab8c747203a819a3211e6822b9d86694825297b73c7fd4a8145212f78b2718d1e4b03c987 languageName: node linkType: hard -"@react-types/switch@npm:^3.5.3": - version: 3.5.3 - resolution: "@react-types/switch@npm:3.5.3" +"@parcel/watcher@npm:^2.0.0": + version: 2.1.0 + resolution: "@parcel/watcher@npm:2.1.0" dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 100bcf35bcd201510853cf5230264b5147972c9941e4ada52ec228d6565d28399860a26499178f330d89caba191088f675ce8df0631d1a28e74a36d4e6bbd97b + is-glob: ^4.0.3 + micromatch: ^4.0.5 + node-addon-api: ^3.2.1 + node-gyp: latest + node-gyp-build: ^4.3.0 + checksum: 17f512ad6d5dbb40053ceea7091f8af754afc63786b8f050b225b89a8ba24900468aad8bc4edb25c0349b4c0c8d061f50aa19242c0af52cbc30e6ebf50c7bf4c languageName: node linkType: hard -"@react-types/table@npm:^3.9.5": - version: 3.9.5 - resolution: "@react-types/table@npm:3.9.5" +"@parcel/workers@npm:2.6.2": + version: 2.6.2 + resolution: "@parcel/workers@npm:2.6.2" dependencies: - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 + "@parcel/diagnostic": 2.6.2 + "@parcel/logger": 2.6.2 + "@parcel/types": 2.6.2 + "@parcel/utils": 2.6.2 + chrome-trace-event: ^1.0.2 + nullthrows: ^1.1.1 peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 4de0f2e9c7c6fecebfb805602e36553c657edd2f5812dcbe335dbabce2de1c051385b62905845e3eec2d5d319b448c5e84a9c7d95d3cdb294a947defad7bd364 + "@parcel/core": ^2.6.2 + checksum: 92b65cd3fde225dcd377f1f529caeb0d8ee56a9aeef3785716b1ad210132e5dc1b6bd9b7c4c6920094e0030c6aad9cc42d5dbf7b4fb0fb4668eedfd332e0b242 languageName: node linkType: hard -"@react-types/tabs@npm:^3.3.7": - version: 3.3.7 - resolution: "@react-types/tabs@npm:3.3.7" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 1b7ffa7037719970da40ce4160dcbd41d2bd704b1484e2604d6e4f05afd4a5138d8f8d2cb0538bc6c69ad03b01126382d5e661be1920221902a9aada8db13aad +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 6ad6a00fc4f2f2cfc6bff76fb1d88b8ee20bc0601e18ebb01b6d4be583733a860239a521a7fbca73b612e66705078809483549d2b18f370eb346c5155c8e4a0f languageName: node linkType: hard -"@react-types/text@npm:^3.3.9": - version: 3.3.9 - resolution: "@react-types/text@npm:3.3.9" +"@pmmmwh/react-refresh-webpack-plugin@npm:^0.5.7": + version: 0.5.10 + resolution: "@pmmmwh/react-refresh-webpack-plugin@npm:0.5.10" dependencies: - "@react-types/shared": ^3.23.1 + ansi-html-community: ^0.0.8 + common-path-prefix: ^3.0.0 + core-js-pure: ^3.23.3 + error-stack-parser: ^2.0.6 + find-up: ^5.0.0 + html-entities: ^2.1.0 + loader-utils: ^2.0.4 + schema-utils: ^3.0.0 + source-map: ^0.7.3 peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 97a4c0c580879b3970baa9261ad6cc46d0687a6187a9505d82284b997155c18c206e94910bf0f8081769f1384b9c33420e93a67b47afec4d2d41264b7168c2bb + "@types/webpack": 4.x || 5.x + react-refresh: ">=0.10.0 <1.0.0" + sockjs-client: ^1.4.0 + type-fest: ">=0.17.0 <4.0.0" + webpack: ">=4.43.0 <6.0.0" + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + "@types/webpack": + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + checksum: c45beded9c56fbbdc7213a2c36131ace5db360ed704d462cc39d6678f980173a91c9a3f691e6bd3a026f25486644cd0027e8a12a0a4eced8e8b886a0472e7d34 languageName: node linkType: hard -"@react-types/textfield@npm:^3.9.3": - version: 3.9.3 - resolution: "@react-types/textfield@npm:3.9.3" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: c6c505f535319fdcba620fb46cdfce7fdd5e9905c993bda2179bfbca1da9fcc034290674f8b84e008a8dee42e17df65c658b27b66def8978c0b17e9ac75c7db1 +"@prefresh/babel-plugin@npm:^0.4.3": + version: 0.4.4 + resolution: "@prefresh/babel-plugin@npm:0.4.4" + checksum: 1cd7e9b27936fd8947ecd7e4da70abd05935f44840af3d054ad87638d38ea61f304c45ff7610a4d56bde72e260ddee869cc45806738738edebe7d5a0fe96059a languageName: node linkType: hard -"@react-types/tooltip@npm:^3.4.9": - version: 3.4.9 - resolution: "@react-types/tooltip@npm:3.4.9" - dependencies: - "@react-types/overlays": ^3.8.7 - "@react-types/shared": ^3.23.1 +"@prefresh/core@npm:^1.3.3": + version: 1.4.1 + resolution: "@prefresh/core@npm:1.4.1" peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: d3f917f3aaf16ff5c48fcc9b466ee6495c5bb3485086e347bca9b4a4bbf3a4a969a1751b966f9c6a52609a68f067f57c3ac25dd979d76741e631c1441fa7301f + preact: ^10.0.0 + checksum: afac93e1225d871d88c47717f8b6a328abc9760b212836986fd8bb3017bb6737bb397e016b31c4f542722d0b9c05e1e43d1b5710a61c8efb5208d717d2bb1bba languageName: node linkType: hard -"@react-types/view@npm:^3.4.9": - version: 3.4.9 - resolution: "@react-types/view@npm:3.4.9" - dependencies: - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 99367bdf26cf6db0e121b078e012a2c7a2c09192441f798161ad51c2a3454a59656c11fd86696a4e450926aedba158ba9b010c0104d71675be2ad1d3b8f226f0 +"@prefresh/utils@npm:^1.1.2": + version: 1.1.3 + resolution: "@prefresh/utils@npm:1.1.3" + checksum: a95b816d08a68f499489f1e0098effcda99ccba06c80986cb0dfbcda4fc9c8f8e3238603ead4ee35bb9fb7985de66b1a785d12c64fbc61600e0a8bd388fc2de0 languageName: node linkType: hard -"@react-types/well@npm:^3.3.9": - version: 3.3.9 - resolution: "@react-types/well@npm:3.3.9" +"@prefresh/webpack@npm:^3.3.4": + version: 3.3.4 + resolution: "@prefresh/webpack@npm:3.3.4" dependencies: - "@react-types/shared": ^3.23.1 + "@prefresh/core": ^1.3.3 + "@prefresh/utils": ^1.1.2 peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 22dac320cbc0cf8ce10c68925c1214276dda04e8b74e5c7329f469537296c26335922e85351c4f51e46f387c419d08459c84a8d5dede6b81ebab5e4a5dfaeec2 + "@prefresh/babel-plugin": ^0.4.0 + preact: ^10.4.0 + webpack: ^4.0.0 || ^5.0.0 + checksum: 49d2184856f7c3335d339b3cff52c85b9524c6b215c120f701bfc7053781adea8db8908f158a756a9234af09acedff101fd087f4adcda367b38ca6403a9e5442 languageName: node linkType: hard @@ -7254,34 +4240,6 @@ __metadata: languageName: node linkType: hard -"@spectrum-icons/ui@npm:^3.6.7": - version: 3.6.7 - resolution: "@spectrum-icons/ui@npm:3.6.7" - dependencies: - "@adobe/react-spectrum-ui": 1.2.0 - "@react-spectrum/icon": ^3.7.13 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: dc9e7bdbcd310469aaed951e65f931442428f3f3d49995be80aac844d74a7564b62ac35f267feeabe0938323e8fe5c334bbf979ba5c6df350a57ec65367c93f5 - languageName: node - linkType: hard - -"@spectrum-icons/workflow@npm:^4.2.12": - version: 4.2.12 - resolution: "@spectrum-icons/workflow@npm:4.2.12" - dependencies: - "@adobe/react-spectrum-workflow": 2.3.4 - "@react-spectrum/icon": ^3.7.13 - "@swc/helpers": ^0.5.0 - peerDependencies: - "@react-spectrum/provider": ^3.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: e658397b7cac876225f22e3442c419b718719c3274a131eb9f2ee9d7d8dfb51dc692588c2e6f5b16558b15c0a3c3c9d656a6dca475131d25376c41659090345d - languageName: node - linkType: hard - "@swc/helpers@npm:^0.4.2": version: 0.4.14 resolution: "@swc/helpers@npm:0.4.14" @@ -7291,15 +4249,6 @@ __metadata: languageName: node linkType: hard -"@swc/helpers@npm:^0.5.0": - version: 0.5.12 - resolution: "@swc/helpers@npm:0.5.12" - dependencies: - tslib: ^2.4.0 - checksum: 293c0cb8f41804f94beb04a764bbcfaf316707ec43947713154ac66311590299446bf9b96ab253ce59ce9e435a0edc8cc2bf93f88dc3989f9241271507dd5fe9 - languageName: node - linkType: hard - "@szmarczak/http-timer@npm:^1.1.2": version: 1.1.2 resolution: "@szmarczak/http-timer@npm:1.1.2" @@ -9805,13 +6754,6 @@ __metadata: languageName: node linkType: hard -"client-only@npm:^0.0.1": - version: 0.0.1 - resolution: "client-only@npm:0.0.1" - checksum: 0c16bf660dadb90610553c1d8946a7fdfb81d624adea073b8440b7d795d5b5b08beb3c950c6a2cf16279365a3265158a236876d92bce16423c485c322d7dfaf8 - languageName: node - linkType: hard - "clipboardy@npm:^2.3.0": version: 2.3.0 resolution: "clipboardy@npm:2.3.0" @@ -9897,13 +6839,6 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^2.0.0": - version: 2.1.1 - resolution: "clsx@npm:2.1.1" - checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57 - languageName: node - linkType: hard - "collapse-white-space@npm:^1.0.2": version: 1.0.6 resolution: "collapse-white-space@npm:1.0.6" @@ -11005,7 +7940,7 @@ __metadata: version: 0.0.0-use.local resolution: "dev-site-documentation-template@workspace:." dependencies: - "@adobe/gatsby-theme-aio": ^4.14.4 + "@adobe/gatsby-theme-aio": ^4.14.14 gatsby: 4.22.0 react: ^17.0.2 react-dom: ^17.0.2 @@ -11099,16 +8034,6 @@ __metadata: languageName: node linkType: hard -"dom-helpers@npm:^5.0.1": - version: 5.2.1 - resolution: "dom-helpers@npm:5.2.1" - dependencies: - "@babel/runtime": ^7.8.7 - csstype: ^3.0.2 - checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c - languageName: node - linkType: hard - "dom-serializer@npm:0": version: 0.2.2 resolution: "dom-serializer@npm:0.2.2" @@ -14784,18 +11709,6 @@ __metadata: languageName: node linkType: hard -"intl-messageformat@npm:^10.1.0": - version: 10.5.14 - resolution: "intl-messageformat@npm:10.5.14" - dependencies: - "@formatjs/ecma402-abstract": 2.0.0 - "@formatjs/fast-memoize": 2.2.0 - "@formatjs/icu-messageformat-parser": 2.7.8 - tslib: ^2.4.0 - checksum: 7aaed153283eb83720d72df7757390515a79a1823ea9f4191c69859f1e5dd0d9a7463e5f9186fe77a31414ed98fc81619fb4c838ffdf6d481b1b370403337ca3 - languageName: node - linkType: hard - "invariant@npm:^2.2.3, invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" @@ -19629,7 +16542,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.5.0, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:^15.5.0, prop-types@npm:^15.6.1, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -19905,88 +16818,6 @@ __metadata: languageName: node linkType: hard -"react-aria-components@npm:^1.2.1": - version: 1.2.1 - resolution: "react-aria-components@npm:1.2.1" - dependencies: - "@internationalized/date": ^3.5.4 - "@internationalized/string": ^3.2.3 - "@react-aria/color": 3.0.0-beta.33 - "@react-aria/focus": ^3.17.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/menu": ^3.14.1 - "@react-aria/toolbar": 3.0.0-beta.5 - "@react-aria/tree": 3.0.0-alpha.1 - "@react-aria/utils": ^3.24.1 - "@react-stately/color": ^3.6.1 - "@react-stately/menu": ^3.7.1 - "@react-stately/table": ^3.11.8 - "@react-stately/utils": ^3.10.1 - "@react-types/color": 3.0.0-beta.25 - "@react-types/form": ^3.7.4 - "@react-types/grid": ^3.2.6 - "@react-types/shared": ^3.23.1 - "@react-types/table": ^3.9.5 - "@swc/helpers": ^0.5.0 - client-only: ^0.0.1 - react-aria: ^3.33.1 - react-stately: ^3.31.1 - use-sync-external-store: ^1.2.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 0fe228c1a261aa3eae95837d4396da9e62c74ec65d7a52047fba599a4da406a39ff5bbdf0500ba5da568ba683014617e9587dfebc6835b7059296aafc90343c2 - languageName: node - linkType: hard - -"react-aria@npm:^3.33.1": - version: 3.33.1 - resolution: "react-aria@npm:3.33.1" - dependencies: - "@internationalized/string": ^3.2.3 - "@react-aria/breadcrumbs": ^3.5.13 - "@react-aria/button": ^3.9.5 - "@react-aria/calendar": ^3.5.8 - "@react-aria/checkbox": ^3.14.3 - "@react-aria/combobox": ^3.9.1 - "@react-aria/datepicker": ^3.10.1 - "@react-aria/dialog": ^3.5.14 - "@react-aria/dnd": ^3.6.1 - "@react-aria/focus": ^3.17.1 - "@react-aria/gridlist": ^3.8.1 - "@react-aria/i18n": ^3.11.1 - "@react-aria/interactions": ^3.21.3 - "@react-aria/label": ^3.7.8 - "@react-aria/link": ^3.7.1 - "@react-aria/listbox": ^3.12.1 - "@react-aria/menu": ^3.14.1 - "@react-aria/meter": ^3.4.13 - "@react-aria/numberfield": ^3.11.3 - "@react-aria/overlays": ^3.22.1 - "@react-aria/progress": ^3.4.13 - "@react-aria/radio": ^3.10.4 - "@react-aria/searchfield": ^3.7.5 - "@react-aria/select": ^3.14.5 - "@react-aria/selection": ^3.18.1 - "@react-aria/separator": ^3.3.13 - "@react-aria/slider": ^3.7.8 - "@react-aria/ssr": ^3.9.4 - "@react-aria/switch": ^3.6.4 - "@react-aria/table": ^3.14.1 - "@react-aria/tabs": ^3.9.1 - "@react-aria/tag": ^3.4.1 - "@react-aria/textfield": ^3.14.5 - "@react-aria/tooltip": ^3.7.4 - "@react-aria/utils": ^3.24.1 - "@react-aria/visually-hidden": ^3.8.12 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5b63055ec390669e0e9d239ac1f2018d97a1eb339692c597160071898365d8f48e2d0c19a5e8eff421a72b2964b87121f15251f682ceed578b07d7f6f6c7274d - languageName: node - linkType: hard - "react-dev-utils@npm:^12.0.1": version: 12.0.1 resolution: "react-dev-utils@npm:12.0.1" @@ -20106,39 +16937,6 @@ __metadata: languageName: node linkType: hard -"react-stately@npm:^3.31.1": - version: 3.31.1 - resolution: "react-stately@npm:3.31.1" - dependencies: - "@react-stately/calendar": ^3.5.1 - "@react-stately/checkbox": ^3.6.5 - "@react-stately/collections": ^3.10.7 - "@react-stately/combobox": ^3.8.4 - "@react-stately/data": ^3.11.4 - "@react-stately/datepicker": ^3.9.4 - "@react-stately/dnd": ^3.3.1 - "@react-stately/form": ^3.0.3 - "@react-stately/list": ^3.10.5 - "@react-stately/menu": ^3.7.1 - "@react-stately/numberfield": ^3.9.3 - "@react-stately/overlays": ^3.6.7 - "@react-stately/radio": ^3.10.4 - "@react-stately/searchfield": ^3.5.3 - "@react-stately/select": ^3.6.4 - "@react-stately/selection": ^3.15.1 - "@react-stately/slider": ^3.5.4 - "@react-stately/table": ^3.11.8 - "@react-stately/tabs": ^3.6.6 - "@react-stately/toggle": ^3.7.4 - "@react-stately/tooltip": ^3.4.9 - "@react-stately/tree": ^3.8.1 - "@react-types/shared": ^3.23.1 - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 - checksum: 5b3c97e24cc5971f2059bb2a45c9fbba1eb51ca385bddbb88a22d4a2051eb248c494a93cb61d3cdaf242c855c82b97521b6be3436438c5b5e0da8a40aef84b76 - languageName: node - linkType: hard - "react-tabs@npm:^3.2.2": version: 3.2.3 resolution: "react-tabs@npm:3.2.3" @@ -20151,21 +16949,6 @@ __metadata: languageName: node linkType: hard -"react-transition-group@npm:^4.4.5": - version: 4.4.5 - resolution: "react-transition-group@npm:4.4.5" - dependencies: - "@babel/runtime": ^7.5.5 - dom-helpers: ^5.0.1 - loose-envify: ^1.4.0 - prop-types: ^15.6.2 - peerDependencies: - react: ">=16.6.0" - react-dom: ">=16.6.0" - checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1 - languageName: node - linkType: hard - "react@npm:^17.0.1, react@npm:^17.0.2": version: 17.0.2 resolution: "react@npm:17.0.2" @@ -20353,13 +17136,6 @@ __metadata: languageName: node linkType: hard -"regenerator-runtime@npm:^0.14.0": - version: 0.14.1 - resolution: "regenerator-runtime@npm:0.14.1" - checksum: 9f57c93277b5585d3c83b0cf76be47b473ae8c6d9142a46ce8b0291a04bb2cf902059f0f8445dcabb3fb7378e5fe4bb4ea1e008876343d42e46d3b484534ce38 - languageName: node - linkType: hard - "regenerator-transform@npm:^0.15.1": version: 0.15.1 resolution: "regenerator-transform@npm:0.15.1" @@ -23524,15 +20300,6 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.2.0": - version: 1.2.2 - resolution: "use-sync-external-store@npm:1.2.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: fe07c071c4da3645f112c38c0e57beb479a8838616ff4e92598256ecce527f2888c08febc7f9b2f0ce2f0e18540ba3cde41eb2035e4fafcb4f52955037098a81 - languageName: node - linkType: hard - "utif@npm:^2.0.1": version: 2.0.1 resolution: "utif@npm:2.0.1"