From d9f4301c83a7b6fdb6ff8d6b80956e1c0678a94e Mon Sep 17 00:00:00 2001 From: SF4524LogeshKumar Date: Fri, 14 Nov 2025 16:23:39 +0530 Subject: [PATCH] 991918: Samples for Redaction Annotation --- .../.gitignore | 2 + .../README.md | 75 +++++++++++++++ .../e2e/index.spec.js | 0 .../e2e/protractor.conf.js | 21 +++++ .../gulpfile.js | 62 +++++++++++++ .../license | 10 ++ .../package.json | 38 ++++++++ .../src/app/app.ts | 86 ++++++++++++++++++ .../src/index.html | 28 ++++++ .../src/resources/favicon.ico | Bin 0 -> 6574 bytes .../src/styles/styles.css | 9 ++ .../tsconfig.json | 12 +++ .../webpack.config.js | 41 +++++++++ Redaction/Search Text and Redact/.gitignore | 2 + Redaction/Search Text and Redact/README.md | 75 +++++++++++++++ .../Search Text and Redact/e2e/index.spec.js | 0 .../e2e/protractor.conf.js | 21 +++++ Redaction/Search Text and Redact/gulpfile.js | 62 +++++++++++++ Redaction/Search Text and Redact/license | 10 ++ Redaction/Search Text and Redact/package.json | 38 ++++++++ .../Search Text and Redact/src/app/app.ts | 68 ++++++++++++++ .../Search Text and Redact/src/index.html | 24 +++++ .../src/resources/favicon.ico | Bin 0 -> 6574 bytes .../src/styles/styles.css | 9 ++ .../Search Text and Redact/tsconfig.json | 12 +++ .../Search Text and Redact/webpack.config.js | 41 +++++++++ .../Show or Hide Redaction Toolbar/.gitignore | 2 + .../Show or Hide Redaction Toolbar/README.md | 75 +++++++++++++++ .../e2e/index.spec.js | 0 .../e2e/protractor.conf.js | 21 +++++ .../gulpfile.js | 62 +++++++++++++ .../Show or Hide Redaction Toolbar/license | 10 ++ .../package.json | 38 ++++++++ .../src/app/app.ts | 22 +++++ .../src/index.html | 24 +++++ .../src/resources/favicon.ico | Bin 0 -> 6574 bytes .../src/styles/styles.css | 9 ++ .../tsconfig.json | 12 +++ .../webpack.config.js | 41 +++++++++ 39 files changed, 1062 insertions(+) create mode 100644 Redaction/Add Redaction Annotation Programmatically/.gitignore create mode 100644 Redaction/Add Redaction Annotation Programmatically/README.md create mode 100644 Redaction/Add Redaction Annotation Programmatically/e2e/index.spec.js create mode 100644 Redaction/Add Redaction Annotation Programmatically/e2e/protractor.conf.js create mode 100644 Redaction/Add Redaction Annotation Programmatically/gulpfile.js create mode 100644 Redaction/Add Redaction Annotation Programmatically/license create mode 100644 Redaction/Add Redaction Annotation Programmatically/package.json create mode 100644 Redaction/Add Redaction Annotation Programmatically/src/app/app.ts create mode 100644 Redaction/Add Redaction Annotation Programmatically/src/index.html create mode 100644 Redaction/Add Redaction Annotation Programmatically/src/resources/favicon.ico create mode 100644 Redaction/Add Redaction Annotation Programmatically/src/styles/styles.css create mode 100644 Redaction/Add Redaction Annotation Programmatically/tsconfig.json create mode 100644 Redaction/Add Redaction Annotation Programmatically/webpack.config.js create mode 100644 Redaction/Search Text and Redact/.gitignore create mode 100644 Redaction/Search Text and Redact/README.md create mode 100644 Redaction/Search Text and Redact/e2e/index.spec.js create mode 100644 Redaction/Search Text and Redact/e2e/protractor.conf.js create mode 100644 Redaction/Search Text and Redact/gulpfile.js create mode 100644 Redaction/Search Text and Redact/license create mode 100644 Redaction/Search Text and Redact/package.json create mode 100644 Redaction/Search Text and Redact/src/app/app.ts create mode 100644 Redaction/Search Text and Redact/src/index.html create mode 100644 Redaction/Search Text and Redact/src/resources/favicon.ico create mode 100644 Redaction/Search Text and Redact/src/styles/styles.css create mode 100644 Redaction/Search Text and Redact/tsconfig.json create mode 100644 Redaction/Search Text and Redact/webpack.config.js create mode 100644 Redaction/Show or Hide Redaction Toolbar/.gitignore create mode 100644 Redaction/Show or Hide Redaction Toolbar/README.md create mode 100644 Redaction/Show or Hide Redaction Toolbar/e2e/index.spec.js create mode 100644 Redaction/Show or Hide Redaction Toolbar/e2e/protractor.conf.js create mode 100644 Redaction/Show or Hide Redaction Toolbar/gulpfile.js create mode 100644 Redaction/Show or Hide Redaction Toolbar/license create mode 100644 Redaction/Show or Hide Redaction Toolbar/package.json create mode 100644 Redaction/Show or Hide Redaction Toolbar/src/app/app.ts create mode 100644 Redaction/Show or Hide Redaction Toolbar/src/index.html create mode 100644 Redaction/Show or Hide Redaction Toolbar/src/resources/favicon.ico create mode 100644 Redaction/Show or Hide Redaction Toolbar/src/styles/styles.css create mode 100644 Redaction/Show or Hide Redaction Toolbar/tsconfig.json create mode 100644 Redaction/Show or Hide Redaction Toolbar/webpack.config.js diff --git a/Redaction/Add Redaction Annotation Programmatically/.gitignore b/Redaction/Add Redaction Annotation Programmatically/.gitignore new file mode 100644 index 0000000..1eae0cf --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/.gitignore @@ -0,0 +1,2 @@ +dist/ +node_modules/ diff --git a/Redaction/Add Redaction Annotation Programmatically/README.md b/Redaction/Add Redaction Annotation Programmatically/README.md new file mode 100644 index 0000000..46e0b02 --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/README.md @@ -0,0 +1,75 @@ +# Essential JS 2 QuickStart + +This project is a skeleton application used to create [Essential JS 2](https://www.syncfusion.com/products/essential-js2) web application. + +>This application uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli/#commands). It requires node `v14.15.0` or higher. + +## Getting Started + +To get started you need to clone the `ej2-quickstart` repository and navigate to `ej2-quickstart` location. + +``` +git clone https://github.com/syncfusion/ej2-quickstart.git quickstart +cd quickstart +``` + +## Installing + +We can get all the Essential JS 2 components in a single npm package [`ej2`](https://www.npmjs.com/package/@syncfusion/ej2). + +We already configure the required packages in the `package.json` file. + +You can run the below command to install all dependent packages related to this seed project. + +``` +npm install +``` + +## Testing + +This application is preconfigured with End-to-End testing and the test case is written in Jasmine. + +We run the test scripts with [Protractor](http://www.protractortest.org/#/) end-to-end test runner. The test case file can be found in the `e2e` folder. + +Protractor can interact with our web application and verify the test scripts. + +We have to install WebDriver and also need to ensure it is updated. Open a separate terminal and run the below npm script. + +``` +npm run update-webdriver +``` + +Open another terminal and run the below npm script. It will start web server to serve our application. + +``` +npm run serve +``` + +Once the web server is up and running, we can run the end-to-end tests using the below npm script + +``` +npm run test +``` + +> **Note:** Since Protractor is using the Selenium Standalone Server, the Java Development Kit (JDK) need to be installed in your local machine. + +If JDK is not installed in your local machine, you can download it from [here](http://www.oracle.com/technetwork/java/javase/downloads/index.html). + +## Running + +The application is configured with [webpack-dev-server](https://webpack.js.org/configuration/dev-server/#devserver), so it will serve the web application in your default browser. + +We have used [Webpack](https://github.com/webpack/webpack) for module loading. + +You can use the below npm script to run the web application. + +``` +npm run start +``` + +## Resources + +You can also refer the below resources to know more details about Essential JS 2 components. + +* [Pure JS Demos](http://ej2.syncfusion.com/demos/) +* [Pure JS Documentation](http://ej2.syncfusion.com/documentation/) diff --git a/Redaction/Add Redaction Annotation Programmatically/e2e/index.spec.js b/Redaction/Add Redaction Annotation Programmatically/e2e/index.spec.js new file mode 100644 index 0000000..e69de29 diff --git a/Redaction/Add Redaction Annotation Programmatically/e2e/protractor.conf.js b/Redaction/Add Redaction Annotation Programmatically/e2e/protractor.conf.js new file mode 100644 index 0000000..43eee1b --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/e2e/protractor.conf.js @@ -0,0 +1,21 @@ +exports.config = { + + allScriptsTimeout: 11000, + + capabilities: { + 'browserName': 'chrome' + }, + + framework: 'jasmine', + + jasmineNodeOpts: { + defaultTimeoutInterval: 10000 + }, + directConnect: true, + + onPrepare: function() { + browser.waitForAngularEnabled(false); + }, + + specs: ['./*.spec.js'] +}; \ No newline at end of file diff --git a/Redaction/Add Redaction Annotation Programmatically/gulpfile.js b/Redaction/Add Redaction Annotation Programmatically/gulpfile.js new file mode 100644 index 0000000..6a623f3 --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/gulpfile.js @@ -0,0 +1,62 @@ +'use strict'; + +var gulp = require('gulp'); + +/** + * Compile TypeScript to JS + */ +gulp.task('compile', function (done) { + var webpack = require('webpack'); + var webpackStream = require('webpack-stream'); + gulp.src(['./src/app/app.ts']).pipe(webpackStream({ + config: require('./webpack.config.js') + }, webpack)) + .pipe(gulp.dest('./dist')) + .on('end', function () { + done(); + }); +}); + +/** + * Testing spec files + */ +var protractor = require('gulp-protractor').protractor; +var webdriver_standalone = require('gulp-protractor').webdriver_standalone; +var webdriver_update = require('gulp-protractor').webdriver_update_specific; + +gulp.task('e2e-serve', webdriver_standalone); + +gulp.task('e2e-webdriver-update', webdriver_update({ + webdriverManagerArgs: ['--ie', '--edge'] +})); + +gulp.task('e2e-test', gulp.series('compile', function (done) { + var browserSync = require('browser-sync'); + var bs = browserSync.create('Essential JS 2'); + var options = { + server: { + baseDir: [ + './dist/', + ], + directory: true + }, + ui: false, + open: false, + notify: false + }; + bs.init(options, function () { + gulp.src(['./spec/**/*.spec.js']) + .pipe(protractor({ + configFile: 'e2e/protractor.conf.js' + })) + .on('error', function (e) { + console.error('Error: ' + e.message); + done(); + process.exit(1); + }) + .on('end', function () { + done(); + process.exit(0); + }); + }); +})); \ No newline at end of file diff --git a/Redaction/Add Redaction Annotation Programmatically/license b/Redaction/Add Redaction Annotation Programmatically/license new file mode 100644 index 0000000..111c12a --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/license @@ -0,0 +1,10 @@ +Essential JS 2 library is available under the Syncfusion Essential Studio program, and can be licensed either under the Syncfusion Community License Program or the Syncfusion commercial license. + +To be qualified for the Syncfusion Community License Program you must have a gross revenue of less than one (1) million U.S. dollars ($1,000,000.00 USD) per year and have less than five (5) developers in your organization, and agree to be bound by Syncfusion’s terms and conditions. + +Customers who do not qualify for the community license can contact sales@syncfusion.com for commercial licensing options. + +Under no circumstances can you use this product without (1) either a Community License or a commercial license and (2) without agreeing and abiding by Syncfusion’s license containing all terms and conditions. + +The Syncfusion license that contains the terms and conditions can be found at +https://www.syncfusion.com/content/downloads/syncfusion_license.pdf diff --git a/Redaction/Add Redaction Annotation Programmatically/package.json b/Redaction/Add Redaction Annotation Programmatically/package.json new file mode 100644 index 0000000..f108444 --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/package.json @@ -0,0 +1,38 @@ +{ + "name": "ej2-quickstart", + "version": "0.0.1", + "description": "Essential JS 2 typescript quick start application", + "author": "Syncfusion Inc.", + "license": "SEE LICENSE IN license", + "repository": { + "type": "git", + "url": "https://github.com/syncfusion/ej2-quickstart.git" + }, + "scripts": { + "start": "webpack-dev-server --mode development", + "build": "webpack --mode production", + "serve": "gulp e2e-serve", + "test": "gulp e2e-test", + "update-webdriver": "gulp e2e-webdriver-update" + }, + "devDependencies": { + "ajv": "^8.11.2", + "browser-sync": "^2.18.12", + "gulp": "*", + "typescript": "*", + "gulp-protractor": "*", + "gulp-typescript": "*", + "jasmine": "^2.6.0", + "css-loader": "^6.7.2", + "ts-loader": "^9.4.1", + "mini-css-extract-plugin": "^2.7.0", + "html-webpack-plugin": "^5.5.0", + "webpack": "^5.75.0", + "webpack-cli": "^5.0.0", + "webpack-dev-server": "^5.2.1", + "webpack-stream": "^7.0.0" + }, + "dependencies": { + "@syncfusion/ej2": "*" + } +} diff --git a/Redaction/Add Redaction Annotation Programmatically/src/app/app.ts b/Redaction/Add Redaction Annotation Programmatically/src/app/app.ts new file mode 100644 index 0000000..81303fb --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/src/app/app.ts @@ -0,0 +1,86 @@ +import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, RedactionSettings } from '@syncfusion/ej2-pdfviewer'; + +// Inject required modules +PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields); + +const viewer: PdfViewer = new PdfViewer({ + documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', + resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib", +}); + +//Adding Redaction Tool using Toolbar Settings +viewer.toolbarSettings.toolbarItems = ['OpenOption', 'UndoRedoTool', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'CommentTool', 'SubmitForm', 'AnnotationEditTool', 'RedactionEditTool', 'FormDesignerEditTool', 'SearchOption', 'PrintOption', 'DownloadOption']; +viewer.appendTo('#PdfViewer'); + +//Add Redaction Annotation Programmatically + document.getElementById('addAnnot')?.addEventListener('click', function(){ + viewer.annotation.addAnnotation("Redaction", { + bound: { x: 200, y: 480,width: 150, height: 75 }, + pageNumber: 1, + markerOpacity: 0.5, + markerFillColor: '#0000FF', + markerBorderColor: 'white', + fillColor: 'red', + overlayText: 'text', + fontColor: 'yellow', + isRepeat: true, + fontFamily: 'Times New Roman', + fontSize: 8, + textAlignment: 'Left', + beforeRedactionsApplied: false + } as unknown as RedactionSettings); + }); + +//Delete Redaction annotation by id +document.getElementById('deleteAnnotationbyId')?.addEventListener('click', () => { + viewer.annotationModule.deleteAnnotationById( + viewer.annotationCollection[0].annotationId + ); + }); + +//Applying Default Redaction Settings +viewer.redactionSettings= { + overlayText: 'Confidential', + markerFillColor: '#FF0000', + markerBorderColor: '#000000', + isRepeat: false, + fillColor: '#F8F8F8', + fontColor: '#333333', + fontSize: 14, + fontFamily: 'Symbol', + textAlignment: 'Right' + }; + +//Event Listener to Edit Redaction Annotation +let editRedactAnnotation = document.getElementById('editRedactAnnotation'); +if (editRedactAnnotation) { + editRedactAnnotation.addEventListener('click', function () { + if (viewer) { + for (let i = 0; i < viewer.annotationCollection.length; i++) { + if (viewer.annotationCollection[i].subject === "Redaction") { + viewer.annotationCollection[i].overlayText= 'EditedAnnotation'; + viewer.annotationCollection[i].markerFillColor= '#22FF00'; + viewer.annotationCollection[i].markerBorderColor= '#000000'; + viewer.annotationCollection[i].isRepeat= true; + viewer.annotationCollection[i].fillColor= '#F8F8F8'; + viewer.annotationCollection[i].fontColor= '#333333'; + viewer.annotationCollection[i].fontSize= 14; + viewer.annotationCollection[i].fontFamily= 'Symbol'; + viewer.annotationCollection[i].textAlignment= 'Right'; + viewer.annotationCollection[i].beforeRedactionsApplied= true; + viewer.annotation.editAnnotation(viewer.annotationCollection[i]); + } + } + } +}); +} + +//Event Listener to Apply Page Redaction +document.getElementById('addPageRedactions')?.addEventListener('click', () => { + viewer.annotation.addPageRedactions([1, 3, 5, 7]); // Redacts pages 1, 3, 5, and 7(Enter the pages to Redact) +}); + +//Event Listener to Apply Redaction +document.getElementById('redact')?.addEventListener('click', () => { + viewer.annotation.redact(); +}); diff --git a/Redaction/Add Redaction Annotation Programmatically/src/index.html b/Redaction/Add Redaction Annotation Programmatically/src/index.html new file mode 100644 index 0000000..23481b6 --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/src/index.html @@ -0,0 +1,28 @@ + + + + + Essential JS 2 + + + + + + + + + + +
+
+
+ + + + + + +
+ + + \ No newline at end of file diff --git a/Redaction/Add Redaction Annotation Programmatically/src/resources/favicon.ico b/Redaction/Add Redaction Annotation Programmatically/src/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d8d5c152e7353a07c3e519c9e53ac9328e515fa8 GIT binary patch literal 6574 zcmeHLZ)jUp6o1J}(=>U>YhL@3w0TL>C8MsL+H`gkEVxdkmO9tb;jBuvbG9p5I^2g+ zoQ_RobEu4M#mx^QI7C|n@y`&)zU<3BbPQB*vVCzdnHEGebfLH<{!U+RdizYC2_~~j z1HasR&O7J+&b{}%bKiS{U=c*2x>`UR5q8-GVZ9(Mk>7TV@$vY-_rFZ=hz7$<%I*YLf(BcUQQv$12qd1n5&7W;6a-9p|6b zEhm49g@-KH`gmCjM%xIyj%eKs>3FcY z7n(o3J#i>co_LArxZI=s%9(%6R(@pPpgxCWiu%Ry6DQk0y}gm7yr6rAVRyV~hT>x~ zwUqzFqjN9j0FA-VgT-jp@-Yrp@Q=->eJHEXYL9=tkj!kdk!e*gDhmYScQgOFnb;OE~-vz&&w zQajg1Pn+N~)SZTV{K{q%o6~)<&}%H8s9lI*l^4D+KY9dvo5Ozg=*(Ki>YA>-a|SZ~p!SYpRMR literal 0 HcmV?d00001 diff --git a/Redaction/Add Redaction Annotation Programmatically/src/styles/styles.css b/Redaction/Add Redaction Annotation Programmatically/src/styles/styles.css new file mode 100644 index 0000000..c5d413e --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/src/styles/styles.css @@ -0,0 +1,9 @@ +@import '../../node_modules/@syncfusion/ej2-base/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-buttons/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-dropdowns/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-inputs/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-navigations/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-popups/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css'; +@import "../../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css"; +@import "../../node_modules/@syncfusion/ej2-notifications/styles/material.css"; \ No newline at end of file diff --git a/Redaction/Add Redaction Annotation Programmatically/tsconfig.json b/Redaction/Add Redaction Annotation Programmatically/tsconfig.json new file mode 100644 index 0000000..db9b7c2 --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "ES6", + "sourceMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "moduleResolution": "node" + } +} diff --git a/Redaction/Add Redaction Annotation Programmatically/webpack.config.js b/Redaction/Add Redaction Annotation Programmatically/webpack.config.js new file mode 100644 index 0000000..f61e596 --- /dev/null +++ b/Redaction/Add Redaction Annotation Programmatically/webpack.config.js @@ -0,0 +1,41 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const path = require('path'); + +module.exports = { + entry: ['./src/app/app.ts', './src/styles/styles.css'], + module: { + rules: [ + { + test: /\.ts?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /\.css$/, + use: [ MiniCssExtractPlugin.loader, "css-loader" ] + }, + ], + }, + resolve: { + extensions: ['.ts', '.js'], + }, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'src/index.html' + }), + new MiniCssExtractPlugin({ + filename: "bundle.css" + }) + ], + devServer: { + static: path.join(__dirname, "dist"), + compress: true, + port: 4000, + open: true + }, +}; diff --git a/Redaction/Search Text and Redact/.gitignore b/Redaction/Search Text and Redact/.gitignore new file mode 100644 index 0000000..1eae0cf --- /dev/null +++ b/Redaction/Search Text and Redact/.gitignore @@ -0,0 +1,2 @@ +dist/ +node_modules/ diff --git a/Redaction/Search Text and Redact/README.md b/Redaction/Search Text and Redact/README.md new file mode 100644 index 0000000..46e0b02 --- /dev/null +++ b/Redaction/Search Text and Redact/README.md @@ -0,0 +1,75 @@ +# Essential JS 2 QuickStart + +This project is a skeleton application used to create [Essential JS 2](https://www.syncfusion.com/products/essential-js2) web application. + +>This application uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli/#commands). It requires node `v14.15.0` or higher. + +## Getting Started + +To get started you need to clone the `ej2-quickstart` repository and navigate to `ej2-quickstart` location. + +``` +git clone https://github.com/syncfusion/ej2-quickstart.git quickstart +cd quickstart +``` + +## Installing + +We can get all the Essential JS 2 components in a single npm package [`ej2`](https://www.npmjs.com/package/@syncfusion/ej2). + +We already configure the required packages in the `package.json` file. + +You can run the below command to install all dependent packages related to this seed project. + +``` +npm install +``` + +## Testing + +This application is preconfigured with End-to-End testing and the test case is written in Jasmine. + +We run the test scripts with [Protractor](http://www.protractortest.org/#/) end-to-end test runner. The test case file can be found in the `e2e` folder. + +Protractor can interact with our web application and verify the test scripts. + +We have to install WebDriver and also need to ensure it is updated. Open a separate terminal and run the below npm script. + +``` +npm run update-webdriver +``` + +Open another terminal and run the below npm script. It will start web server to serve our application. + +``` +npm run serve +``` + +Once the web server is up and running, we can run the end-to-end tests using the below npm script + +``` +npm run test +``` + +> **Note:** Since Protractor is using the Selenium Standalone Server, the Java Development Kit (JDK) need to be installed in your local machine. + +If JDK is not installed in your local machine, you can download it from [here](http://www.oracle.com/technetwork/java/javase/downloads/index.html). + +## Running + +The application is configured with [webpack-dev-server](https://webpack.js.org/configuration/dev-server/#devserver), so it will serve the web application in your default browser. + +We have used [Webpack](https://github.com/webpack/webpack) for module loading. + +You can use the below npm script to run the web application. + +``` +npm run start +``` + +## Resources + +You can also refer the below resources to know more details about Essential JS 2 components. + +* [Pure JS Demos](http://ej2.syncfusion.com/demos/) +* [Pure JS Documentation](http://ej2.syncfusion.com/documentation/) diff --git a/Redaction/Search Text and Redact/e2e/index.spec.js b/Redaction/Search Text and Redact/e2e/index.spec.js new file mode 100644 index 0000000..e69de29 diff --git a/Redaction/Search Text and Redact/e2e/protractor.conf.js b/Redaction/Search Text and Redact/e2e/protractor.conf.js new file mode 100644 index 0000000..43eee1b --- /dev/null +++ b/Redaction/Search Text and Redact/e2e/protractor.conf.js @@ -0,0 +1,21 @@ +exports.config = { + + allScriptsTimeout: 11000, + + capabilities: { + 'browserName': 'chrome' + }, + + framework: 'jasmine', + + jasmineNodeOpts: { + defaultTimeoutInterval: 10000 + }, + directConnect: true, + + onPrepare: function() { + browser.waitForAngularEnabled(false); + }, + + specs: ['./*.spec.js'] +}; \ No newline at end of file diff --git a/Redaction/Search Text and Redact/gulpfile.js b/Redaction/Search Text and Redact/gulpfile.js new file mode 100644 index 0000000..6a623f3 --- /dev/null +++ b/Redaction/Search Text and Redact/gulpfile.js @@ -0,0 +1,62 @@ +'use strict'; + +var gulp = require('gulp'); + +/** + * Compile TypeScript to JS + */ +gulp.task('compile', function (done) { + var webpack = require('webpack'); + var webpackStream = require('webpack-stream'); + gulp.src(['./src/app/app.ts']).pipe(webpackStream({ + config: require('./webpack.config.js') + }, webpack)) + .pipe(gulp.dest('./dist')) + .on('end', function () { + done(); + }); +}); + +/** + * Testing spec files + */ +var protractor = require('gulp-protractor').protractor; +var webdriver_standalone = require('gulp-protractor').webdriver_standalone; +var webdriver_update = require('gulp-protractor').webdriver_update_specific; + +gulp.task('e2e-serve', webdriver_standalone); + +gulp.task('e2e-webdriver-update', webdriver_update({ + webdriverManagerArgs: ['--ie', '--edge'] +})); + +gulp.task('e2e-test', gulp.series('compile', function (done) { + var browserSync = require('browser-sync'); + var bs = browserSync.create('Essential JS 2'); + var options = { + server: { + baseDir: [ + './dist/', + ], + directory: true + }, + ui: false, + open: false, + notify: false + }; + bs.init(options, function () { + gulp.src(['./spec/**/*.spec.js']) + .pipe(protractor({ + configFile: 'e2e/protractor.conf.js' + })) + .on('error', function (e) { + console.error('Error: ' + e.message); + done(); + process.exit(1); + }) + .on('end', function () { + done(); + process.exit(0); + }); + }); +})); \ No newline at end of file diff --git a/Redaction/Search Text and Redact/license b/Redaction/Search Text and Redact/license new file mode 100644 index 0000000..111c12a --- /dev/null +++ b/Redaction/Search Text and Redact/license @@ -0,0 +1,10 @@ +Essential JS 2 library is available under the Syncfusion Essential Studio program, and can be licensed either under the Syncfusion Community License Program or the Syncfusion commercial license. + +To be qualified for the Syncfusion Community License Program you must have a gross revenue of less than one (1) million U.S. dollars ($1,000,000.00 USD) per year and have less than five (5) developers in your organization, and agree to be bound by Syncfusion’s terms and conditions. + +Customers who do not qualify for the community license can contact sales@syncfusion.com for commercial licensing options. + +Under no circumstances can you use this product without (1) either a Community License or a commercial license and (2) without agreeing and abiding by Syncfusion’s license containing all terms and conditions. + +The Syncfusion license that contains the terms and conditions can be found at +https://www.syncfusion.com/content/downloads/syncfusion_license.pdf diff --git a/Redaction/Search Text and Redact/package.json b/Redaction/Search Text and Redact/package.json new file mode 100644 index 0000000..f108444 --- /dev/null +++ b/Redaction/Search Text and Redact/package.json @@ -0,0 +1,38 @@ +{ + "name": "ej2-quickstart", + "version": "0.0.1", + "description": "Essential JS 2 typescript quick start application", + "author": "Syncfusion Inc.", + "license": "SEE LICENSE IN license", + "repository": { + "type": "git", + "url": "https://github.com/syncfusion/ej2-quickstart.git" + }, + "scripts": { + "start": "webpack-dev-server --mode development", + "build": "webpack --mode production", + "serve": "gulp e2e-serve", + "test": "gulp e2e-test", + "update-webdriver": "gulp e2e-webdriver-update" + }, + "devDependencies": { + "ajv": "^8.11.2", + "browser-sync": "^2.18.12", + "gulp": "*", + "typescript": "*", + "gulp-protractor": "*", + "gulp-typescript": "*", + "jasmine": "^2.6.0", + "css-loader": "^6.7.2", + "ts-loader": "^9.4.1", + "mini-css-extract-plugin": "^2.7.0", + "html-webpack-plugin": "^5.5.0", + "webpack": "^5.75.0", + "webpack-cli": "^5.0.0", + "webpack-dev-server": "^5.2.1", + "webpack-stream": "^7.0.0" + }, + "dependencies": { + "@syncfusion/ej2": "*" + } +} diff --git a/Redaction/Search Text and Redact/src/app/app.ts b/Redaction/Search Text and Redact/src/app/app.ts new file mode 100644 index 0000000..976a1ad --- /dev/null +++ b/Redaction/Search Text and Redact/src/app/app.ts @@ -0,0 +1,68 @@ +import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, RedactionSettings } from '@syncfusion/ej2-pdfviewer'; + +// Inject required modules +PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields); + +const viewer: PdfViewer = new PdfViewer({ + documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', + resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib", +}); + +//Adding Redaction Tool in the toolbar +viewer.toolbarSettings.toolbarItems = ['OpenOption', 'UndoRedoTool', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'CommentTool', 'SubmitForm', 'AnnotationEditTool', 'RedactionEditTool', 'FormDesignerEditTool', 'SearchOption', 'PrintOption', 'DownloadOption']; +viewer.appendTo('#PdfViewer'); + +//EventListener to Search Text and Redact +document.getElementById('searchTextRedact')?.addEventListener('click', () => { + // Function to handle extractTextCompleted event + viewer.extractTextCompleted = args => { + const searchText = "syncfusion"; //Provide text to be redacted + + // Perform text search + const searchResults = viewer.textSearchModule.findText(searchText, false); + + if (!searchResults || searchResults.length === 0) { + console.warn("No matches found."); + return; + } + + // Loop through search results + for (let i = 0; i < searchResults.length; i++) { + const pageResult = searchResults[i]; + if (!pageResult || !pageResult.bounds || pageResult.bounds.length === 0) { continue; } + + // guard pageIndex (fixes TS18048) + if (pageResult.pageIndex == null) { continue; } + const pageNumber = pageResult.pageIndex + 1; + + // Loop through each bounding box of the found text + for (let j = 0; j < pageResult.bounds.length; j++) { + const bound = pageResult.bounds[j]; + + // Add a redaction annotation at the found text location + viewer.annotation.addAnnotation("Redaction", { + bound: { + x: (bound.x * 96) / 72, + y: (bound.y * 96) / 72, + width: (bound.width * 96) / 72, + height: (bound.height * 96) / 72 + }, + pageNumber: pageNumber, + overlayText: "Confidential", + fillColor: "#00FF40FF", + fontColor: "#333333", + fontSize: 12, + fontFamily: "Arial", + // removed textAlign property (fixes TS2353) + markerFillColor: "#FF0000", + markerBorderColor: "#000000" + }as RedactionSettings); + } + } + }; + }); + +//EventListener to Apply Redaction +document.getElementById("applyRedaction")?.addEventListener('click', ()=>{ + viewer.annotation.redact(); +}); \ No newline at end of file diff --git a/Redaction/Search Text and Redact/src/index.html b/Redaction/Search Text and Redact/src/index.html new file mode 100644 index 0000000..b50d916 --- /dev/null +++ b/Redaction/Search Text and Redact/src/index.html @@ -0,0 +1,24 @@ + + + + + Essential JS 2 + + + + + + + + + + +
+
+
+ + +
+ + + \ No newline at end of file diff --git a/Redaction/Search Text and Redact/src/resources/favicon.ico b/Redaction/Search Text and Redact/src/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d8d5c152e7353a07c3e519c9e53ac9328e515fa8 GIT binary patch literal 6574 zcmeHLZ)jUp6o1J}(=>U>YhL@3w0TL>C8MsL+H`gkEVxdkmO9tb;jBuvbG9p5I^2g+ zoQ_RobEu4M#mx^QI7C|n@y`&)zU<3BbPQB*vVCzdnHEGebfLH<{!U+RdizYC2_~~j z1HasR&O7J+&b{}%bKiS{U=c*2x>`UR5q8-GVZ9(Mk>7TV@$vY-_rFZ=hz7$<%I*YLf(BcUQQv$12qd1n5&7W;6a-9p|6b zEhm49g@-KH`gmCjM%xIyj%eKs>3FcY z7n(o3J#i>co_LArxZI=s%9(%6R(@pPpgxCWiu%Ry6DQk0y}gm7yr6rAVRyV~hT>x~ zwUqzFqjN9j0FA-VgT-jp@-Yrp@Q=->eJHEXYL9=tkj!kdk!e*gDhmYScQgOFnb;OE~-vz&&w zQajg1Pn+N~)SZTV{K{q%o6~)<&}%H8s9lI*l^4D+KY9dvo5Ozg=*(Ki>YA>-a|SZ~p!SYpRMR literal 0 HcmV?d00001 diff --git a/Redaction/Search Text and Redact/src/styles/styles.css b/Redaction/Search Text and Redact/src/styles/styles.css new file mode 100644 index 0000000..c5d413e --- /dev/null +++ b/Redaction/Search Text and Redact/src/styles/styles.css @@ -0,0 +1,9 @@ +@import '../../node_modules/@syncfusion/ej2-base/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-buttons/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-dropdowns/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-inputs/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-navigations/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-popups/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css'; +@import "../../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css"; +@import "../../node_modules/@syncfusion/ej2-notifications/styles/material.css"; \ No newline at end of file diff --git a/Redaction/Search Text and Redact/tsconfig.json b/Redaction/Search Text and Redact/tsconfig.json new file mode 100644 index 0000000..db9b7c2 --- /dev/null +++ b/Redaction/Search Text and Redact/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "ES6", + "sourceMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "moduleResolution": "node" + } +} diff --git a/Redaction/Search Text and Redact/webpack.config.js b/Redaction/Search Text and Redact/webpack.config.js new file mode 100644 index 0000000..f61e596 --- /dev/null +++ b/Redaction/Search Text and Redact/webpack.config.js @@ -0,0 +1,41 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const path = require('path'); + +module.exports = { + entry: ['./src/app/app.ts', './src/styles/styles.css'], + module: { + rules: [ + { + test: /\.ts?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /\.css$/, + use: [ MiniCssExtractPlugin.loader, "css-loader" ] + }, + ], + }, + resolve: { + extensions: ['.ts', '.js'], + }, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'src/index.html' + }), + new MiniCssExtractPlugin({ + filename: "bundle.css" + }) + ], + devServer: { + static: path.join(__dirname, "dist"), + compress: true, + port: 4000, + open: true + }, +}; diff --git a/Redaction/Show or Hide Redaction Toolbar/.gitignore b/Redaction/Show or Hide Redaction Toolbar/.gitignore new file mode 100644 index 0000000..1eae0cf --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/.gitignore @@ -0,0 +1,2 @@ +dist/ +node_modules/ diff --git a/Redaction/Show or Hide Redaction Toolbar/README.md b/Redaction/Show or Hide Redaction Toolbar/README.md new file mode 100644 index 0000000..46e0b02 --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/README.md @@ -0,0 +1,75 @@ +# Essential JS 2 QuickStart + +This project is a skeleton application used to create [Essential JS 2](https://www.syncfusion.com/products/essential-js2) web application. + +>This application uses the latest version of the [webpack-cli](https://webpack.js.org/api/cli/#commands). It requires node `v14.15.0` or higher. + +## Getting Started + +To get started you need to clone the `ej2-quickstart` repository and navigate to `ej2-quickstart` location. + +``` +git clone https://github.com/syncfusion/ej2-quickstart.git quickstart +cd quickstart +``` + +## Installing + +We can get all the Essential JS 2 components in a single npm package [`ej2`](https://www.npmjs.com/package/@syncfusion/ej2). + +We already configure the required packages in the `package.json` file. + +You can run the below command to install all dependent packages related to this seed project. + +``` +npm install +``` + +## Testing + +This application is preconfigured with End-to-End testing and the test case is written in Jasmine. + +We run the test scripts with [Protractor](http://www.protractortest.org/#/) end-to-end test runner. The test case file can be found in the `e2e` folder. + +Protractor can interact with our web application and verify the test scripts. + +We have to install WebDriver and also need to ensure it is updated. Open a separate terminal and run the below npm script. + +``` +npm run update-webdriver +``` + +Open another terminal and run the below npm script. It will start web server to serve our application. + +``` +npm run serve +``` + +Once the web server is up and running, we can run the end-to-end tests using the below npm script + +``` +npm run test +``` + +> **Note:** Since Protractor is using the Selenium Standalone Server, the Java Development Kit (JDK) need to be installed in your local machine. + +If JDK is not installed in your local machine, you can download it from [here](http://www.oracle.com/technetwork/java/javase/downloads/index.html). + +## Running + +The application is configured with [webpack-dev-server](https://webpack.js.org/configuration/dev-server/#devserver), so it will serve the web application in your default browser. + +We have used [Webpack](https://github.com/webpack/webpack) for module loading. + +You can use the below npm script to run the web application. + +``` +npm run start +``` + +## Resources + +You can also refer the below resources to know more details about Essential JS 2 components. + +* [Pure JS Demos](http://ej2.syncfusion.com/demos/) +* [Pure JS Documentation](http://ej2.syncfusion.com/documentation/) diff --git a/Redaction/Show or Hide Redaction Toolbar/e2e/index.spec.js b/Redaction/Show or Hide Redaction Toolbar/e2e/index.spec.js new file mode 100644 index 0000000..e69de29 diff --git a/Redaction/Show or Hide Redaction Toolbar/e2e/protractor.conf.js b/Redaction/Show or Hide Redaction Toolbar/e2e/protractor.conf.js new file mode 100644 index 0000000..43eee1b --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/e2e/protractor.conf.js @@ -0,0 +1,21 @@ +exports.config = { + + allScriptsTimeout: 11000, + + capabilities: { + 'browserName': 'chrome' + }, + + framework: 'jasmine', + + jasmineNodeOpts: { + defaultTimeoutInterval: 10000 + }, + directConnect: true, + + onPrepare: function() { + browser.waitForAngularEnabled(false); + }, + + specs: ['./*.spec.js'] +}; \ No newline at end of file diff --git a/Redaction/Show or Hide Redaction Toolbar/gulpfile.js b/Redaction/Show or Hide Redaction Toolbar/gulpfile.js new file mode 100644 index 0000000..6a623f3 --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/gulpfile.js @@ -0,0 +1,62 @@ +'use strict'; + +var gulp = require('gulp'); + +/** + * Compile TypeScript to JS + */ +gulp.task('compile', function (done) { + var webpack = require('webpack'); + var webpackStream = require('webpack-stream'); + gulp.src(['./src/app/app.ts']).pipe(webpackStream({ + config: require('./webpack.config.js') + }, webpack)) + .pipe(gulp.dest('./dist')) + .on('end', function () { + done(); + }); +}); + +/** + * Testing spec files + */ +var protractor = require('gulp-protractor').protractor; +var webdriver_standalone = require('gulp-protractor').webdriver_standalone; +var webdriver_update = require('gulp-protractor').webdriver_update_specific; + +gulp.task('e2e-serve', webdriver_standalone); + +gulp.task('e2e-webdriver-update', webdriver_update({ + webdriverManagerArgs: ['--ie', '--edge'] +})); + +gulp.task('e2e-test', gulp.series('compile', function (done) { + var browserSync = require('browser-sync'); + var bs = browserSync.create('Essential JS 2'); + var options = { + server: { + baseDir: [ + './dist/', + ], + directory: true + }, + ui: false, + open: false, + notify: false + }; + bs.init(options, function () { + gulp.src(['./spec/**/*.spec.js']) + .pipe(protractor({ + configFile: 'e2e/protractor.conf.js' + })) + .on('error', function (e) { + console.error('Error: ' + e.message); + done(); + process.exit(1); + }) + .on('end', function () { + done(); + process.exit(0); + }); + }); +})); \ No newline at end of file diff --git a/Redaction/Show or Hide Redaction Toolbar/license b/Redaction/Show or Hide Redaction Toolbar/license new file mode 100644 index 0000000..111c12a --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/license @@ -0,0 +1,10 @@ +Essential JS 2 library is available under the Syncfusion Essential Studio program, and can be licensed either under the Syncfusion Community License Program or the Syncfusion commercial license. + +To be qualified for the Syncfusion Community License Program you must have a gross revenue of less than one (1) million U.S. dollars ($1,000,000.00 USD) per year and have less than five (5) developers in your organization, and agree to be bound by Syncfusion’s terms and conditions. + +Customers who do not qualify for the community license can contact sales@syncfusion.com for commercial licensing options. + +Under no circumstances can you use this product without (1) either a Community License or a commercial license and (2) without agreeing and abiding by Syncfusion’s license containing all terms and conditions. + +The Syncfusion license that contains the terms and conditions can be found at +https://www.syncfusion.com/content/downloads/syncfusion_license.pdf diff --git a/Redaction/Show or Hide Redaction Toolbar/package.json b/Redaction/Show or Hide Redaction Toolbar/package.json new file mode 100644 index 0000000..f108444 --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/package.json @@ -0,0 +1,38 @@ +{ + "name": "ej2-quickstart", + "version": "0.0.1", + "description": "Essential JS 2 typescript quick start application", + "author": "Syncfusion Inc.", + "license": "SEE LICENSE IN license", + "repository": { + "type": "git", + "url": "https://github.com/syncfusion/ej2-quickstart.git" + }, + "scripts": { + "start": "webpack-dev-server --mode development", + "build": "webpack --mode production", + "serve": "gulp e2e-serve", + "test": "gulp e2e-test", + "update-webdriver": "gulp e2e-webdriver-update" + }, + "devDependencies": { + "ajv": "^8.11.2", + "browser-sync": "^2.18.12", + "gulp": "*", + "typescript": "*", + "gulp-protractor": "*", + "gulp-typescript": "*", + "jasmine": "^2.6.0", + "css-loader": "^6.7.2", + "ts-loader": "^9.4.1", + "mini-css-extract-plugin": "^2.7.0", + "html-webpack-plugin": "^5.5.0", + "webpack": "^5.75.0", + "webpack-cli": "^5.0.0", + "webpack-dev-server": "^5.2.1", + "webpack-stream": "^7.0.0" + }, + "dependencies": { + "@syncfusion/ej2": "*" + } +} diff --git a/Redaction/Show or Hide Redaction Toolbar/src/app/app.ts b/Redaction/Show or Hide Redaction Toolbar/src/app/app.ts new file mode 100644 index 0000000..7e43713 --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/src/app/app.ts @@ -0,0 +1,22 @@ +import { PdfViewer, TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields, RedactionSettings } from '@syncfusion/ej2-pdfviewer'; + +// Inject required modules +PdfViewer.Inject(TextSelection, TextSearch, Print, Navigation, Toolbar, Magnification, Annotation, FormDesigner, FormFields); + +const viewer: PdfViewer = new PdfViewer({ + documentPath: 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf', + resourceUrl: "https://cdn.syncfusion.com/ej2/31.2.2/dist/ej2-pdfviewer-lib", +}); + +//Adding Redaction Tool in the toolbar +viewer.toolbarSettings.toolbarItems = ['OpenOption', 'UndoRedoTool', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'CommentTool', 'SubmitForm', 'AnnotationEditTool', 'RedactionEditTool', 'FormDesignerEditTool', 'SearchOption', 'PrintOption', 'DownloadOption']; +viewer.appendTo('#PdfViewer'); + +//Show Redaction Toolbar +document.getElementById('showRedactionToolbar')?.addEventListener('click', function(){ + viewer.toolbar.showRedactionToolbar(true); +}); +//Hide Redaction Toolbar +document.getElementById('hideRedactionToolbar')?.addEventListener('click', function(){ + viewer.toolbar.showRedactionToolbar(false); +}); \ No newline at end of file diff --git a/Redaction/Show or Hide Redaction Toolbar/src/index.html b/Redaction/Show or Hide Redaction Toolbar/src/index.html new file mode 100644 index 0000000..a8e9a83 --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/src/index.html @@ -0,0 +1,24 @@ + + + + + Essential JS 2 + + + + + + + + + + +
+
+
+ + +
+ + + \ No newline at end of file diff --git a/Redaction/Show or Hide Redaction Toolbar/src/resources/favicon.ico b/Redaction/Show or Hide Redaction Toolbar/src/resources/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..d8d5c152e7353a07c3e519c9e53ac9328e515fa8 GIT binary patch literal 6574 zcmeHLZ)jUp6o1J}(=>U>YhL@3w0TL>C8MsL+H`gkEVxdkmO9tb;jBuvbG9p5I^2g+ zoQ_RobEu4M#mx^QI7C|n@y`&)zU<3BbPQB*vVCzdnHEGebfLH<{!U+RdizYC2_~~j z1HasR&O7J+&b{}%bKiS{U=c*2x>`UR5q8-GVZ9(Mk>7TV@$vY-_rFZ=hz7$<%I*YLf(BcUQQv$12qd1n5&7W;6a-9p|6b zEhm49g@-KH`gmCjM%xIyj%eKs>3FcY z7n(o3J#i>co_LArxZI=s%9(%6R(@pPpgxCWiu%Ry6DQk0y}gm7yr6rAVRyV~hT>x~ zwUqzFqjN9j0FA-VgT-jp@-Yrp@Q=->eJHEXYL9=tkj!kdk!e*gDhmYScQgOFnb;OE~-vz&&w zQajg1Pn+N~)SZTV{K{q%o6~)<&}%H8s9lI*l^4D+KY9dvo5Ozg=*(Ki>YA>-a|SZ~p!SYpRMR literal 0 HcmV?d00001 diff --git a/Redaction/Show or Hide Redaction Toolbar/src/styles/styles.css b/Redaction/Show or Hide Redaction Toolbar/src/styles/styles.css new file mode 100644 index 0000000..c5d413e --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/src/styles/styles.css @@ -0,0 +1,9 @@ +@import '../../node_modules/@syncfusion/ej2-base/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-buttons/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-dropdowns/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-inputs/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-navigations/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-popups/styles/material.css'; +@import '../../node_modules/@syncfusion/ej2-splitbuttons/styles/material.css'; +@import "../../node_modules/@syncfusion/ej2-pdfviewer/styles/material.css"; +@import "../../node_modules/@syncfusion/ej2-notifications/styles/material.css"; \ No newline at end of file diff --git a/Redaction/Show or Hide Redaction Toolbar/tsconfig.json b/Redaction/Show or Hide Redaction Toolbar/tsconfig.json new file mode 100644 index 0000000..db9b7c2 --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2016", + "module": "ES6", + "sourceMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "moduleResolution": "node" + } +} diff --git a/Redaction/Show or Hide Redaction Toolbar/webpack.config.js b/Redaction/Show or Hide Redaction Toolbar/webpack.config.js new file mode 100644 index 0000000..f61e596 --- /dev/null +++ b/Redaction/Show or Hide Redaction Toolbar/webpack.config.js @@ -0,0 +1,41 @@ +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const path = require('path'); + +module.exports = { + entry: ['./src/app/app.ts', './src/styles/styles.css'], + module: { + rules: [ + { + test: /\.ts?$/, + use: 'ts-loader', + exclude: /node_modules/, + }, + { + test: /\.css$/, + use: [ MiniCssExtractPlugin.loader, "css-loader" ] + }, + ], + }, + resolve: { + extensions: ['.ts', '.js'], + }, + output: { + filename: 'bundle.js', + path: path.resolve(__dirname, 'dist'), + }, + plugins: [ + new HtmlWebpackPlugin({ + template: 'src/index.html' + }), + new MiniCssExtractPlugin({ + filename: "bundle.css" + }) + ], + devServer: { + static: path.join(__dirname, "dist"), + compress: true, + port: 4000, + open: true + }, +};