diff --git a/README.md b/README.md index d15372926..279c6237d 100644 --- a/README.md +++ b/README.md @@ -1,315 +1,126 @@ +# Sunbird Collection Editor -# :diamond_shape_with_a_dot_inside: Collection Editor library for Sunbird platform -Contains Collection Editor library components powered by angular. These components are designed to be used in the sunbirdEd portal and web portal to drive reusability, maintainability hence reducing the redundant development effort significantly. +## Run Locally -![image](https://user-images.githubusercontent.com/36467967/153172086-5552cfe4-ad39-4b70-b015-e7553610a6fa.png) +`Use node version 14.15.0` -# :bookmark_tabs: Getting Started -This guide explains how to set up your Angular project to begin using the collection editor library. It includes information on prerequisites, installing editor library, and optionally displaying a sample editor library component in your application to verify your setup. +Fork the project -If you are new to Angular or getting started with a new Angular application, see [Angular's full Getting Started Guide](https://angular.io/start) and [Setting up your environment](https://angular.io/guide/setup-local). - -For existing applications, follow the steps below to begin using Collection editor library. - - - -## :label: Step 1: Install the packages - -The following commands will add `sunbird-collection-editor-v9` library to your package.json file along with its dependencies. - -```red -npm i @project-sunbird/sunbird-collection-editor-v9 --save +```bash + https://github.com/Sunbird-Ed/sunbird-collection-editor.git ``` -Don't forget to install the below peer dependencies of the library in your application. that need to be installed in order to use the library in your angular project. +### Setting up the Collection Editor Library +Go to the root directory -``` -npm i common-form-elements-web-v9 --save -npm i ng2-semantic-ui-v9 --save -npm i ngx-infinite-scroll --save -npm i lodash-es --save -npm i jquery.fancytree --save -npm i angular2-uuid --save -npm i @project-sunbird/client-services --save -npm i export-to-csv --save -npm i moment --save -npm i @project-sunbird/ckeditor-build-classic --save -npm i @project-sunbird/sunbird-pdf-player-v9 --save -npm i @project-sunbird/sunbird-epub-player-v9 --save -npm i @project-sunbird/sunbird-video-player-v9 --save -npm i @project-sunbird/sunbird-quml-player-v9 --save -npm i ngx-bootstrap@6.0.0 --save -npm i ng2-cache-service --save -npm i fine-uploader --save -npm i ngx-chips@2.2.0 --save -npm i epubjs --save -npm i videojs-contrib-quality-levels --save -npm i videojs-http-source-selector --save -npm i jquery --save -npm i express-http-proxy --save -npm i mathjax-full --save -npm i svg2img --save -npm i font-awesome --save -npm i @project-sunbird/sb-styles +```bash + cd sunbird-collection-editor ``` +Install dependencies -Note: *As Collection library is build with angular version 9, we are using **bootstrap@4.6.1** and **ngx-bootstrap@6.0.0** which are the compatible versions. -For more reference Check compatibility document for ng-bootstrap [here](https://valor-software.com/ngx-bootstrap/#/documentation#compatibility)* - -## :label: Step 2: create and copy required assests - -After installing the above dependencies, now we have to copy the required assets from the given folder to the assets folder of your angular application. It contains styles and plugins. - -- Copy the assets from: [assets](https://github.com/Sunbird-Ed/sunbird-collection-editor/tree/release-4.8.0/src/assets) - -image - -- Create a latexService.js in the root folder. Refer: [latexService.js](https://github.com/Sunbird-Ed/sunbird-collection-editor/blob/release-4.8.0/latexService.js) - -- Create a proxy.conf.json in the root folder. Refer: [proxy.conf.json](https://github.com/Sunbird-Ed/sunbird-collection-editor/blob/release-4.8.0/proxy.conf.json) - -- Create server.js in the root folder. Refer: [server.js](https://github.com/Sunbird-Ed/sunbird-collection-editor/blob/release-4.8.0/server.js) - - -## :label: Step 3: Include the styles, scripts and assets in angular.json - -Now open the `angular.json` file and add the following under `architect.build.assets` for default project - -```diff -{ - ... - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - ... - ... - "aot": false, - "assets": [ - ... - ... -+ { -+ "glob": "**/*", -+ "input": "node_modules/@project-sunbird/sunbird-pdf-player-v9/lib/assets/", -+ "output": "/assets/" -+ }, -+ { -+ "glob": "**/*", -+ "input": "node_modules/@project-sunbird/sunbird-video-player-v9/lib/assets/", -+ "output": "/assets/" -+ }, -+ { -+ "glob": "**/*", -+ "input": "node_modules/@project-sunbird/sunbird-collection-editor-v9/lib/assets", -+ "output": "/assets/" -+ }, -+ { -+ "glob": "**/*", -+ "input": "node_modules/@project-sunbird/sunbird-quml-player-v9/lib/assets/", -+ "output": "/assets/" -+ } - ], - "styles": [ - ... -+ "src/assets/quml-styles/quml-carousel.css", -+ "node_modules/@project-sunbird/sb-styles/assets/_styles.scss", -+ "src/assets/lib/semantic/semantic.min.css", -+ "src/assets/styles/styles.scss", -+ "node_modules/font-awesome/css/font-awesome.css", -+ "node_modules/video.js/dist/video-js.min.css", -+ "node_modules/@project-sunbird/sunbird-video-player-v9/lib/assets/videojs.markers.min.css", -+ "node_modules/videojs-http-source-selector/dist/videojs-http-source-selector.css" - ], - "scripts": [ - ... -+ "node_modules/epubjs/dist/epub.js", -+ "src/assets/libs/iziToast/iziToast.min.js", -+ "node_modules/jquery/dist/jquery.min.js", -+ "node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.min.js", -+ "src/assets/lib/dimmer.min.js", -+ "src/assets/lib/transition.min.js", -+ "src/assets/lib/modal.min.js", -+ "src/assets/lib/semantic-ui-tree-picker.js", -+ "node_modules/@project-sunbird/client-services/index.js", -+ "node_modules/video.js/dist/video.js", -+ "node_modules/@project-sunbird/sunbird-video-player-v9/lib/assets/videojs-markers.js", -+ "node_modules/videojs-contrib-quality-levels/dist/videojs-contrib-quality-levels.min.js", -+ "node_modules/videojs-http-source-selector/dist/videojs-http-source-selector.min.js" - ] - } - } - ... - ... -} +```bash + npm install ``` - -## :label: Step 4: Add question-cursor-implementation.service -Create a **`question-cursor-implementation.service.ts`** in a project and which will implement the `QuestionCursor` and `EditorCursor` abstract class. -`QuestionCursor` and `EditorCursor` is an abstract class, exported from the library, which needs to be implemented. Basically it has some methods which should make an API request over HTTP +Build the library -Let's create the `question-cursor-implementation` service by running the following command: -``` -cd src/app -ng g service question-cursor-implementation +```bash + npm run build-lib ``` -Now open `app.module.ts` file and import like this: - -```diff -+ import { EditorCursor } from 'collection-editor-library'; -+ import { QuestionCursor } from '@project-sunbird/sunbird-quml-player-v9'; -+ import { EditorCursorImplementationService } from './editor-cursor-implementation.service'; - -@NgModule({ - providers: [ -+ { provide: QuestionCursor, useExisting: EditorCursorImplementationService }, -+ { provide: EditorCursor, useExisting: EditorCursorImplementationService } - ], -}) -export class AppModule { } - -``` - - -For more information refer [question-cursor-implementation.service.ts](https://github.com/Sunbird-Ed/sunbird-collection-editor/blob/release-4.7.0/src/app/editor-cursor-implementation.service.ts) and do not forgot to add your question list API URL -**For example:** `https://staging.sunbirded.org/api/question/v1/list` - - - - -## :label: Step 5: Import the modules and components +It will create a `/dist/collection-editor-library` folder at the root directory and also copy all the required assets. -Include `CollectionEditorLibraryModule` in your app module: -```diff - import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -+ import { CollectionEditorLibraryModule, EditorCursor } from '@project-sunbird/sunbird-collection-editor-v9'; - import { RouterModule } from '@angular/router'; - import { QuestionCursor } from '@project-sunbird/sunbird-quml-player-v9'; - import { EditorCursorImplementationService } from './editor-cursor-implementation.service'; +### Starting up Sample application - @NgModule({ - ... +A sample angular application is included as part of this repo - imports: [ -+ CollectionEditorLibraryModule, - BrowserAnimationsModule, - RouterModule.forRoot([]) - ], - providers: [ - { provide: QuestionCursor, useExisting: EditorCursorImplementationService }, - { provide: EditorCursor, useExisting: EditorCursorImplementationService } - ] +In another terminal tab - - ... - }) +From the root directory - Start the server - export class AppModule { } +```bash + npm run start ``` +The demo app will launch at `http://localhost:4200` -Once your library is imported, you can use its main component, `lib-editor` in your Angular application. +### Run Node server to proxy the APIs +From the root directory - go to `server.js` file +```bash +Update the host variable to which env your pointing. example if you are pointing sunbird dev instance update veriable like below +const host = 'dev.sunbirded.org' -Add the tag to the `app.component.html` like so: - -``` - -``` - -## :label: Step 6: Send input to render Collection Editor - -Create a data.ts file which contains the `collectionEditorConfig` Refer: [data.ts](https://github.com/Sunbird-Ed/sunbird-collection-editor/blob/release-4.8.0/src/app/data.ts) - -(Note: `data.ts` contains the mock config used in component to send it as input to collection Editor. We need only [collectionEditorConfig](https://github.com/Sunbird-Ed/sunbird-collection-editor/blob/release-4.8.0/src/app/data.ts#L143).Use the mock config in your component to send input to collection editor as `editorConfig`) - -**app.component.ts** -```diff - ... -+ import { collectionEditorConfig } from './data'; - @Component({ - ... - }) - export class AppComponent { - ... -+ public editorConfig: any = collectionEditorConfig; - } +add `authorization` token as shown below +proxyReqOpts.headers['authorization'] = 'Bearer XXXX' ``` -**app.component.html** +### How to use NPM Sunbird-Questionset-Editor library in your Project -```html - -``` +For help getting started with a new Angular app, check out the Angular CLI. -## :orange_circle: Available components -|Feature| Notes| Selector|Code|Input|Output -|--|--|--|------------------------------------------------------------------------------------------|---|--| -| Collection Editor | Can be used to render Editor | lib-editor| *``*|editorConfig|editorEmitter| - -### :small_red_triangle_down: Input Parameters -1. editorConfig: Object - [`Required`] -```javascript -{ - context: Object // Information about the telemetry and default settings for editor API requests - config: Object // default editor config such as sidebar menu list -} -``` -For more information refer this documentation: [CONFIGURATION.MD](/docs/CONFIGURATION.md) +For existing apps, follow these steps to begin using . -### :small_red_triangle_down: Output Events -1. editorEmitter() - It emits event for each action performed in the editor. ---- +###### Step 1: Install the following packages + npm i @project-sunbird/sunbird-collection-editor-v9 -## :label: Step 7: Set the auth token and collection identifier -Go to the root directory - Open `server.js` file +###### Step 2: Include the Sunbird assets in angular.json + "assets": [ + "src/favicon.ico", + "src/assets", + { + "glob": "**/*", + "input": "./node_modules/@project-sunbird/sunbird-collection-editor-v9/lib/assets/", + "output": "/assets/" + } + ], -Update the host variable to which env your pointing. example if you are pointing sunbird dev instance update variable like below -```javascript -const BASE_URL = 'dev.sunbirded.org' -const API_AUTH_TOKEN = 'XXXX' -const USER_TOKEN= 'YYYY' -``` -Note: You will need actual `API_AUTH_TOKEN` and `USER_TOKEN` - -If you are pointing to sunbird dev -> [dev.sunbirded.org](https://dev.sunbirded.org/), create a textbook in sunbird dev, copy the `textbook_id` from the browser url and set the do_id of textbook in the `data.ts` file - -```javascript -export const collectionEditorConfig = { - context: { - ... - identifier: 'do_id', // identifier of textbook created in sunbird dev - ... - }, - config: { - ... - } -``` -## :label: Step 8: Build the library - -Run `npm run build-lib` to build the library. The build artifacts will be stored in the dist/ directory. - -## :label: Step 9: Run the application - -Before running the application, we have to start the node server to proxy the APIs by running the following command: +###### Step 3: Import the modules and components -``` -nodemon server.js -``` +Add to `NgModule` for the application in which you want to use: -Once that is done, Use the following CLI command to run your application locally + import { CollectionEditorLibraryModule } from 'sunbird-collection-editor-v9'; -``` -npm run start -``` + @NgModule({ + ... + imports: [ + CollectionEditorLibraryModule, + ... + }) -To see your application in the browser, go to [http://localhost:4200](http://localhost:4200). +### How to use question editor +In your template add + -# :bookmark_tabs: Editor Contribution and Configuration Guide +#### Input for library -[Contribution guidelines for this project](docs/CONTRIBUTING.md) +A sample config file is included in the demo app at `src/app/data.ts` -[Configuration guidelines for this project](docs/CONFIGURATION.md) + editorConfig: { + context: { + identifier: 'do_1132125506761932801130', + user: {}, + framework: '', + channel: '', + uid: " + }, + config: { + mode: 'edit', // edit / review / read + maxDepth: 0, + objectType: 'QuestionSet', + primaryCategory: 'Practice Question Set', + isRoot: true, + iconClass: 'fa fa-book', + children: { + Question: [ + 'Multiple Choice Question', + 'Subjective Question' + ] + }, + hierarchy: {} + } + } diff --git a/angular.json b/angular.json index 999de9efb..d1c13458d 100644 --- a/angular.json +++ b/angular.json @@ -56,12 +56,9 @@ "src/assets/styles/styles.scss", "node_modules/font-awesome/css/font-awesome.css", "node_modules/katex/dist/katex.min.css", - "node_modules/video.js/dist/video-js.min.css", - "node_modules/@project-sunbird/sunbird-video-player-v9/lib/assets/videojs.markers.min.css", - "node_modules/videojs-http-source-selector/dist/videojs-http-source-selector.css" + "node_modules/video.js/dist/video-js.min.css" ], "scripts": [ - "node_modules/epubjs/dist/epub.js", "src/assets/libs/iziToast/iziToast.min.js", "node_modules/jquery/dist/jquery.min.js", "node_modules/jquery.fancytree/dist/jquery.fancytree-all-deps.min.js", @@ -71,11 +68,7 @@ "src/assets/lib/modal.min.js", "src/assets/lib/semantic-ui-tree-picker.js", "node_modules/@project-sunbird/telemetry-sdk/index.js", - "node_modules/@project-sunbird/client-services/index.js", - "node_modules/video.js/dist/video.js", - "node_modules/@project-sunbird/sunbird-video-player-v9/lib/assets/videojs-markers.js", - "node_modules/videojs-contrib-quality-levels/dist/videojs-contrib-quality-levels.min.js", - "node_modules/videojs-http-source-selector/dist/videojs-http-source-selector.min.js" + "node_modules/@project-sunbird/client-services/index.js" ] }, "configurations": { @@ -137,9 +130,7 @@ "styles": [ "src/styles.scss" ], - "scripts": [ - "node_modules/epubjs/dist/epub.js" - ], + "scripts": [], "assets": [ "src/favicon.ico", "src/assets" diff --git a/docs/Architecture.md b/docs/Architecture.md deleted file mode 100644 index a7ec8eeb3..000000000 --- a/docs/Architecture.md +++ /dev/null @@ -1,2 +0,0 @@ - -![Architecture](https://github.com/vaibhavbhuva/sunbird-collection-editor-1/blob/1df579f51f29a8a255bc502a2af327ab0ed3fb56/docs/collection-editor-architecture.drawio.png) diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md deleted file mode 100644 index 4dd9e0963..000000000 --- a/docs/CONFIGURATION.md +++ /dev/null @@ -1,276 +0,0 @@ -# Configuration Documentation - -Collection Editor is an angular library built with Angular version 9, and it exports some modules and components. - -**Component:** `editor` - -For example: -``` - -``` - -This is the main editor component that accepts some configuration based on it loads the editor. - -Let's deep dive into the editor input [configuration](/projects/collection-editor-library/src/lib/interfaces/editor.ts): - - -```javascript -export interface IEditorConfig { - context: Context; - config: any; -} -``` - -## Context - `Required` - -This required property from the `collectionEditorConfig` provides the context to the editor mostly in terms of the telemetry and it used these properties when the editor launch. - -```javascript -export interface Context { - programId?: string; - contributionOrgId?: string; - user: User; - identifier?: string; - mode?: string; - authToken?: string; - sid: string; - did: string; - uid: string; - channel: string; - pdata: Pdata; - contextRollup: ContextRollup; - tags: string[]; - cdata?: Cdata[]; - timeDiff?: number; - objectRollup?: ObjectRollup; - host?: string; - endpoint?: string; - userData?: { - firstName: string; - lastName: string; - }; - env: string; - defaultLicense?: any; - board?: any; - medium?: any; - gradeLevel?: any; - subject?: any; - topic?: any; - framework: string; - cloudStorageUrls?: string[]; - additionalCategories?: any[]; - labels?: any; - actor?: any; - channelData?: any; - correctionComments?: any; - sourcingResourceStatus?: string; - sourcingResourceStatusClass?: string; - collectionIdentifier?: string; - unitIdentifier?: string; - collectionObjectType?: string; - collectionPrimaryCategory?: string; - targetFWIds?: string[]; -} -``` - -The context has been classified into two parts as below: -1. Telemetry Context -2. Editor Context - -### 1. Telemetry Context: -It provides the context to the editor mostly in terms of the telemetry. -Let's understand the description of the following properties: - -|Property Name | Description | Required | Default Value -|--|------------------------------------------------------------------------------------------|---|--| -| `env` | It is `string` and Unique environment where the event has occured **For example:** in case of collection editor its `collection_editor` | true | `collection_editor OR questionset_editor` | -| `sid` | It is `string` and session id of the requestor stamped by portal **For example:** `vLpZ1rFl6-sxMVHi4RrmrlHw0HsX9ggC` | true | | -| `did` | It is `string` and uuid of the device, created during app installation or browser **For example:** `1d8e290dd3c2a6a9eeac58568cdef28d` | true | | -| `uid` | It is `string` and Current logged in user id **For example:** `5a587cc1-e018-4859-a0a8-e842650b9d64` | true | | -| `channel` | It is `string` which defines channel identifier to know which channel is currently using. **For example:** `01309282781705830427` | true | | -| `pdata` | It is an `object` which defines the producer information it should have identifier and version and canvas will log in the telemetry. **For example:** `{ id: 'local.sunbird.portal', ver: '4.1.0', pid: 'sunbird-portal' }` | true | | -| `contextRollup` | It is an `object` which defines collection roll up data For example: `{ l1: 'do_1234567890' }` | true | | -| `tags` | It is an `object` and Encrypted dimension tags passed by respective channels. For example: `['01307938306521497658']` | true | | -| `identifier` | It is `string` and Identifier of collection. | false | `''` | -| `authToken` | It is `string` and Auth key to make api calls. | false | `''` | -| `cdata` | It is an `array` which defines the correlation data | false | `[]` | -| `timeDiff` | It is `number` and timeDiff (in sec) is diff of server date and local date | false | `''` | -| `objectRollup` | It is an `object` which defines object rollup data (Only 4 levels are allowed) | false | `{}` | -| `host` | It is `string` which defines the from which domain collection should be load. **For example:** `https://dev.sunbirded.org` | false | `''` | -| `endpoint` | It is `string` and Telemetry API endpoint. **For example:** `/data/v3/telemetry` | false | `''` | -| `userData` | It is `object` and first and last name of logged in user | false | `{}` | - - -### 2. Editor Context: -The editor context is used while launching the editor. -Let's understand the description of the following properties: -|Property Name | Description | Required | Default Value -|--|------------------------------------------------------------------------------------------|---|--| -| `framework` | It is `string` and Organisation framework id. **For example:** `ekstep_ncert_k-12` | true | | -| `user` | It is an `object` which defines user data which contains users id, fullName, lastName, orgIds. | true | **For example:** ``` { id: '5a587cc1-e018-4859-a0a8-e842650b9d64', orgIds: [ '01309282781705830427' ], organisations: {}, fullName: 'Vaibhav Bhuva', firstName: 'Vaibhav', lastName: 'Bhuva', isRootOrgAdmin: true } ``` | -| `programId` | It is `string` and program id in which questionset is created. For example: `f72ad8b0-36df-11ec-a56f-4b503455085f` | false | `''` | -| `contributionOrgId` | It is `string` and Organisation id of the contributor. | false | `''` | -| `identifier` | It is `string` and Identifier of collection. For example: `do_1134357224765685761203`| false | `''` | -| `defaultLicense` | It is `string` and default license of editor. For example: `CC BY 4.0` | false | `''` | -| `cloudStorageUrls` | It is `array` and Array of cloud storage urls | false | `[]` | -| `additionalCategories` | It is `array` and Array of objects of additional categories. For example: `[ { value: 'Classroom Teaching Video', label: 'Classroom Teaching Video' }, { value: 'Concept Map', label: 'Concept Map' }]` | false | `[]` | -| `labels` | It is `object` and Additional labels to be used in editor| false | `{}` | -| `targetFWIds` | It is `array` and Array of target framework ids | false | `[]` | - - -## Config - `Required` -This required property from the `collectionEditorConfig` provides the configuration for the editor to enable/disable some functionalities. - -```javascript -config: { - mode: 'string', //Ex.: 'edit'/'review'/'read'/'sourcingReview'/'orgReview' - editableFields: { - sourcingreview: string[], //Ex.: ["name","description"] - orgreview: string[], - review: string[], - }, - maxDepth: number, //Ex.: 1 - dialcodeMinLength: number, //Ex.: 2 - dialcodeMaxLength: number, //Ex.: 250 - showAddCollaborator: 'boolen', // true | false - enableBulkUpload: 'boolen', - publicStorageAccount: 'url', //Ex.: https://dockstorage.blob.core.windows.net/ - assetConfig: object, - objectType: 'string', //Ex.: Collection - primaryCategory: 'string', //Ex.: Digital Textbook - isRoot: boolean, //Ex.: true - iconClass: 'string', //Ex.: 'fa fa-book' - children: { - Content: [ - 'Explanation Content', - 'Learning Resource', - 'eTextbook', - 'Teacher Resource', - 'Course Assessment' - ] - }, - hierarchy: { - level1: { - name: '', //ex: 'name of the section' - type: '', //ex: 'Unit' - mimeType: 'string', //Ex.: application/vnd.ekstep.content-collection - contentType: 'string', //Ex.: TextBookUnit - primaryCategory: 'string', //ex: 'Textbook Unit' - iconClass: 'string' //ex: 'fa fa-folder-o', - children: {} - }, - level2: { - name: 'string', //Ex.: 'Sub Section' - ... - ... - }, - level3: { - ... - ... - } - }, - contentPolicyUrl: 'string' //Ex.: '/term-of-use.html' - } -``` - -Note: If any of the property is added in object-category-definition. It will take the config from there, otherwise editor will take the mock config passed as input to the editor. - -Description of the properties for the config: - -|Property Name | Description | Required | Default Value -|--|------------------------------------------------------------------------------------------|---|--| -| `isRoot` | It is `boolen` and that defines the node is root node. | true | `true` | -| `objectType` | It is `string` and that defines the object type of collection | true | | -| `iconClass` | It is `string` and that defines the icon of root node | true | `fa fa-book` | -| `children` | It is an `object` and If maxdepth is 0 than children inside the root node defines the content type. **For example:** `children: { Content: [ 'Explanation Content', 'Learning Resource', 'eTextbook' ] }` | true | | -| `contentPolicyUrl` | It is `string` and It defines where should the content policy link will be redirected. | true | `/term-of-use.html` | -| `publicStorageAccount` | It is `url` and URL of the blob storage **For example:** `https://dockstorage.blob.core.windows.net/` | true | | -| `mode` | It is `string` and that defines the mode in editor is to be loaded. **For example:** `edit / review / read / sourcingReview / orgReview` | false | `edit` | -| `editableFields` | It is an `object` and that defines the mode in editor is to be loaded. | false | `{ sourcingreview: [], orgreview: [], review: [], }` | -| `maxDepth` | It is `number` and Defines the depth to which the textbook is to be created. If the depth is 1, hierarchy should have level1 described. | false | **For example:** `1` | -| `dialcodeMinLength` | It is `number` and it specifies the minimum number of characters required in an input field | false | `2` | -| `dialcodeMaxLength` | It is `number` and it specifies the maximum number of characters required in an input field | false | `250` | -| `showAddCollaborator` | It is `boolen` and this is to enable/disable the functionality of add collaborator in editor. If it is true add collobrorator button will be enabled and created can add the collolaborator to collaborate in textbook. | false | `false` | -| `assetConfig` | It is an `object` and `assetConfig` sets the max size limit and type for image and videos to be uploaded in the editor. **For example:** `{ "image": { "size": "1", "sizeType": "MB", "accepted": "png, jpeg" }, "video": { "size": "50", "sizeType": "MB", "accepted": "mp4, webm" } }` | false | `{}` | -| `hierarchy` | It is an `object` and If maxdepth is > 0 then hierarchy should have definiton of the levels. **For example:** `{ level1: { name: 'Textbook Unit', type: 'Unit', mimeType: 'application/vnd.ekstep.content-collection', contentType: 'TextBookUnit', primaryCategory: 'Textbook Unit', iconClass: 'fa fa-folder-o', children: { Content: [ 'Explanation Content', 'Learning Resource' ] } }}` | false | `{}` | - -Following are the configuration for different types of collections. - -**1. Digital Textbook** -```json -{ - "maxDepth": 2, - "objectType": "Collection", - "primaryCategory": "Digital Textbook", - "isRoot": true, - "iconClass": "fa fa-book", - "children": {}, - "hierarchy": { - "level1": { - "name": "Chapter", - "type": "unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "Textbook Unit", - "iconClass": "fa fa-folder-o", - "children": {} - }, - "level2": { - "name": "Sub-Chapter", - "type": "unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "Textbook Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [] - } - } - } -} -``` - -**2. Course** -```json -{ - "maxDepth": 2, - "objectType": "Collection", - "primaryCategory": "Course", - "isRoot": true, - "iconClass": "fa fa-book", - "children": {}, - "hierarchy": { - "level1": { - "name": "Chapter", - "type": "unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": {} - }, - "level2": { - "name": "Sub-Chapter", - "type": "unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [ - "Explanation Content", - "Learning Resource", - "eTextbook", - "Teacher Resource", - "Course Assessment" - ], - "QuestionSet": [ - "Practice Question Set" - ] - } - } - } -} -``` - - -### References: - -https://project-sunbird.atlassian.net/wiki/spaces/SingleSource/pages/2696183813/How+to+configure+forms+in+primaryCategory#Overview -https://project-sunbird.atlassian.net/wiki/spaces/SingleSource/pages/2118451214/Editor+Generalisation+Configurations diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md deleted file mode 100644 index 51ade33b1..000000000 --- a/docs/CONTRIBUTING.md +++ /dev/null @@ -1,96 +0,0 @@ -# Welcome to Editor contributing guide - -In this guide you will get an overview of the contribution workflow of the editor. - -**If you don't have git on your machine,** [install it](https://help.github.com/articles/set-up-git/). - -## Getting started - -#### Fork the project -Go to GitHub and [fork the repository](https://github.com/Sunbird-Ed/sunbird-collection-editor.git). -The forked repository will appear in your GitHub account as - -`https://github.com//sunbird-collection-editor` -#### Clone the repository - -Now clone the forked repository to your machine. Go to your GitHub account, open the forked repository, click on the code button and then click the copy to clipboard icon. - -Open a terminal and run the following git command: - -``` -git clone "url you just copied" -``` -For example: `git clone https://github.com/Sunbird-Ed/sunbird-collection-editor.git` - -#### Go to the root directory and run the following command - -``` -cd sunbird-collection-editor -``` - -#### Install dependencies - -``` -npm install -``` - -#### Build the library - -``` -npm run build-lib -``` - -It will create a `/dist/collection-editor-library` folder at the root directory and also copy all the required assets. - -#### Starting up the sample application - -A sample angular application is included as part of this repo - -Open your terminal, then start the server - - -``` -npm run start -``` - -The demo app will launch at http://localhost:4200 - - -#### Set the auth token and collection identifier - -Go to the root directory - Open `server.js` file - - -Update the host variable to which env your pointing. example if you are pointing sunbird dev instance update variable like below -```javascript -const BASE_URL = 'dev.sunbirded.org' -const API_AUTH_TOKEN = 'XXXX' -const USER_TOKEN= 'YYYY' -``` -Note: You will need actual `API_AUTH_TOKEN` and `USER_TOKEN` - -If you are pointing to sunbird dev ([dev.sunbirded.org](https://dev.sunbirded.org/)), create a collection in sunbird dev and set the do_id of created collection in `data.ts` file - -```javascript -export const collectionEditorConfig = { - context: { - ... - identifier: 'do_id', // identifier of collection created in sunbird dev - ... - }, - config: { - ... - ... - } -} -``` -Run Node server to proxy the APIs (Open one more terminal in root folder and run the server.js ) as: - - - ``` -nodemon server.js -``` - -#### Now make the changes. Stick to the code-style guidelines and remember about tests and 100% code coverage! -#### Commit your changes and Push your changes to your forked repository -#### Go to your forked repository on GitHub. Use the pull request button to create the pull request of your changes. \ No newline at end of file diff --git a/docs/Course.json b/docs/Course.json deleted file mode 100644 index 8271bea01..000000000 --- a/docs/Course.json +++ /dev/null @@ -1,648 +0,0 @@ -{ - "request": { - "objectCategoryDefinition": { - "objectMetadata": { - "config": { - "frameworkMetadata": { - "orgFWType": ["K-12", "TPD"], - "targetFWType": ["K-12"] - }, - "sourcingSettings": { - "collection": { - "maxDepth": 4, - "objectType": "Collection", - "primaryCategory": "Course", - "isRoot": true, - "iconClass": "fa fa-book", - "children": {}, - "hierarchy": { - "level1": { - "name": "Course Unit", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "CourseUnit", - "primaryCategory": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": {"Content": []} - }, - "level2": { - "name": "Course Unit", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "CourseUnit", - "primaryCategory": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": {"Content": []} - }, - "level3": { - "name": "Course Unit", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "CourseUnit", - "primaryCategory": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": {"Content": []} - }, - "level4": { - "name": "Course Unit", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "CourseUnit", - "primaryCategory": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": {"Content": []} - } - } - } - } - }, - "schema": { - "properties": { - "trackable": { - "type": "object", - "properties": { - "enabled": { - "type": "string", - "enum": ["Yes", "No"], - "default": "Yes" - }, - "autoBatch": { - "type": "string", - "enum": ["Yes", "No"], - "default": "Yes" - } - }, - "default": {"enabled": "Yes", "autoBatch": "Yes"}, - "additionalProperties": false - }, - "monitorable": { - "type": "array", - "items": { - "type": "string", - "enum": ["progress-report", "score-report"] - } - }, - "credentials": { - "type": "object", - "properties": { - "enabled": { - "type": "string", - "enum": ["Yes", "No"], - "default": "Yes" - } - }, - "default": {"enabled": "Yes"}, - "additionalProperties": false - }, - "userConsent": { - "type": "string", - "enum": ["Yes", "No"], - "default": "Yes" - }, - "mimeType": { - "type": "string", - "enum": ["application/vnd.ekstep.content-collection"] - } - } - } - }, - "languageCode": [], - "forms": { - "create": { - "templateName": "", - "required": [], - "properties": [ - { - "name": "First Section", - "fields": [ - { - "code": "appIcon", - "dataType": "text", - "description": "appIcon of the content", - "editable": true, - "inputType": "appIcon", - "label": "Icon", - "name": "Icon", - "placeholder": "Icon", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "required": true, - "visible": true - }, - { - "code": "name", - "dataType": "text", - "description": "Name of the content", - "editable": true, - "inputType": "text", - "label": "Title", - "name": "Name", - "placeholder": "Title", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "required": true, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "80", - "message": "Input is Exceeded" - }, - {"type": "required", "message": "Title is required"} - ] - }, - { - "code": "description", - "dataType": "text", - "description": "Description of the content", - "editable": true, - "inputType": "textarea", - "label": "Description", - "name": "Description", - "placeholder": "Description", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "required": false, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "256", - "message": "Input is Exceeded" - } - ] - }, - { - "code": "keywords", - "visible": true, - "editable": true, - "dataType": "list", - "name": "Keywords", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "description": "Keywords for the content", - "inputType": "keywords", - "label": "Keywords", - "placeholder": "Enter Keywords", - "required": false, - "validations": [] - } - ] - }, - { - "name": "Second Section", - "fields": [ - { - "code": "primaryCategory", - "dataType": "text", - "description": "Type", - "editable": false, - "renderingHints": {}, - "inputType": "select", - "label": "Category", - "name": "Type", - "placeholder": "", - "required": true, - "visible": true, - "validations": [] - }, - { - "code": "additionalCategories", - "dataType": "list", - "depends": ["primaryCategory"], - "description": "Additonal Category of the Content", - "editable": true, - "inputType": "nestedselect", - "label": "Additional Category", - "name": "Additional Category", - "placeholder": "Select Additional Category", - "renderingHints": {}, - "required": false, - "visible": true - } - ] - }, - { - "name": "Organisation Framework Terms", - "fields": [ - { - "code": "framework", - "visible": true, - "editable": true, - "dataType": "text", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "description": "", - "label": "Course Type", - "required": true, - "name": "Framework", - "inputType": "framework", - "placeholder": "Select Course Type", - "output": "identifier", - "validations": [ - {"type": "required", "message": "Course Type is required"} - ] - }, - { - "code": "subjectIds", - "visible": true, - "editable": true, - "dataType": "list", - "depends": ["framework"], - "sourceCategory": "subject", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "description": "", - "label": "Subjects covered in the course", - "required": true, - "name": "Subject", - "inputType": "frameworkCategorySelect", - "placeholder": "Select Subject(s)", - "output": "identifier", - "validations": [ - { - "type": "required", - "message": "Subjects Taught is required" - } - ] - }, - { - "code": "topicsIds", - "visible": true, - "editable": true, - "dataType": "list", - "depends": ["framework", "subjectIds"], - "sourceCategory": "topic", - "renderingHints": {}, - "name": "Topic", - "description": "Choose a Topics", - "inputType": "topicselector", - "label": "Topics covered in the course", - "placeholder": "Choose Topics", - "required": false, - "output": "identifier" - } - ] - }, - { - "name": "Target Framework Terms", - "fields": [ - { - "code": "audience", - "dataType": "list", - "description": "Audience", - "editable": true, - "inputType": "nestedselect", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "label": "Audience Type", - "name": "Audience Type", - "placeholder": "Select Audience Type", - "required": false, - "visible": true, - "range": ["Student", "Teacher", "Parent", "Administrator"] - }, - { - "code": "targetBoardIds", - "visible": true, - "depends": [], - "editable": true, - "dataType": "list", - "sourceCategory": "board", - "output": "identifier", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "description": "Board", - "label": "Board/Syllabus of the audience", - "required": true, - "name": "Board/Syllabus", - "inputType": "select", - "placeholder": "Select Board/Syllabus", - "validations": [ - {"type": "required", "message": "Board is required"} - ] - }, - { - "code": "targetMediumIds", - "visible": true, - "depends": ["targetBoardIds"], - "editable": true, - "dataType": "list", - "sourceCategory": "medium", - "output": "identifier", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "description": "", - "label": "Medium(s) of the audience", - "required": true, - "name": "Medium", - "inputType": "nestedselect", - "placeholder": "Select Medium", - "validations": [ - {"type": "required", "message": "Medium is required"} - ] - }, - { - "code": "targetGradeLevelIds", - "visible": true, - "depends": ["targetBoardIds", "targetMediumIds"], - "editable": true, - "dataType": "list", - "sourceCategory": "gradeLevel", - "output": "identifier", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "description": "Class", - "label": "Class(es) of the audience", - "required": true, - "name": "Class", - "inputType": "nestedselect", - "placeholder": "Select Class", - "validations": [ - {"type": "required", "message": "Class is required"} - ] - }, - { - "code": "targetSubjectIds", - "visible": true, - "depends": [ - "targetBoardIds", - "targetMediumIds", - "targetGradeLevelIds" - ], - "editable": true, - "dataType": "list", - "sourceCategory": "subject", - "output": "identifier", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "description": "", - "label": "Subject(s) of the audience", - "required": true, - "name": "Subject", - "inputType": "nestedselect", - "placeholder": "Select Subject", - "validations": [ - {"type": "required", "message": "Subject is required"} - ] - } - ] - }, - { - "name": "Fourth Section", - "fields": [ - { - "code": "author", - "dataType": "text", - "description": "Author of the content", - "editable": true, - "inputType": "text", - "label": "Author", - "name": "Author", - "placeholder": "Author", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "required": false, - "visible": true - }, - { - "code": "attributions", - "dataType": "text", - "description": "Attributions", - "editable": true, - "inputType": "text", - "label": "Attributions", - "name": "Attributions", - "placeholder": "Attributions", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "required": false, - "visible": true - }, - { - "code": "copyright", - "dataType": "text", - "description": "Copyright", - "editable": true, - "inputType": "text", - "label": "Copyright", - "name": "Copyright & year", - "placeholder": "Copyright", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "required": true, - "visible": true, - "validations": [ - {"type": "required", "message": "Copyright is required"} - ] - }, - { - "code": "copyrightYear", - "dataType": "number", - "description": "Year", - "editable": true, - "inputType": "text", - "label": "Copyright Year", - "name": "Copyright Year", - "placeholder": "Copyright Year", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "required": true, - "visible": true, - "validations": [ - { - "type": "required", - "message": "Copyright Year is required" - } - ] - }, - { - "code": "license", - "dataType": "text", - "description": "license", - "editable": true, - "inputType": "select", - "label": "License", - "name": "license", - "placeholder": "Select License", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "required": true, - "visible": true, - "defaultValue": "CC BY 4.0", - "validations": [ - {"type": "required", "message": "License is required"} - ] - } - ] - } - ] - }, - "search": { - "templateName": "", - "required": [], - "properties": [ - { - "code": "primaryCategory", - "dataType": "list", - "description": "Type", - "editable": true, - "default": [], - "renderingHints": {"class": "sb-g-col-lg-1"}, - "inputType": "nestedselect", - "label": "Content Type(s)", - "name": "Type", - "placeholder": "Select ContentType", - "required": false, - "visible": true - }, - { - "code": "board", - "visible": true, - "depends": [], - "editable": true, - "dataType": "list", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "description": "Board", - "label": "Board", - "required": false, - "name": "Board", - "inputType": "select", - "placeholder": "Select Board", - "output": "name" - }, - { - "code": "medium", - "visible": true, - "depends": ["board"], - "editable": true, - "dataType": "list", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "description": "", - "label": "Medium(s)", - "required": false, - "name": "Medium", - "inputType": "nestedselect", - "placeholder": "Select Medium", - "output": "name" - }, - { - "code": "gradeLevel", - "visible": true, - "depends": ["board", "medium"], - "editable": true, - "default": "", - "dataType": "list", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "description": "Class", - "label": "Class(es)", - "required": false, - "name": "Class", - "inputType": "nestedselect", - "placeholder": "Select Class", - "output": "name" - }, - { - "code": "subject", - "visible": true, - "depends": ["board", "medium", "gradeLevel"], - "editable": true, - "default": "", - "dataType": "list", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "description": "", - "label": "Subject(s)", - "required": false, - "name": "Subject", - "inputType": "nestedselect", - "placeholder": "Select Subject", - "output": "name" - }, - { - "code": "topic", - "visible": true, - "editable": true, - "dataType": "list", - "depends": ["board", "medium", "gradeLevel", "subject"], - "default": "", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "name": "Topic", - "description": "Choose a Topics", - "inputType": "topicselector", - "label": "Topic(s)", - "placeholder": "Choose Topics", - "required": false - } - ] - }, - "unitMetadata": { - "templateName": "", - "required": [], - "properties": [ - { - "name": "First Section", - "fields": [ - { - "code": "name", - "dataType": "text", - "description": "Name of the content", - "editable": true, - "inputType": "text", - "label": "Title", - "name": "Title", - "placeholder": "Title", - "renderingHints": {"class": "sb-g-col-lg-1 required"}, - "required": true, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "120", - "message": "Input is Exceeded" - }, - {"type": "required", "message": "Title is required"} - ] - }, - { - "code": "description", - "dataType": "text", - "description": "Description of the content", - "editable": true, - "inputType": "textarea", - "label": "Description", - "name": "Description", - "placeholder": "Description", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "required": false, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "256", - "message": "Input is Exceeded" - } - ] - }, - { - "code": "keywords", - "visible": true, - "editable": true, - "dataType": "list", - "name": "Keywords", - "renderingHints": {"class": "sb-g-col-lg-1"}, - "index": 3, - "description": "Keywords for the content", - "inputType": "keywords", - "label": "Keywords", - "placeholder": "Enter Keywords", - "required": false, - "validations": [] - }, - { - "code": "topic", - "visible": true, - "depends": [], - "editable": true, - "dataType": "list", - "renderingHints": {}, - "name": "Topic", - "description": "Choose a Topics", - "index": 11, - "inputType": "topicselector", - "label": "Topics", - "placeholder": "Choose Topics", - "required": false, - "validations": [] - } - ] - } - ] - } - } - } - } -} \ No newline at end of file diff --git a/docs/Digital Textbook.json b/docs/Digital Textbook.json deleted file mode 100644 index 6f4c461e0..000000000 --- a/docs/Digital Textbook.json +++ /dev/null @@ -1,1381 +0,0 @@ -{ - "request": { - "objectCategoryDefinition": { - "objectMetadata": { - "config": { - "sourcingSettings": { - "collection": { - "maxDepth": 4, - "objectType": "Collection", - "primaryCategory": "Digital Textbook", - "isRoot": true, - "iconClass": "fa fa-book", - "children": {}, - "hierarchy": { - "level1": { - "name": "Textbook Unit", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "TextBookUnit", - "primaryCategory": "Textbook Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [], - "Collection": [] - } - }, - "level2": { - "name": "Section", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "TextBookUnit", - "primaryCategory": "Textbook Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [], - "Collection": [] - } - }, - "level3": { - "name": "Section", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "TextBookUnit", - "primaryCategory": "Textbook Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [], - "Collection": [] - } - }, - "level4": { - "name": "Section", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "TextBookUnit", - "primaryCategory": "Textbook Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [], - "Collection": [] - } - } - } - } - } - }, - "schema": { - "properties": { - "generateDIALCodes": { - "type": "string", - "enum": [ - "Yes", - "No" - ], - "default": "Yes" - }, - "trackable": { - "type": "object", - "properties": { - "enabled": { - "type": "string", - "enum": [ - "Yes", - "No" - ], - "default": "No" - }, - "autoBatch": { - "type": "string", - "enum": [ - "Yes", - "No" - ], - "default": "No" - } - }, - "default": { - "enabled": "No", - "autoBatch": "No" - }, - "additionalProperties": false - }, - "additionalCategories": { - "type": "array", - "items": { - "type": "string" - }, - "default": [ - "Textbook" - ] - }, - "userConsent": { - "type": "string", - "enum": [ - "Yes", - "No" - ], - "default": "Yes" - } - } - } - }, - "forms": { - "childMetadata": { - "templateName": "", - "required": [], - "properties": [ - { - "code": "name", - "editable": true, - "displayProperty": "Editable", - "dataType": "text", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "description": "Name", - "index": 1, - "label": "Name", - "required": true, - "name": "Name", - "inputType": "text", - "placeholder": "Name", - "validations": [ - { - "type": "maxLength", - "value": "120", - "message": "Exceeded the limit of 120 characters" - }, - { - "type": "required", - "message": "Name is required" - } - ] - }, - { - "code": "description", - "dataType": "text", - "description": "Description of the content", - "editable": true, - "inputType": "textarea", - "label": "Description", - "name": "Description", - "placeholder": "Description", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": false, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "1000", - "message": "Exceeded the limit of 1000 characters" - } - ] - }, - { - "code": "primaryCategory", - "dataType": "text", - "description": "Type", - "editable": false, - "renderingHints": {}, - "inputType": "select", - "label": "Category", - "name": "Type", - "placeholder": "", - "required": true, - "visible": true, - "validations": [] - }, - { - "code": "additionalCategories", - "visible": true, - "editable": true, - "displayProperty": "Editable", - "dataType": "list", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "Additional Categories", - "index": 7, - "label": "Additional Categories", - "required": false, - "name": "additionalCategories", - "inputType": "nestedselect", - "placeholder": "Additional Categories" - }, - { - "code": "boardIds", - "visible": true, - "depends": [], - "editable": false, - "dataType": "list", - "sourceCategory": "board", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "", - "label": "Board", - "required": true, - "name": "Board", - "inputType": "nestedselect", - "placeholder": "Select Board" - }, - { - "code": "mediumIds", - "visible": true, - "depends": [], - "editable": false, - "dataType": "list", - "sourceCategory": "medium", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "", - "label": "Medium(s)", - "required": true, - "name": "Medium", - "inputType": "nestedselect", - "placeholder": "Select Medium" - }, - { - "code": "gradeLevelIds", - "visible": true, - "depends": [], - "editable": false, - "dataType": "list", - "sourceCategory": "gradeLevel", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "", - "label": "Class(es)", - "required": true, - "name": "Grade Level", - "inputType": "nestedselect", - "placeholder": "Select Grade" - }, - { - "code": "subjectIds", - "visible": true, - "depends": [], - "editable": false, - "dataType": "list", - "sourceCategory": "subject", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "", - "label": "Subject(s)", - "required": true, - "name": "Subject", - "inputType": "nestedselect", - "placeholder": "Select Subject" - }, - { - "code": "topicsIds", - "visible": true, - "editable": true, - "dataType": "list", - "depends": [ - "boardIds", - "mediumIds", - "gradeLevelIds", - "subjectIds" - ], - "sourceCategory": "topic", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "name": "Topic", - "description": "Choose Topics", - "inputType": "topicselector", - "label": "Topic(s)", - "placeholder": "Select Topic", - "required": false, - "output": "identifier" - }, - { - "code": "copyright", - "dataType": "text", - "description": "Copyright", - "editable": true, - "index": 4, - "inputType": "text", - "label": "Copyright and Year:", - "name": "Copyright", - "placeholder": "Enter Copyright and Year", - "tooltip": "If you are an individual, creating original content, you are the copyright holder. If you are creating this content on behalf of an organisation, the organisation may be the copyright holder. ", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "validations": [ - { - "type": "required", - "message": "Copyright is required" - } - ] - }, - { - "code": "license", - "visible": true, - "editable": true, - "displayProperty": "Editable", - "dataType": "text", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "description": "License", - "index": 6, - "label": "License", - "required": true, - "name": "license", - "inputType": "select", - "placeholder": "license", - "tooltip": "Choose the more appropriate Creative commons license for this Content. ", - "validations": [ - { - "type": "required", - "message": "License is required" - } - ] - }, - { - "code": "author", - "dataType": "text", - "description": "Author", - "editable": true, - "index": 5, - "inputType": "text", - "label": "Author", - "name": "Author", - "placeholder": "Author", - "tooltip": "Provide name of creator of this content.", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": true, - "validations": [ - { - "type": "required", - "message": "Author is required" - } - ] - }, - { - "code": "attributions", - "dataType": "list", - "description": "Attributions", - "editable": true, - "index": 3, - "inputType": "text", - "label": "Attributions", - "name": "attribution", - "placeholder": "", - "tooltip": "If you have relied on another work to create this content, provide the name of that creator and the source of that work.", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": false - }, - { - "code": "contentPolicyCheck", - "visible": true, - "editable": true, - "displayProperty": "Editable", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "description": "Content Policy check", - "index": 7, - "labelHtml": "

I agree that by submitting / publishing this Content, I confirm that this Content complies with prescribed guidelines, including the Terms of Use and Content Policy and that I consent to publish it under the Creative Commons Framework in accordance with the Content Policy. I have made sure that I do not violate others' copyright or privacy rights.

", - "required": true, - "name": "contentPolicyCheck", - "inputType": "checkbox", - "placeholder": "Content Policy Check", - "validations": [ - { - "type": "required", - "message": "Content Policy Check is required" - } - ] - } - ] - }, - "create": { - "templateName": "", - "required": [], - "properties": [ - { - "name": "First Section", - "fields": [ - { - "code": "appIcon", - "dataType": "text", - "description": "appIcon of the content", - "editable": true, - "inputType": "appIcon", - "label": "Icon", - "name": "Icon", - "placeholder": "Icon", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "visible": true - }, - { - "code": "name", - "dataType": "text", - "description": "Name of the content", - "editable": true, - "inputType": "text", - "label": "Name", - "name": "Name", - "placeholder": "Name", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "120", - "message": "Exceeded the limit of 120 characters" - }, - { - "type": "required", - "message": "Name is required" - } - ] - }, - { - "code": "description", - "dataType": "text", - "description": "Description of the content", - "editable": true, - "inputType": "textarea", - "label": "Description", - "name": "Description", - "placeholder": "Description", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": false, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "1000", - "message": "Exceeded the limit of 1000 characters" - } - ] - }, - { - "code": "keywords", - "visible": true, - "editable": true, - "dataType": "list", - "name": "Keywords", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "Keywords for the content", - "inputType": "keywords", - "label": "Keywords", - "placeholder": "Input the keyword and press enter", - "required": false, - "validations": [] - } - ] - }, - { - "name": "Second Section", - "fields": [ - { - "code": "dialcodeRequired", - "dataType": "text", - "description": "QR CODE REQUIRED", - "editable": true, - "default": "No", - "index": 5, - "inputType": "radio", - "label": "QR code required?", - "name": "dialcodeRequired", - "placeholder": "QR code required?", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "range": [ - "Yes", - "No" - ], - "required": false, - "visible": true - }, - { - "code": "dialcodes", - "depends": [ - "dialcodeRequired" - ], - "dataType": "list", - "description": "Digital Infrastructure for Augmented Learning", - "editable": true, - "inputType": "dialcode", - "label": "QR code", - "name": "dialcode", - "placeholder": "Enter code here", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": true, - "visible": true, - "validations": [ - { - "type": "minLength", - "value": "2" - }, - { - "type": "maxLength", - "value": "20" - } - ] - } - ] - }, - { - "name": "Third Section", - "fields": [ - { - "code": "primaryCategory", - "dataType": "text", - "description": "Type", - "editable": false, - "renderingHints": {}, - "inputType": "select", - "label": "Category", - "name": "Type", - "placeholder": "", - "required": true, - "visible": true, - "validations": [] - }, - { - "code": "additionalCategories", - "dataType": "list", - "description": "Additional Category of the Content", - "editable": true, - "inputType": "nestedselect", - "label": "Additional Category", - "name": "Additional Category", - "placeholder": "Select Additional Category", - "renderingHints": {}, - "required": false, - "visible": true - } - ] - }, - { - "name": "Framework Terms", - "fields": [ - { - "code": "audience", - "dataType": "list", - "description": "Audience", - "editable": true, - "inputType": "nestedselect", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "label": "Audience Type", - "name": "Audience Type", - "placeholder": "Select Audience Type", - "required": false, - "visible": true, - "range": [ - "Student", - "Teacher", - "Parent", - "Administrator", - "Other" - ] - }, - { - "code": "boardIds", - "visible": true, - "depends": [], - "editable": true, - "dataType": "list", - "sourceCategory": "board", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "description": "Board", - "label": "Board", - "required": true, - "name": "Board/Syllabus", - "inputType": "select", - "placeholder": "Select Board/Syllabus", - "validations": [ - { - "type": "required", - "message": "Board is required" - } - ] - }, - { - "code": "mediumIds", - "visible": true, - "depends": [ - "boardIds" - ], - "editable": true, - "dataType": "list", - "sourceCategory": "medium", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "description": "", - "label": "Medium(s)", - "required": true, - "name": "Medium", - "inputType": "nestedselect", - "placeholder": "Select Medium", - "validations": [ - { - "type": "required", - "message": "Medium is required" - } - ] - }, - { - "code": "gradeLevelIds", - "visible": true, - "depends": [ - "boardIds", - "mediumIds" - ], - "editable": true, - "dataType": "list", - "sourceCategory": "gradeLevel", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "description": "Class", - "label": "Class(es)", - "required": true, - "name": "Class", - "inputType": "nestedselect", - "placeholder": "Select Class", - "validations": [ - { - "type": "required", - "message": "Class is required" - } - ] - }, - { - "code": "subjectIds", - "visible": true, - "depends": [ - "boardIds", - "mediumIds", - "gradeLevelIds" - ], - "editable": true, - "dataType": "list", - "sourceCategory": "subject", - "output": "identifier", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "description": "", - "label": "Subject(s)", - "required": true, - "name": "Subject", - "inputType": "nestedselect", - "placeholder": "Select Subject", - "validations": [ - { - "type": "required", - "message": "Subject is required" - } - ] - } - ] - }, - { - "name": "Fourth Section", - "fields": [ - { - "code": "author", - "dataType": "text", - "description": "Author of the content", - "editable": true, - "inputType": "text", - "label": "Author", - "name": "Author", - "placeholder": "Author", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": false, - "visible": true - }, - { - "code": "attributions", - "dataType": "list", - "description": "Attributions", - "editable": true, - "inputType": "text", - "label": "Attributions", - "name": "Attributions", - "placeholder": "Attributions", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": false, - "visible": true - }, - { - "code": "copyright", - "dataType": "text", - "description": "Copyright", - "editable": true, - "inputType": "text", - "label": "Copyright", - "name": "Copyright", - "placeholder": "Copyright", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "visible": true, - "validations": [ - { - "type": "required", - "message": "Copyright is required" - } - ] - }, - { - "code": "copyrightYear", - "dataType": "number", - "description": "Year", - "editable": true, - "inputType": "text", - "label": "Copyright Year", - "name": "Copyright Year", - "placeholder": "Copyright Year", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "visible": true, - "validations": [ - { - "type": "required", - "message": "Copyright Year is required" - }, - { - "type": "minLength", - "message": "Year should be a 4 digit number", - "value": 4 - }, - { - "type": "maxLength", - "message": "Year should be a 4 digit number", - "value": 4 - } - ] - }, - { - "code": "license", - "dataType": "text", - "description": "license", - "editable": true, - "inputType": "select", - "label": "License", - "name": "license", - "placeholder": "Select License", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "visible": true, - "defaultValue": "CC BY 4.0", - "validations": [ - { - "type": "required", - "message": "License is required" - } - ] - } - ] - } - ] - }, - "delete": {}, - "publish": {}, - "publishchecklist": { - "templateName": "", - "required": [], - "properties": [ - { - "name": "Appropriateness", - "renderingHints": { - "class": "d-grid-inline-3 display-sectionName" - }, - "fields": [ - { - "code": "appropriatenessOne", - "name": "No Hate speech, Abuse, Violence, Profanity", - "label": "No Hate speech, Abuse, Violence, Profanity", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "appropriatenessTwo", - "name": "No Sexual content, Nudity or Vulgarity", - "label": "No Sexual content, Nudity or Vulgarity", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "appropriatenessThree", - "name": "No Discrimination or Defamation", - "label": "No Discrimination or Defamation", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "appropriatenessFour", - "name": "Is suitable for children", - "label": "Is suitable for children", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - } - ] - }, - { - "name": "Content details", - "renderingHints": { - "class": "d-grid-inline-3 display-sectionName" - }, - "fields": [ - { - "code": "contentdetailsOne", - "name": "Appropriate Title, Description", - "label": "Appropriate Title, Description", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "contentdetailsTwo", - "name": "Correct Board, Grade, Subject, Medium", - "label": "Correct Board, Grade, Subject, Medium", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "contentdetailsThree", - "name": "Appropriate tags such as Resource Type, Concepts", - "label": "Appropriate tags such as Resource Type, Concepts", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "contentdetailsFour", - "name": "Relevant Keywords", - "label": "Relevant Keywords", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - } - ] - }, - { - "name": "Usability", - "renderingHints": { - "class": "d-grid-inline-3 display-sectionName" - }, - "fields": [ - { - "code": "usabilityOne", - "name": "Content plays correctly", - "label": "Content plays correctly", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "usabilityTwo", - "name": "Can see the content clearly on Desktop and App", - "label": "Can see the content clearly on Desktop and App", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "usabilityThree", - "name": "Audio (if any) is clear and easy to understand", - "label": "Audio (if any) is clear and easy to understand", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "usabilityFour", - "name": "No Spelling mistakes in the text", - "label": "No Spelling mistakes in the text", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "usabilityFive", - "name": "Language is simple to understand", - "label": "Language is simple to understand", - "dataType": "boolean", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "validations": [ - { - "type": "required", - "message": "" - } - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - } - } - ] - } - ] - }, - "review": {}, - "search": { - "templateName": "", - "required": [], - "properties": [ - { - "code": "primaryCategory", - "dataType": "list", - "description": "Type", - "editable": true, - "default": [], - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "inputType": "nestedselect", - "label": "Content Type(s)", - "name": "Type", - "placeholder": "Select ContentType", - "required": false, - "visible": true - }, - { - "code": "board", - "visible": true, - "depends": [], - "editable": true, - "dataType": "list", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "Board", - "label": "Board", - "required": false, - "name": "Board", - "inputType": "select", - "placeholder": "Select Board", - "output": "name" - }, - { - "code": "medium", - "visible": true, - "depends": [ - "board" - ], - "editable": true, - "dataType": "list", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "", - "label": "Medium(s)", - "required": false, - "name": "Medium", - "inputType": "nestedselect", - "placeholder": "Select Medium", - "output": "name" - }, - { - "code": "gradeLevel", - "visible": true, - "depends": [ - "board", - "medium" - ], - "editable": true, - "default": "", - "dataType": "list", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "Class", - "label": "Class(es)", - "required": false, - "name": "Class", - "inputType": "nestedselect", - "placeholder": "Select Class", - "output": "name" - }, - { - "code": "subject", - "visible": true, - "depends": [ - "board", - "medium", - "gradeLevel" - ], - "editable": true, - "default": "", - "dataType": "list", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "description": "", - "label": "Subject(s)", - "required": false, - "name": "Subject", - "inputType": "nestedselect", - "placeholder": "Select Subject", - "output": "name" - }, - { - "code": "topic", - "visible": true, - "editable": true, - "dataType": "list", - "depends": [ - "board", - "medium", - "gradeLevel", - "subject" - ], - "default": "", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "name": "Topic", - "description": "Choose a Topics", - "inputType": "topicselector", - "label": "Topic(s)", - "placeholder": "Choose Topics", - "required": false - } - ] - }, - "unitMetadata": { - "templateName": "", - "required": [], - "properties": [ - { - "name": "First Section", - "fields": [ - { - "code": "name", - "dataType": "text", - "description": "Name of the content", - "editable": true, - "inputType": "text", - "label": "Name", - "name": "Title", - "placeholder": "Name", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "120", - "message": "Exceeded the limit of 120 characters" - }, - { - "type": "required", - "message": "Name is required" - } - ] - }, - { - "code": "description", - "dataType": "text", - "description": "Description of the content", - "editable": true, - "inputType": "textarea", - "label": "Description", - "name": "Description", - "placeholder": "Description", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": false, - "visible": true, - "validations": [ - { - "type": "maxLength", - "value": "1000", - "message": "Exceeded the limit of 120 characters" - } - ] - }, - { - "code": "keywords", - "visible": true, - "editable": true, - "dataType": "list", - "name": "Keywords", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "index": 3, - "description": "Keywords for the content", - "inputType": "keywords", - "label": "Keywords", - "placeholder": "Input the keyword and press enter", - "required": false, - "validations": [] - }, - { - "code": "topic", - "visible": true, - "editable": true, - "dataType": "list", - "depends": [ - "board", - "medium", - "gradeLevel", - "subject" - ], - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "name": "Topic", - "description": "Choose a Topics", - "inputType": "topicselector", - "label": "Topics covered in the course", - "placeholder": "Choose Topics", - "required": false - }, - { - "code": "dialcodeRequired", - "dataType": "text", - "description": "QR CODE REQUIRED", - "editable": true, - "default": "No", - "index": 5, - "inputType": "radio", - "label": "QR code required?", - "name": "dialcodeRequired", - "placeholder": "QR code required?", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "range": [ - "Yes", - "No" - ], - "required": false, - "visible": true - }, - { - "code": "dialcodes", - "depends": [ - "dialcodeRequired" - ], - "dataType": "list", - "description": "Digital Infrastructure for Augmented Learning", - "editable": true, - "inputType": "dialcode", - "label": "QR code", - "name": "dialcode", - "placeholder": "Enter code here", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": true, - "visible": true, - "validations": [ - { - "type": "minLength", - "value": "2" - }, - { - "type": "maxLength", - "value": "20" - } - ] - } - ] - } - ] - }, - "update": {} - } - } - } - } \ No newline at end of file diff --git a/docs/collection-editor-architecture.drawio.png b/docs/collection-editor-architecture.drawio.png deleted file mode 100644 index 662dac89c..000000000 Binary files a/docs/collection-editor-architecture.drawio.png and /dev/null differ diff --git a/package-lock.json b/package-lock.json index 8645b5874..c0e79ea19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2816,6 +2816,16 @@ "lodash-es": "^4.17.15" } }, + "@digitalbazaar/http-client": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-1.2.0.tgz", + "integrity": "sha512-W9KQQ5pUJcaR0I4c2HPJC0a7kRbZApIorZgPnEDwMBgj16iQzutGLrCXYaZOmxqVLVNqqlQ4aUJh+HBQZy4W6Q==", + "requires": { + "esm": "^3.2.22", + "ky": "^0.25.1", + "ky-universal": "^0.8.2" + } + }, "@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -2960,15 +2970,27 @@ } }, "@project-sunbird/client-services": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@project-sunbird/client-services/-/client-services-4.2.3.tgz", - "integrity": "sha512-SF19rRxXzfIirtP+5nFHSGV5wlYh6OW7oVHX89z7CH2DUzxjnprfF2+cUlzd01bguJXdcP/mF5QKBRbBrIRmJA==", - "requires": { - "@project-sunbird/telemetry-sdk": "0.0.26", - "inversify": "^5.0.1", - "qs": "^6.9.4", - "reflect-metadata": "^0.1.13", - "whatwg-fetch": "^3.1.0" + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@project-sunbird/client-services/-/client-services-7.0.5.tgz", + "integrity": "sha512-jDHUk2u0U38md/Gwv4BRyFgLOoQtMVaQXhHgWIdfxwr/5L4TAxOO743A5bbMKP2FKO8YOfLiyBaverFV0ZeuYg==", + "requires": { + "@project-sunbird/telemetry-sdk": "1.3.0", + "dayjs": "1.9.8", + "inversify": "5.1.1", + "jsonld": "5.2.0", + "jsonld-signatures": "7.0.0", + "jszip": "3.10.1", + "node-fetch": "2.7.0", + "qs": "6.9.7", + "reflect-metadata": "0.1.13", + "whatwg-fetch": "3.6.19" + }, + "dependencies": { + "@project-sunbird/telemetry-sdk": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@project-sunbird/telemetry-sdk/-/telemetry-sdk-1.3.0.tgz", + "integrity": "sha512-9vocPJpB08/8pAXDUKQmhCiBxJ9qHxORF1+ot3kJczSnRh/K+POpAWDCR4iJ2+gWXPDE03WIWezshKpyf0RdYQ==" + } } }, "@project-sunbird/sb-styles": { @@ -2976,53 +2998,34 @@ "resolved": "https://registry.npmjs.org/@project-sunbird/sb-styles/-/sb-styles-0.0.7.tgz", "integrity": "sha512-XirxDLdQnaKJC+tFh4IAD05ULHS7DE9ZkNsPRHglWzly8erTXe6M1DAL+XWKYVFLf+GK9U6HVKlvvxIUpRCiVw==" }, - "@project-sunbird/sunbird-epub-player-v9": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-epub-player-v9/-/sunbird-epub-player-v9-4.5.5.tgz", - "integrity": "sha512-nQdzxp1v0pdfk1uGDt6UODQ+TFReATPxSd4qWNpcxGCoXN66uXARmRyjTD9eRsH7TRAR+VVqxeUmdTxwV9I2hg==", - "requires": { - "@project-sunbird/sunbird-player-sdk-v9": "4.4.4" - } - }, "@project-sunbird/sunbird-pdf-player-v9": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-pdf-player-v9/-/sunbird-pdf-player-v9-4.2.0.tgz", - "integrity": "sha512-RxmXPpvGaAsMDmQJXf1tJZt3/JT5CXCOi6x4kZjmjDynMME8oVRn4HRPyxqgielbWhTop2CpOt51BC8hM3ujKQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-pdf-player-v9/-/sunbird-pdf-player-v9-4.1.1.tgz", + "integrity": "sha512-KN/bphOZePttenhQEMxqJY8u1SlX0BigtGrZu2FzXqkhEblfzwU3Gtck/vdkmFdjcx7X7sAAQLQtKIfDjzQd1g==", "requires": { - "@project-sunbird/sunbird-player-sdk-v9": "^4.2.0" + "@project-sunbird/sunbird-player-sdk-v9": "4.1.0" } }, "@project-sunbird/sunbird-player-sdk-v9": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-player-sdk-v9/-/sunbird-player-sdk-v9-4.4.4.tgz", - "integrity": "sha512-AsHyA3SUpNRcGiCTVkp4rLtuFPPIQTOHhthREHHe90g4HX+JeeaSz3FYRzZ3nLjZdNFWOJ/9Xqni00sJQcuDfQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-player-sdk-v9/-/sunbird-player-sdk-v9-4.1.0.tgz", + "integrity": "sha512-NCU0VQZab2yDicbj5Trcb85qG5aAbIyEMme96zEoqfu1SgVlvxDKPCLBbNBukXVkWs7BWNj5UBxrsKZbVdtFSA==" }, "@project-sunbird/sunbird-quml-player-v9": { - "version": "4.8.11", - "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-quml-player-v9/-/sunbird-quml-player-v9-4.8.11.tgz", - "integrity": "sha512-RktWW5ZmadduzbWcq6F50YYiSK6Ve+c6yKffzz9oByzsFoQ+XvrwejVHdUqaXa7dwArQveD/f2AbdCE0s28yOQ==", + "version": "4.4.16", + "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-quml-player-v9/-/sunbird-quml-player-v9-4.4.16.tgz", + "integrity": "sha512-jDaQLtbHo3Zz2ABiMtZfEmMOUV/0ZUpQ+MaKGKKcHyR4NduiSh2Ii17Klab1mxOyDLo73trTsOEvoJ9Infs59w==", "requires": { - "@project-sunbird/sunbird-player-sdk-v9": "4.8.0" + "@project-sunbird/sunbird-player-sdk-v9": "^4.4.4" }, "dependencies": { "@project-sunbird/sunbird-player-sdk-v9": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-player-sdk-v9/-/sunbird-player-sdk-v9-4.8.0.tgz", - "integrity": "sha512-8qj3Gg027eT6dqLw9iPGJ1GApoytvnglHSOb7p5E0lwZH+pneGh1iESP0avX98klg5CkHn0Sh+V/m4tP0/f4Gw==", - "requires": { - "ally.js": "1.4.1" - } + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-player-sdk-v9/-/sunbird-player-sdk-v9-4.4.4.tgz", + "integrity": "sha512-AsHyA3SUpNRcGiCTVkp4rLtuFPPIQTOHhthREHHe90g4HX+JeeaSz3FYRzZ3nLjZdNFWOJ/9Xqni00sJQcuDfQ==" } } }, - "@project-sunbird/sunbird-resource-library": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-resource-library/-/sunbird-resource-library-0.0.14.tgz", - "integrity": "sha512-VH6xOFENjePIPqh1LdQ2ZG/iKAPRlDIWMO2e4FA4sa72G43MMGgdPfY/BXwt6R52iLSIuEFZ8YRGjZzpwDz/4A==", - "requires": { - "tslib": "^1.10.0" - } - }, "@project-sunbird/sunbird-video-player-v9": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/@project-sunbird/sunbird-video-player-v9/-/sunbird-video-player-v9-4.4.2.tgz", @@ -3039,54 +3042,11 @@ } }, "@project-sunbird/telemetry-sdk": { - "version": "0.0.26", - "resolved": "https://registry.npmjs.org/@project-sunbird/telemetry-sdk/-/telemetry-sdk-0.0.26.tgz", - "integrity": "sha512-8r8tf+YN+z8A4KHBmL8/wxDIKGkASDHMMxyhlI9/iWv83sueoN5qHB6QnqgtIRyEdFjt4Tum5u18/oB71Bb0PQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@project-sunbird/telemetry-sdk/-/telemetry-sdk-1.1.0.tgz", + "integrity": "sha512-K0ynBoikZblF2Ndi1Q6+qbVPNsL3yOz5BLS9F4nTtSJvlmTINFT34WqsMYe3VUp33tSM+VytgWssG8faz9eHPw==", "requires": { - "grunt-karma": "^0.12.2", - "karma": "^3.0.0" - }, - "dependencies": { - "karma": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/karma/-/karma-3.1.4.tgz", - "integrity": "sha512-31Vo8Qr5glN+dZEVIpnPCxEGleqE0EY6CtC2X9TagRV3rRQ3SNrvfhddICkJgUK3AgqpeKSZau03QumTGhGoSw==", - "requires": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", - "chokidar": "^2.0.3", - "colors": "^1.1.0", - "combine-lists": "^1.0.0", - "connect": "^3.6.0", - "core-js": "^2.2.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "expand-braces": "^0.1.1", - "flatted": "^2.0.0", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^4.17.5", - "log4js": "^3.0.0", - "mime": "^2.3.1", - "minimatch": "^3.0.2", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", - "socket.io": "2.1.1", - "source-map": "^0.6.1", - "tmp": "0.0.33", - "useragent": "2.3.0" - } - }, - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - } + "axios": "1.6.2" } }, "@rollup/plugin-commonjs": { @@ -3247,14 +3207,6 @@ "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", "dev": true }, - "@types/localforage": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.34.tgz", - "integrity": "sha1-XjHDLdh5HsS5/z70fJy1Wy0NlDg=", - "requires": { - "localforage": "*" - } - }, "@types/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", @@ -3556,16 +3508,6 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "dev": true }, - "JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "requires": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - } - }, "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -3576,6 +3518,14 @@ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "requires": { + "event-target-shim": "^5.0.0" + } + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -3618,7 +3568,8 @@ "after": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true }, "agent-base": { "version": "4.3.0", @@ -3671,15 +3622,6 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true }, - "ally.js": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ally.js/-/ally.js-1.4.1.tgz", - "integrity": "sha1-n7fmuljvrE7pExyymqnuO1QLzx4=", - "requires": { - "css.escape": "^1.5.0", - "platform": "1.3.3" - } - }, "alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", @@ -3898,6 +3840,15 @@ "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, "array-each": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", @@ -3949,11 +3900,6 @@ } } }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=" - }, "array-sort": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", @@ -3988,10 +3934,26 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true }, "arrify": { "version": "1.0.1", @@ -4112,7 +4074,8 @@ "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true }, "async-settle": { "version": "1.0.0", @@ -4153,6 +4116,14 @@ "postcss-value-parser": "^4.0.2" } }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -4163,6 +4134,28 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, + "axios": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + }, + "dependencies": { + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, "axobject-query": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", @@ -4289,7 +4282,8 @@ "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true }, "balanced-match": { "version": "1.0.0", @@ -4346,10 +4340,19 @@ } } }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true }, "base64-js": { "version": "1.5.1", @@ -4360,7 +4363,21 @@ "base64id": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "base64url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz", + "integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==" + }, + "base64url-universal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/base64url-universal/-/base64url-universal-1.1.0.tgz", + "integrity": "sha512-WyftvZqye29YQ10ZnuiBeEj0lk8SN8xHU9hOznkLc85wS1cLTp6RpzlMrHxMPD9nH7S55gsBqMqgGyz93rqmkA==", + "requires": { + "base64url": "^3.0.0" + } }, "batch": { "version": "0.6.1", @@ -4380,6 +4397,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, "requires": { "callsite": "1.0.0" } @@ -4407,7 +4425,8 @@ "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true }, "blocking-proxy": { "version": "1.0.1", @@ -4421,7 +4440,8 @@ "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true }, "bn.js": { "version": "5.2.0", @@ -4752,6 +4772,14 @@ "https-proxy-agent": "^2.2.1" } }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "requires": { + "base-x": "^3.0.2" + } + }, "btoa": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", @@ -4772,6 +4800,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, "requires": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -4780,7 +4809,8 @@ "buffer-alloc-unsafe": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true }, "buffer-equal": { "version": "1.0.0", @@ -4790,7 +4820,8 @@ "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true }, "buffer-from": { "version": "1.1.1", @@ -4999,12 +5030,15 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "caller-callsite": { @@ -5028,7 +5062,8 @@ "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true }, "callsites": { "version": "2.0.0", @@ -5066,6 +5101,11 @@ "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", "dev": true }, + "canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" + }, "canvas": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.6.1.tgz", @@ -5160,11 +5200,6 @@ "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", "dev": true }, - "circular-json": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", - "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==" - }, "ckeditor5": { "version": "28.0.0", "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-28.0.0.tgz", @@ -5464,22 +5499,8 @@ "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==" - }, - "combine-lists": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", - "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", - "requires": { - "lodash": "^4.5.0" - }, - "dependencies": { - "lodash": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", - "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" - } - } + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true }, "combined-stream": { "version": "1.0.8", @@ -5495,9 +5516,9 @@ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" }, "common-form-elements-web-v9": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/common-form-elements-web-v9/-/common-form-elements-web-v9-4.7.2.tgz", - "integrity": "sha512-MsH0QLghlZZpN/z27iCgGQckUecSoBhGDIzIuVKqsIBPEVqVqktDtuHl2Mxiv9XWAhZa31IVM0shVoAWVX8LDg==", + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/common-form-elements-web-v9/-/common-form-elements-web-v9-4.4.6.tgz", + "integrity": "sha512-9uak+bkon9N4ORS+vwMnTvraSx6oFYIB5fwVG4s/i/omgCr10myWaCMpi5HaDbCIz8t2X2SR7vcvJ0zazDMH9g==", "requires": { "immutable": "^4.0.0-rc.12", "moment": "^2.29.1", @@ -5519,7 +5540,8 @@ "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true }, "component-emitter": { "version": "1.3.0", @@ -5529,7 +5551,8 @@ "component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true }, "compressible": { "version": "2.0.18", @@ -5620,6 +5643,7 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, "requires": { "debug": "2.6.9", "finalhandler": "1.1.2", @@ -5688,7 +5712,8 @@ "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true }, "cookie-signature": { "version": "1.0.6", @@ -5998,6 +6023,25 @@ "randomfill": "^1.0.3" } }, + "crypto-ld": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/crypto-ld/-/crypto-ld-3.9.0.tgz", + "integrity": "sha512-PFE7V6A2QNnUp6iiPVEZI4p8wsztkEWLbY1BAXVnclm/aw4KGwpJ+1Ds4vQUCJ5BsWxj15fwE5rHQ8AWaWB2nw==", + "requires": { + "base64url-universal": "^1.0.1", + "bs58": "^4.0.1", + "node-forge": "~0.10.0", + "semver": "^6.2.0", + "sodium-native": "^3.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -6130,11 +6174,6 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" }, - "css.escape": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", - "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" - }, "cssauron": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", @@ -6273,7 +6312,8 @@ "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=" + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true }, "cyclist": { "version": "1.0.1", @@ -6304,15 +6344,50 @@ "assert-plus": "^1.0.0" } }, + "data-uri-to-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", + "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" + }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "date-fns": { "version": "2.0.0-alpha.1", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.0.0-alpha.1.tgz", "integrity": "sha512-4gYdF1rDgv9X/0ko69pt+FgpQtDU5rgqZVmckIOhDicfCSTndwHMhUhLJw+pa4DlPdzIkEBtHg6L6VlQ6ueD1g==" }, - "date-format": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz", - "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg=" + "dayjs": { + "version": "1.9.8", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.9.8.tgz", + "integrity": "sha512-F42qBtJRa30FKF7XDnOQyNUTsaxDkuaZRj/i7BejSHC34LlLfPoIU4aeopvWfM+m1dJ6/DHKAWLg2ur+pLgq1w==" }, "debug": { "version": "2.6.9", @@ -6432,12 +6507,24 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", "dev": true }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "requires": { - "object-keys": "^1.0.12" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "define-property": { @@ -6595,7 +6682,8 @@ "di": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=" + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true }, "diff": { "version": "3.5.0", @@ -6660,6 +6748,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, "requires": { "custom-event": "~1.0.0", "ent": "~2.2.0", @@ -6846,6 +6935,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, "requires": { "accepts": "~1.3.4", "base64id": "1.0.0", @@ -6859,6 +6949,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -6869,6 +6960,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, "requires": { "component-emitter": "1.2.1", "component-inherit": "0.0.3", @@ -6886,12 +6978,14 @@ "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -6902,6 +6996,7 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", @@ -6924,46 +7019,14 @@ "ent": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=" + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true }, "entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, - "epubjs": { - "version": "0.3.88", - "resolved": "https://registry.npmjs.org/epubjs/-/epubjs-0.3.88.tgz", - "integrity": "sha512-VRumULpUELYmYwzypyfbDwoSIqDp2LXOXCtY3o55o3YDW5Zm32UjtZuX/xaWFGqyZORNNMWWQ8VlMaY1djnDYg==", - "requires": { - "@types/localforage": "0.0.34", - "core-js": "^3.6.5", - "event-emitter": "^0.3.5", - "jszip": "^3.4.0", - "localforage": "^1.7.3", - "lodash": "^4.17.15", - "marks-pane": "^1.0.9", - "path-webpack": "0.0.3", - "xmldom": "^0.3.0" - }, - "dependencies": { - "core-js": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.20.3.tgz", - "integrity": "sha512-vVl8j8ph6tRS3B8qir40H7yw7voy17xL0piAjlbBUsH7WIfzoedL/ZOr1OV9FyZQLWXsayOJyV4tnRyXR85/ag==" - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "xmldom": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.3.0.tgz", - "integrity": "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==" - } - } - }, "err-code": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", @@ -6988,24 +7051,87 @@ } }, "es-abstract": { - "version": "1.18.0-next.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.2.tgz", - "integrity": "sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw==", - "requires": { - "call-bind": "^1.0.2", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.2", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.1", - "object-inspect": "^1.9.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.3", - "string.prototype.trimstart": "^1.0.3" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" } }, "es-to-primitive": { @@ -7164,19 +7290,16 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true }, "events": { "version": "3.3.0", @@ -7224,31 +7347,6 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, - "expand-braces": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", - "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", - "requires": { - "array-slice": "^0.2.3", - "array-unique": "^0.2.1", - "braces": "^0.1.2" - }, - "dependencies": { - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "braces": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", - "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", - "requires": { - "expand-range": "^0.1.0" - } - } - } - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -7281,27 +7379,6 @@ } } }, - "expand-range": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", - "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", - "requires": { - "is-number": "^0.1.1", - "repeat-string": "^0.2.2" - }, - "dependencies": { - "is-number": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", - "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=" - }, - "repeat-string": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", - "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=" - } - } - }, "expand-tilde": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", @@ -7310,11 +7387,6 @@ "homedir-polyfill": "^1.0.1" } }, - "export-to-csv": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/export-to-csv/-/export-to-csv-0.2.1.tgz", - "integrity": "sha512-KTbrd3CAZ0cFceJEZr1e5uiMasabeCpXq1/5uvVxDl53o4jXJHnltasQoj2NkzrxD8hU9kdwjnMhoir/7nNx/A==" - }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -7626,6 +7698,11 @@ "websocket-driver": ">=0.5.1" } }, + "fetch-blob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-2.1.2.tgz", + "integrity": "sha512-YKqtUDwqLyfyMnmbw8XD6Q8j9i/HggKtPEI+pZ1+8bvheBu78biSmNaXWusx1TauGqtUUGx/cBb1mKdq2rLYow==" + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", @@ -7824,7 +7901,8 @@ "flatted": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==" + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true }, "flush-write-stream": { "version": "1.1.1", @@ -7836,15 +7914,23 @@ } }, "follow-redirects": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.2.tgz", - "integrity": "sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA==" + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, "font-awesome": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -7965,9 +8051,25 @@ } }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" }, "gauge": { "version": "2.7.4", @@ -8003,13 +8105,15 @@ "dev": true }, "get-intrinsic": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.0.tgz", - "integrity": "sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-stream": { @@ -8021,6 +8125,16 @@ "pump": "^3.0.0" } }, + "get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "requires": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -8158,6 +8272,15 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, "globby": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", @@ -8180,6 +8303,14 @@ "sparkles": "^1.0.0" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "got": { "version": "9.6.0", "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", @@ -8221,14 +8352,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, - "grunt-karma": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/grunt-karma/-/grunt-karma-0.12.2.tgz", - "integrity": "sha1-1SZ2q5R3nksgBStfNRnrMmU9xWY=", - "requires": { - "lodash": "^3.10.1" - } - }, "gulp": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", @@ -8475,14 +8598,15 @@ } }, "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-binary2": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, "requires": { "isarray": "2.0.1" }, @@ -8490,24 +8614,47 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true } } }, "has-cors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "requires": { + "has-symbols": "^1.0.3" + } }, "has-unicode": { "version": "2.0.1", @@ -8589,6 +8736,14 @@ "minimalistic-assert": "^1.0.1" } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, "hex-color-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", @@ -8683,6 +8838,7 @@ "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, "requires": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -8907,7 +9063,8 @@ "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true }, "individual": { "version": "2.0.0", @@ -9082,6 +9239,16 @@ "ipaddr.js": "^1.9.0" } }, + "internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "requires": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + } + }, "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -9166,15 +9333,27 @@ "call-bind": "^1.0.0" } }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-bigint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", - "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } }, "is-binary-path": { "version": "1.0.1", @@ -9185,11 +9364,12 @@ } }, "is-boolean-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", - "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-buffer": { @@ -9198,9 +9378,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", - "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==" }, "is-ci": { "version": "2.0.0", @@ -9251,6 +9431,14 @@ } } }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "requires": { + "is-typed-array": "^1.1.13" + } + }, "is-date-object": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", @@ -9352,9 +9540,9 @@ "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" }, "is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==" }, "is-npm": { "version": "4.0.0", @@ -9381,9 +9569,12 @@ } }, "is-number-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", - "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-obj": { "version": "2.0.0", @@ -9439,11 +9630,12 @@ } }, "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "has-symbols": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-relative": { @@ -9460,6 +9652,14 @@ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "requires": { + "call-bind": "^1.0.7" + } + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -9467,9 +9667,12 @@ "dev": true }, "is-string": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", - "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-symbol": { "version": "1.0.3", @@ -9479,6 +9682,14 @@ "has-symbols": "^1.0.1" } }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "requires": { + "which-typed-array": "^1.1.14" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -9507,6 +9718,14 @@ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "requires": { + "call-bind": "^1.0.2" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -9536,6 +9755,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, "requires": { "buffer-alloc": "^1.2.0" } @@ -9947,12 +10167,103 @@ "graceful-fs": "^4.1.6" } }, + "jsonld": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-5.2.0.tgz", + "integrity": "sha512-JymgT6Xzk5CHEmHuEyvoTNviEPxv6ihLWSPu1gFdtjSAyM6cFqNrv02yS/SIur3BBIkCf0HjizRc24d8/FfQKw==", + "requires": { + "@digitalbazaar/http-client": "^1.1.0", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "jsonld-signatures": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jsonld-signatures/-/jsonld-signatures-7.0.0.tgz", + "integrity": "sha512-J/nA+llcYYjErPHG9WFpXvR82TOg5fbHk/7rXbx4Ts854DPReaKAAd0hAZ+s5/P2WIIAZPIHCqA+iz1QrOqeiQ==", + "requires": { + "base64url": "^3.0.1", + "crypto-ld": "^3.7.0", + "jsonld": "^4.0.1", + "node-forge": "^0.10.0", + "security-context": "^4.0.0", + "serialize-error": "^5.0.0" + }, + "dependencies": { + "jsonld": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-4.0.1.tgz", + "integrity": "sha512-ltEqMQB37ZxZnsgmI+9rqHYkz1M6PqUykuS1t2aQNuH1oiLrUDYz5nyVkHQDgjFd7CFKTIWeLiNhwdwFrH5o5A==", + "requires": { + "canonicalize": "^1.0.1", + "lru-cache": "^5.1.1", + "object.fromentries": "^2.0.2", + "rdf-canonize": "^2.0.1", + "request": "^2.88.0", + "semver": "^6.3.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "rdf-canonize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-2.0.1.tgz", + "integrity": "sha512-/GVELjrfW8G/wS4QfDZ5Kq68cS1belVNJqZlcwiErerexeBUsgOINCROnP7UumWIBNdeCwTVLE9NVXMnRYK0lA==", + "requires": { + "semver": "^6.3.0", + "setimmediate": "^1.0.5" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, "jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -9965,14 +10276,14 @@ } }, "jszip": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", - "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", "requires": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" + "setimmediate": "^1.0.5" } }, "just-debounce": { @@ -10201,6 +10512,31 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, + "ky": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.25.1.tgz", + "integrity": "sha512-PjpCEWlIU7VpiMVrTwssahkYXX1by6NCT0fhTUX34F3DTinARlgMpriuroolugFPcMgpPWrOW4mTb984Qm1RXA==" + }, + "ky-universal": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.8.2.tgz", + "integrity": "sha512-xe0JaOH9QeYxdyGLnzUOVGK4Z6FGvDVzcXFTdrYA1f33MZdEa45sUDaMBy98xQMcsd2XIBrTXRrRYnegcSdgVQ==", + "requires": { + "abort-controller": "^3.0.0", + "node-fetch": "3.0.0-beta.9" + }, + "dependencies": { + "node-fetch": { + "version": "3.0.0-beta.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.0.0-beta.9.tgz", + "integrity": "sha512-RdbZCEynH2tH46+tj0ua9caUHVWrd/RHnRfvly2EVdqGmI3ndS1Vn/xjm5KuGejDt2RNDQsVRLPNd2QPwcewVg==", + "requires": { + "data-uri-to-buffer": "^3.0.1", + "fetch-blob": "^2.1.1" + } + } + } + }, "last-run": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", @@ -10419,24 +10755,6 @@ "json5": "^2.1.2" } }, - "localforage": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", - "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", - "requires": { - "lie": "3.1.1" - }, - "dependencies": { - "lie": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", - "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", - "requires": { - "immediate": "~3.0.5" - } - } - } - }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", @@ -10447,11 +10765,6 @@ "path-exists": "^3.0.0" } }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" - }, "lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", @@ -10483,33 +10796,6 @@ "chalk": "^2.0.1" } }, - "log4js": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz", - "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==", - "requires": { - "circular-json": "^0.5.5", - "date-format": "^1.2.0", - "debug": "^3.1.0", - "rfdc": "^1.1.2", - "streamroller": "0.7.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, "loglevel": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", @@ -10535,6 +10821,7 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -10679,11 +10966,6 @@ "object-visit": "^1.0.0" } }, - "marks-pane": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/marks-pane/-/marks-pane-1.0.9.tgz", - "integrity": "sha512-Ahs4oeG90tbdPWwAJkAAoHg2lRR8lAs9mZXETNPO9hYg3AkjUJBKi1NQ4aaIQZVGrig7c/3NUV1jANl8rFTeMg==" - }, "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", @@ -10840,7 +11122,8 @@ "mime": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz", - "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==" + "integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==", + "dev": true }, "mime-db": { "version": "1.45.0", @@ -11597,6 +11880,25 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, "node-fetch-npm": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", @@ -11611,8 +11913,13 @@ "node-forge": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + }, + "node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "optional": true }, "node-libs-browser": { "version": "2.2.1", @@ -11877,9 +12184,9 @@ "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", "dev": true, "requires": { - "JSONStream": "^1.3.4", "bluebird": "^3.5.1", "figgy-pudding": "^3.4.1", + "JSONStream": "^1.3.4", "lru-cache": "^5.1.1", "make-fetch-happen": "^5.0.0", "npm-package-arg": "^6.1.0", @@ -11978,7 +12285,8 @@ "object-component": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -12009,9 +12317,9 @@ } }, "object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { "version": "1.1.5", @@ -12037,13 +12345,13 @@ } }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -12065,6 +12373,17 @@ } } }, + "object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, "object.getownpropertydescriptors": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", @@ -12109,83 +12428,6 @@ "call-bind": "^1.0.2", "define-properties": "^1.1.3", "es-abstract": "^1.18.2" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" - }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - } - }, - "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - } } }, "obuf": { @@ -12256,6 +12498,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" @@ -12264,7 +12507,8 @@ "minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true } } }, @@ -12741,6 +12985,7 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, "requires": { "better-assert": "~1.0.0" } @@ -12749,6 +12994,7 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, "requires": { "better-assert": "~1.0.0" } @@ -12826,11 +13072,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "path-webpack": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/path-webpack/-/path-webpack-0.0.3.tgz", - "integrity": "sha1-/23sdJ7sWpRgXATV9j/FVgegOhY=" - }, "pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -12891,11 +13132,6 @@ "find-up": "^3.0.0" } }, - "platform": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.3.tgz", - "integrity": "sha1-ZGx3ARiZhwtqCQPnXpl+jlHadGE=" - }, "plugin-error": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", @@ -12955,6 +13191,11 @@ "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" + }, "postcss": { "version": "7.0.27", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", @@ -13965,6 +14206,11 @@ "ipaddr.js": "1.9.1" } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -13974,7 +14220,8 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true }, "psl": { "version": "1.8.0", @@ -14056,15 +14303,13 @@ "qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==" + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", - "requires": { - "side-channel": "^1.0.4" - } + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" }, "query-string": { "version": "4.3.4", @@ -14178,6 +14423,14 @@ "strip-json-comments": "~2.0.1" } }, + "rdf-canonize": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", + "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + "requires": { + "setimmediate": "^1.0.5" + } + }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -14356,13 +14609,14 @@ } }, "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, "regexpu-core": { @@ -14522,7 +14776,8 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true }, "resolve": { "version": "1.19.0", @@ -14609,7 +14864,8 @@ "rfdc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.2.0.tgz", - "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==" + "integrity": "sha512-ijLyszTMmUrXvjSooucVQwimGUk84eRcmCuLV8Xghe3UO85mjUtRAHRyoMM6XtyqbECaXuBWx18La3523sXINA==", + "dev": true }, "rgb-regex": { "version": "1.0.1", @@ -14726,6 +14982,24 @@ "tslib": "^1.9.0" } }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -14747,6 +15021,16 @@ "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -14827,6 +15111,11 @@ "ajv-keywords": "^3.5.2" } }, + "security-context": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/security-context/-/security-context-4.0.0.tgz", + "integrity": "sha512-yiDCS7tpKQl6p4NG57BdKLTSNLFfj5HosBIzXBl4jZf/qorJzSzbEUIdLhN+vVYgyLlvjixY8DPPTgqI8zvNCA==" + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -14945,6 +15234,21 @@ } } }, + "serialize-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", + "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", + "requires": { + "type-fest": "^0.8.0" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + } + } + }, "serialize-javascript": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", @@ -15005,10 +15309,29 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } }, "set-value": { "version": "2.0.1", @@ -15034,8 +15357,7 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { "version": "1.1.1", @@ -15077,13 +15399,14 @@ "dev": true }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -15241,6 +15564,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, "requires": { "debug": "~3.1.0", "engine.io": "~3.2.0", @@ -15254,6 +15578,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -15263,12 +15588,14 @@ "socket.io-adapter": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "dev": true }, "socket.io-client": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, "requires": { "backo2": "1.0.2", "base64-arraybuffer": "0.1.5", @@ -15289,12 +15616,14 @@ "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -15305,6 +15634,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, "requires": { "component-emitter": "1.2.1", "debug": "~3.1.0", @@ -15314,12 +15644,14 @@ "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -15327,7 +15659,8 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true } } }, @@ -15413,6 +15746,15 @@ } } }, + "sodium-native": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.4.1.tgz", + "integrity": "sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -15759,38 +16101,27 @@ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, - "streamroller": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", - "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", - "requires": { - "date-format": "^1.2.0", - "debug": "^3.1.0", - "mkdirp": "^0.5.1", - "readable-stream": "^2.3.0" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - } - } - }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -15801,37 +16132,35 @@ "strip-ansi": "^3.0.0" } }, - "string.prototype.trimend": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", - "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" } }, - "string.prototype.trimstart": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", - "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "strip-ansi": { @@ -16335,6 +16664,7 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -16351,7 +16681,8 @@ "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true }, "to-arraybuffer": { "version": "1.0.1", @@ -16553,6 +16884,54 @@ "mime-types": "~2.1.24" } }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -16576,24 +16955,18 @@ "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - } } }, "unc-path-regex": { @@ -16945,6 +17318,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, "requires": { "lru-cache": "4.1.x", "tmp": "0.0.x" @@ -16982,92 +17356,6 @@ "es-abstract": "^1.17.2", "has-symbols": "^1.0.1", "object.getownpropertydescriptors": "^2.1.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", - "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.3", - "is-string": "^1.0.6", - "object-inspect": "^1.10.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - } - } - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" - }, - "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - } - } - }, - "object-inspect": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", - "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - } } }, "utils-merge": { @@ -17148,30 +17436,11 @@ "videojs-vtt.js": "^0.15.2" } }, - "videojs-contrib-quality-levels": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-2.1.0.tgz", - "integrity": "sha512-dqGQGbL9AFhucxki7Zh0c3kIhH0PAPcHEh6jUdRyaFCVeOuqnJrOYs/3wNtsokDdBdRf2Du2annpu4Z2XaSZRg==", - "requires": { - "global": "^4.3.2", - "video.js": "^6 || ^7" - } - }, "videojs-font": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz", "integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==" }, - "videojs-http-source-selector": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/videojs-http-source-selector/-/videojs-http-source-selector-1.1.6.tgz", - "integrity": "sha512-6b5MmKTT2cVnrjtdNj4z1VO91udbXkZkTYA6LlD8WN2aHlG2rqFTmtMab4NK4nlkkkbRnm3c2q2IddL3jffLmg==", - "requires": { - "global": "^4.3.2", - "video.js": "^7.0.0", - "videojs-contrib-quality-levels": "^2.0.4" - } - }, "videojs-vtt.js": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.2.tgz", @@ -17250,7 +17519,8 @@ "void-elements": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=" + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true }, "watchpack": { "version": "1.7.5", @@ -17765,9 +18035,9 @@ "dev": true }, "whatwg-fetch": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + "version": "3.6.19", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" }, "whatwg-url": { "version": "2.0.1", @@ -17810,6 +18080,18 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, "wicked-good-xpath": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", @@ -17880,7 +18162,8 @@ "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true }, "worker-farm": { "version": "1.7.0", @@ -17988,6 +18271,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, "requires": { "async-limiter": "~1.0.0", "safe-buffer": "~5.1.0", @@ -17997,7 +18281,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -18041,7 +18326,8 @@ "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", - "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true }, "xtend": { "version": "4.0.2", @@ -18066,7 +18352,8 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true }, "yargs": { "version": "13.3.2", @@ -18133,7 +18420,8 @@ "yeast": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true }, "yn": { "version": "2.0.0", diff --git a/package.json b/package.json index 44dd51b77..15e918d2a 100644 --- a/package.json +++ b/package.json @@ -23,21 +23,17 @@ "@angular/platform-browser-dynamic": "~9.1.13", "@angular/router": "~9.1.13", "@project-sunbird/ckeditor-build-classic": "^4.1.3", - "@project-sunbird/client-services": "4.2.3", + "@project-sunbird/client-services": "7.0.5", "@project-sunbird/sb-styles": "0.0.7", - "@project-sunbird/sunbird-epub-player-v9": "4.5.5", - "@project-sunbird/sunbird-pdf-player-v9": "4.2.0", - "@project-sunbird/sunbird-quml-player-v9": "4.8.11", - "@project-sunbird/sunbird-resource-library": "0.0.14", + "@project-sunbird/sunbird-pdf-player-v9": "4.1.1", + "@project-sunbird/sunbird-quml-player-v9": "4.4.16", "@project-sunbird/sunbird-video-player-v9": "4.4.2", - "@project-sunbird/telemetry-sdk": "0.0.26", + "@project-sunbird/telemetry-sdk": "1.1.0", "@types/jquery": "^3.5.5", "alphanum-sort": "^1.0.2", "angular2-uuid": "^1.1.1", - "common-form-elements-web-v9": "4.7.2", + "common-form-elements-web-v9": "4.4.6", "core-js": "^2.5.4", - "epubjs": "0.3.88", - "export-to-csv": "^0.2.1", "express": "^4.17.1", "express-http-proxy": "^1.6.2", "fine-uploader": "^5.15.7", @@ -61,8 +57,6 @@ "svg2img": "^0.6.1", "tslib": "^1.10.0", "video.js": "^7.10.2", - "videojs-contrib-quality-levels": "^2.1.0", - "videojs-http-source-selector": "^1.1.6", "zone.js": "~0.10.2" }, "devDependencies": { diff --git a/projects/collection-editor-library/package.json b/projects/collection-editor-library/package.json index bf8cea1e8..b0ed1f75a 100644 --- a/projects/collection-editor-library/package.json +++ b/projects/collection-editor-library/package.json @@ -1,10 +1,10 @@ { "name": "@project-sunbird/sunbird-collection-editor-v9", - "version": "4.8.24", + "version": "4.5.1", "peerDependencies": { "@angular/common": "~9.1.13", "@angular/core": "~9.1.13", - "common-form-elements-web-v9": "4.7.2", + "common-form-elements-web-v9": "4.4.6", "@project-sunbird/ckeditor-build-classic": "4.1.3", "ng2-semantic-ui-v9": "0.0.3" } diff --git a/projects/collection-editor-library/src/lib/collection-editor-library.module.ts b/projects/collection-editor-library/src/lib/collection-editor-library.module.ts index 8f31fb4e1..021fe8d7d 100644 --- a/projects/collection-editor-library/src/lib/collection-editor-library.module.ts +++ b/projects/collection-editor-library/src/lib/collection-editor-library.module.ts @@ -6,8 +6,6 @@ import { CommonFormElementsModule, DialcodeCursor } from 'common-form-elements-w import { SuiModule } from 'ng2-semantic-ui-v9'; import { InfiniteScrollModule } from 'ngx-infinite-scroll'; import { HttpClientModule } from '@angular/common/http'; -import { SanitizeHtmlPipe } from './pipes/sanitize-html.pipe'; -import { InterpolatePipe } from './pipes/interpolate.pipe'; import { CollectionEditorLibraryComponent } from './collection-editor-library.component'; import { ContentplayerPageComponent } from './components/contentplayer-page/contentplayer-page.component'; import { EditorComponent } from './components/editor/editor.component'; @@ -27,12 +25,10 @@ import { AnswerComponent } from './components/answer/answer.component'; import { CkeditorToolComponent } from './components/ckeditor-tool/ckeditor-tool.component'; import { QuestionComponent } from './components/question/question.component'; import {SunbirdPdfPlayerModule} from '@project-sunbird/sunbird-pdf-player-v9'; -import { SunbirdEpubPlayerModule } from '@project-sunbird/sunbird-epub-player-v9'; import { SunbirdVideoPlayerModule } from '@project-sunbird/sunbird-video-player-v9'; import { QumlLibraryModule } from '@project-sunbird/sunbird-quml-player-v9'; import {CarouselModule} from 'ngx-bootstrap/carousel'; import { TelemetryInteractDirective } from './directives/telemetry-interact/telemetry-interact.directive'; -import { DateFormatPipe } from './directives/date-format/date-format.pipe'; import { AssetBrowserComponent } from './components/asset-browser/asset-browser.component'; import { CollectionIconComponent } from './components/collection-icon/collection-icon.component'; import { CacheService } from 'ng2-cache-service'; @@ -41,28 +37,19 @@ import { CacheSessionStorage } from 'ng2-cache-service/dist/src/services/storage import { QumlPlayerComponent } from './components/quml-player/quml-player.component'; import { DialcodeComponent } from './components/dialcode/dialcode.component'; import { DialcodeService } from './services/dialcode/dialcode.service'; -import { QuestionOptionSubMenuComponent } from './components/question-option-sub-menu/question-option-sub-menu.component'; import { CsvUploadComponent } from './components/csv-upload/csv-upload.component'; import { ManageCollaboratorComponent } from './components/manage-collaborator/manage-collaborator.component'; -import { SliderComponent } from './components/slider/slider.component'; -import { TranslationsComponent } from './components/translations/translations.component'; import { PublishChecklistComponent } from './components/publish-checklist/publish-checklist.component'; -import { BulkUploadComponent } from './components/bulk-upload/bulk-upload.component'; -import { RelationalMetadataComponent } from './components/relational-metadata/relational-metadata.component'; -import { ResourceLibraryModule } from '@project-sunbird/sunbird-resource-library'; -import { AppLoaderComponent } from './components/app-loader/app-loader.component'; @NgModule({ - declarations: [CollectionEditorLibraryComponent, InterpolatePipe, SanitizeHtmlPipe, ContentplayerPageComponent, - EditorComponent, QumlplayerPageComponent, HeaderComponent, FancyTreeComponent, MetaFormComponent, LibraryComponent, - LibraryFilterComponent, LibraryListComponent, QuestionComponent, OptionsComponent, AnswerComponent, CkeditorToolComponent, - LibraryPlayerComponent, ResourceReorderComponent, SkeletonLoaderComponent, TemplateComponent, DateFormatPipe, - TelemetryInteractDirective, AssetBrowserComponent, CollectionIconComponent, - QumlPlayerComponent, DialcodeComponent, BulkUploadComponent, CsvUploadComponent, ManageCollaboratorComponent, - PublishChecklistComponent, QuestionOptionSubMenuComponent, SliderComponent, TranslationsComponent,AppLoaderComponent, - RelationalMetadataComponent], + declarations: [CollectionEditorLibraryComponent, ContentplayerPageComponent, EditorComponent, QumlplayerPageComponent, + HeaderComponent, FancyTreeComponent, MetaFormComponent, LibraryComponent, LibraryFilterComponent, LibraryListComponent, + QuestionComponent, OptionsComponent, AnswerComponent, CkeditorToolComponent, + LibraryPlayerComponent, ResourceReorderComponent, SkeletonLoaderComponent, TemplateComponent, TelemetryInteractDirective, + AssetBrowserComponent, CollectionIconComponent, + QumlPlayerComponent, DialcodeComponent, CsvUploadComponent, ManageCollaboratorComponent, PublishChecklistComponent,], imports: [CommonModule, FormsModule, ReactiveFormsModule, RouterModule.forChild([]), SuiModule, CommonFormElementsModule, InfiniteScrollModule, HttpClientModule, SunbirdPdfPlayerModule, SunbirdVideoPlayerModule, - QumlLibraryModule, CarouselModule, SunbirdEpubPlayerModule, ResourceLibraryModule], + QumlLibraryModule, CarouselModule], providers: [ CacheService, { provide: CacheStorageAbstract, useClass: CacheSessionStorage }, diff --git a/projects/collection-editor-library/src/lib/components/answer/answer.component.html b/projects/collection-editor-library/src/lib/components/answer/answer.component.html index dc764cfbf..b895aaaac 100644 --- a/projects/collection-editor-library/src/lib/components/answer/answer.component.html +++ b/projects/collection-editor-library/src/lib/components/answer/answer.component.html @@ -1,15 +1,9 @@
-
- + - - -
-

-
-
diff --git a/projects/collection-editor-library/src/lib/components/answer/answer.component.ts b/projects/collection-editor-library/src/lib/components/answer/answer.component.ts index 057d7d4c6..9ec9caef8 100644 --- a/projects/collection-editor-library/src/lib/components/answer/answer.component.ts +++ b/projects/collection-editor-library/src/lib/components/answer/answer.component.ts @@ -8,7 +8,6 @@ import { ConfigService } from '../../services/config/config.service'; export class AnswerComponent implements OnInit { @Input() editorState; @Input() showFormError; - @Input() isReadOnlyMode; @Output() editorDataOutput: EventEmitter = new EventEmitter(); constructor(public configService: ConfigService) { } diff --git a/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.html b/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.html deleted file mode 100644 index d62275bb3..000000000 --- a/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.html +++ /dev/null @@ -1,9 +0,0 @@ -
- -
-
- {{headerMessage}} -
-

{{loaderMessage}}

-
-
\ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.spec.ts b/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.spec.ts deleted file mode 100644 index dede2f20d..000000000 --- a/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.spec.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; -import { AppLoaderComponent } from './app-loader.component'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { ConfigService } from '../../services/config/config.service'; - - - -describe('AppLoaderComponent', () => { - let component: AppLoaderComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], - declarations: [ AppLoaderComponent ], - providers: [ConfigService] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(AppLoaderComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.ts b/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.ts deleted file mode 100644 index 664092e43..000000000 --- a/projects/collection-editor-library/src/lib/components/app-loader/app-loader.component.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Input } from '@angular/core'; -import {ILoaderMessage} from '../../interfaces/loader'; -import { ConfigService } from '../../services/config/config.service'; -import * as _ from 'lodash-es'; - -/** - * loader component - */ -@Component({ - selector: 'app-loader', - templateUrl: './app-loader.component.html' -}) -export class AppLoaderComponent implements OnInit { - @Input() data: ILoaderMessage; - headerMessage: string; - loaderMessage: string; - - constructor(public configService: ConfigService) { - this.headerMessage = _.get(this.configService, 'labelConfig.lbl.loaderHeading'); - this.loaderMessage = _.get(this.configService, 'labelConfig.lbl.loaderMessage'); - } - - ngOnInit() { - if (this.data) { - this.headerMessage = this.data.headerMessage || this.headerMessage; - this.loaderMessage = this.data.loaderMessage || this.loaderMessage; - } - } -} diff --git a/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.html b/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.html index 3efb03200..26cc0d3e6 100644 --- a/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.html +++ b/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.html @@ -59,7 +59,7 @@
-
{{configService.labelConfig?.lbl?.uploadAndUse}}
@@ -111,11 +111,10 @@
{{configService.labelConfig?.lbl?.copyRightsAndLicense}}
-
diff --git a/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.spec.ts b/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.spec.ts index f5f0c1b97..bb7465430 100644 --- a/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.spec.ts +++ b/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.spec.ts @@ -7,7 +7,7 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { mockData } from './asset-browser.component.spec.data'; import { FormsModule } from '@angular/forms'; import { EditorService } from '../../services/editor/editor.service'; -import { of, throwError } from 'rxjs'; +import { of } from 'rxjs'; import * as _ from 'lodash-es'; const mockEditorService = { @@ -137,49 +137,21 @@ describe('AssetBrowserComponent', () => { node_id: 'do_123' } })); - spyOn(questionService, 'generatePreSignedUrl').and.returnValue(of({ - result: { - node_id: 'do_234', - pre_signed_url: '/test' - } - })); - spyOn(component, 'addImageInEditor').and.callThrough(); - spyOn(component, 'dismissPops').and.callThrough(); - component.uploadAndUseImage(modal); - expect(questionService.createMediaAsset).toHaveBeenCalled(); - expect(component.loading).toEqual(true); - expect(component.isClosable).toEqual(false); - expect(component.imageFormValid).toEqual(false); - }); - it('#uploadAndUseImage should upload image and call upload to blob', async () => { - component.showImageUploadModal = false; - let questionService: QuestionService = TestBed.inject(QuestionService); - let modal = true; - spyOn(questionService, 'createMediaAsset').and.returnValue(of({ - result: { - node_id: 'do_123' - } - })); - spyOn(questionService, 'generatePreSignedUrl').and.returnValue(of({ - result: { - node_id: 'do_234', - pre_signed_url: '/test' - } - })); - spyOn(component, 'uploadToBlob').and.returnValue(of(true)); spyOn(questionService, 'uploadMedia').and.returnValue(of({ result: { node_id: 'do_234', content_url: '/test' } })); - spyOn(component, 'addImageInEditor').and.callThrough(); - spyOn(component, 'dismissPops').and.callThrough(); + spyOn(component, 'addImageInEditor'); + spyOn(component, 'dismissPops'); component.uploadAndUseImage(modal); expect(questionService.createMediaAsset).toHaveBeenCalled(); - expect(questionService.generatePreSignedUrl).toHaveBeenCalled(); - expect(component.uploadToBlob).toHaveBeenCalled(); - }); + expect(questionService.uploadMedia).toHaveBeenCalled(); + expect(component.addImageInEditor).toHaveBeenCalledWith('/test', 'do_234'); + expect(component.showImageUploadModal).toEqual(false); + expect(component.dismissPops).toHaveBeenCalledWith(modal); + }) it('#generateAssetCreateRequest() should return asset create request', () => { let fileName = 'test'; let fileType = 'image/png'; diff --git a/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.ts b/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.ts index e974fa84c..851603cd5 100644 --- a/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.ts +++ b/projects/collection-editor-library/src/lib/components/asset-browser/asset-browser.component.ts @@ -46,7 +46,6 @@ export class AssetBrowserComponent implements OnInit, OnDestroy { public termsAndCondition: any; public assetName: any; public emptySearchMessage: any; - public imageFile: any; ngOnInit() { this.initialFormConfig = _.get(config, 'uploadIconFormConfig'); this.formConfig = _.get(config, 'uploadIconFormConfig'); @@ -154,7 +153,6 @@ export class AssetBrowserComponent implements OnInit, OnDestroy { this.getAllImages(offset, this.query, true); } uploadImage(event) { - this.imageFile = event.target.files[0]; const file = event.target.files[0]; const reader = new FileReader(); this.formData = new FormData(); @@ -201,67 +199,22 @@ export class AssetBrowserComponent implements OnInit, OnDestroy { this.formConfig = formvalue; } uploadAndUseImage(modal) { - this.isClosable = false; - this.loading = true; - this.showErrorMsg = false; - this.imageFormValid = false; - this.questionService.createMediaAsset({ asset: this.assestData }).pipe(catchError(err => { + this.questionService.createMediaAsset({ content: this.assestData }).pipe(catchError(err => { const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') }; - this.loading = false; - this.isClosable = true; - this.imageFormValid = true; return throwError(this.editorService.apiErrorHandling(err, errInfo)); })).subscribe((res) => { const imgId = res.result.node_id; - const preSignedRequest = { - content: { - fileName: this.assetName - } + const request = { + data: this.formData }; - this.questionService.generatePreSignedUrl(preSignedRequest, imgId).pipe(catchError(err => { - const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.026') }; - this.loading = false; - this.isClosable = true; - this.imageFormValid = true; + this.questionService.uploadMedia(request, imgId).pipe(catchError(err => { + const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') }; return throwError(this.editorService.apiErrorHandling(err, errInfo)); })).subscribe((response) => { - const signedURL = response.result.pre_signed_url; - const blobConfig = { - processData: false, - contentType: 'Asset', - headers: { - 'x-ms-blob-type': 'BlockBlob' - } - }; - this.uploadToBlob(signedURL, this.imageFile, blobConfig).subscribe(() => { - const fileURL = signedURL.split('?')[0]; - const data = new FormData(); - data.append('fileUrl', fileURL); - data.append('mimeType', _.get(this.imageFile, 'type')); - const config1 = { - enctype: 'multipart/form-data', - processData: false, - contentType: false, - cache: false - }; - const uploadMediaConfig = { - data, - param: config1 - }; - this.questionService.uploadMedia(uploadMediaConfig, imgId).pipe(catchError(err => { - const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') }; - this.isClosable = true; - this.loading = false; - this.imageFormValid = true; - return throwError(this.editorService.apiErrorHandling(err, errInfo)); - })).subscribe((response1) => { - this.addImageInEditor(response1.result.content_url, response1.result.node_id); - this.showImageUploadModal = false; - this.dismissPops(modal); - }); - }); + this.addImageInEditor(response.result.content_url, response.result.node_id); + this.showImageUploadModal = false; + this.dismissPops(modal); }); - }); } generateAssetCreateRequest(fileName, fileType, mediaType) { @@ -286,10 +239,8 @@ export class AssetBrowserComponent implements OnInit, OnDestroy { dismissImageUploadModal() { - if (this.isClosable) { this.showImagePicker = true; this.showImageUploadModal = false; - } } openImageUploadModal() { this.showImageUploadModal = true; @@ -298,14 +249,10 @@ export class AssetBrowserComponent implements OnInit, OnDestroy { this.imageUploadLoader = false; this.imageFormValid = false; this.showErrorMsg = false; - this.loading = false; - this.isClosable = true; } dismissPops(modal) { this.dismissImagePicker(); - if (modal && modal.deny) { - modal.deny(); - } + modal.deny(); } dismissImagePicker() { this.showImagePicker = false; diff --git a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.html b/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.html deleted file mode 100644 index b1c36f8a9..000000000 --- a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.html +++ /dev/null @@ -1,210 +0,0 @@ -
- -
-
-
{{configService.labelConfig?.lbl?.lastUploaded}} : {{ process?.updatedon | dateFormat: 'D MMMM YYYY' }}
-
- - {{configService.labelConfig?.lbl?.bulkInProgress}} -
- {{configService.labelConfig?.lbl?.viewDetails}} -
-
- - - -
- {{configService.labelConfig?.lbl?.bulkUploadQuestion}} -
-
-
-
- -
- - -
- -
- - - - {{completionPercentage}}% - -
-
- -
-
{{configService.labelConfig?.lbl?.downloadSampleMetadataCsvFileAndCreate}}
-
{{configService.labelConfig?.lbl?.makeSureYourFile}} :
-
    -
  • {{configService.labelConfig?.lbl?.allColumnsAreAvailableShownFormat}}
  • -
  • {{configService.labelConfig?.lbl?.hasAllMandatoryColumnsFilledAsMarkedInFormat}}
  • -
  • {{configService.labelConfig?.lbl?.hasNoDuplicateUrlsFilepathColumn}}
  • -
- -
- -
-
-
-
- -
- - {{configService.labelConfig?.lbl?.processingDroppedFiles}} - - -
    -
  • -
    -
    -
    - - - - - - - -
  • -
-
-
- {{configService.labelConfig?.lbl?.dragAndDrop}}
- {{configService.labelConfig?.lbl?.or}} -
-
-
{{configService.labelConfig?.lbl?.selectFile}}
-
-

{{configService.labelConfig?.lbl?.uploadCSVXlEntries}}

-
- -
-
- - -
-
- -
- -
- - -
-
-
-
-
-
-
-
-
- -
-
-
- -
-
-
- - -
{{configService.labelConfig?.lbl?.validatingCSVFile}}
-
-
-
-
- -
-
- {{configService.labelConfig?.lbl?.metadataFileValidationFailed}} -
-
{{configService.labelConfig?.lbl?.metadataFollowingError}}
-
    -
  • {{msg}}
  • -
- -
- -
-
{{configService.labelConfig?.lbl?.uploadingYourContentFromCSV}}
-
-
-
{{configService.labelConfig?.lbl?.uploadFail}} : {{ process?.overall_stats?.upload_failed }}
-
{{configService.labelConfig?.lbl?.uploadSuccessful}} : {{ process?.overall_stats?.upload_success}}
-
{{configService.labelConfig?.lbl?.uploadRemaining}} : {{ process?.overall_stats?.upload_pending }}
-
-
-
- -
-
{{configService.labelConfig?.lbl?.bulkUploadComplete}}
-
-
-
{{configService.labelConfig?.lbl?.uploadFail}} : {{ process?.overall_stats?.upload_failed }}
-
{{configService.labelConfig?.lbl?.contentUploaded}} : {{ process?.overall_stats?.total }}
-
{{configService.labelConfig?.lbl?.uploadSuccessful}} : {{ process?.overall_stats?.upload_success }}
-
-
- -
-
-
-
- - - -
-
- {{configService.labelConfig?.lbl?.bulkUploadNoticeLine1}} - '{{configService.labelConfig?.lbl?.close}}' - {{configService.labelConfig?.lbl?.bulkUploadNoticeLine2}}
- {{configService.labelConfig?.lbl?.bulkUploadNoticeLine3}} -
-
-
-
\ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.scss b/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.scss deleted file mode 100644 index 8e10e6342..000000000 --- a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.scss +++ /dev/null @@ -1,40 +0,0 @@ -.qq-uploader.qq-uploader-selector.custom-qq-uploader { - background: inherit; - border-color: none; - max-height: inherit; - min-height: inherit; - overflow-y: inherit; - width: inherit; - height: 240px; - display: flex; - justify-content: center; - align-items: center; -} - -.sb-bk-upload h6 { - line-height: 22px; -} - -@media screen and (min-width: 768px) { - .sb-bk-upload .my--20 { - margin: -1.25rem 0 !important; - } -} - -.sb-bk-upload .sb-circle-download-icon { - background: var(--secondary-100); - display: inline-block; - width: 1.8rem; - height: 1.8rem; - line-height: 1.8rem; - color: var(--white); - border-radius: 100%; - text-align: center; - font-size: 0.8rem; -} - -.sb-loader-with-lbl{ - .sb-loader{ - position: relative !important; - } -} diff --git a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.spec.ts b/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.spec.ts deleted file mode 100644 index 2f8da62a6..000000000 --- a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { BulkUploadComponent } from './bulk-upload.component'; -import { ToasterService } from '../../services/toaster/toaster.service'; -import { EditorService } from '../../services/editor/editor.service'; -import { ConfigService } from '../../services/config/config.service'; -import { BulkJobService } from '../../services/bulk-job/bulk-job.service'; -import { TreeService } from '../../services/tree/tree.service'; -import { EditorTelemetryService } from '../../services/telemetry/telemetry.service'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -describe('BulkUploadComponent', () => { - let component: BulkUploadComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ BulkUploadComponent ], - imports: [HttpClientTestingModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA], - providers: [ToasterService, EditorService, ConfigService, - BulkJobService, TreeService, EditorTelemetryService] - }) - .compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(BulkUploadComponent); - component = fixture.componentInstance; - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - it('should call closeBulkUploadModal', () => { - component.closeBulkUploadModal(); - expect(component.showBulkUploadModal).toBeFalsy(); - expect(component.bulkUploadState).toBe(0); - }); - it('should call downloadSampleCSVFile', () => { - spyOn(window, 'open').and.callThrough(); - component.sampleMetadataCsvUrl = 'https://dockstorage.blob.core.windows.net/content-service/bulk-question-upload-sample-format.csv'; - const downloadConfig = { - blobUrl: component.sampleMetadataCsvUrl, - successMessage: false, - fileType: 'csv', - fileName: 'do_11339645670870220811360' - }; - component.downloadSampleCSVFile(); - expect(window.open).toHaveBeenCalledWith(downloadConfig.blobUrl, '_blank'); - }); - xit('should call updateBulkUploadState for state 6', () => { - component.bulkUploadState = 6; - spyOn(component, 'closeBulkUploadModal').and.callThrough(); - component.updateBulkUploadState('increment'); - expect(component.closeBulkUploadModal).toHaveBeenCalled(); - }); - xit('should call updateBulkUploadState for state other than 4', () => { - component.bulkUploadState = 1; - spyOn(component, 'initiateDocumentUploadModal').and.callThrough(); - component.updateBulkUploadState('increment'); - expect(component.initiateDocumentUploadModal).toHaveBeenCalled(); - }); -}); diff --git a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.ts b/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.ts deleted file mode 100644 index 80dea3345..000000000 --- a/projects/collection-editor-library/src/lib/components/bulk-upload/bulk-upload.component.ts +++ /dev/null @@ -1,468 +0,0 @@ -import { Component, OnInit, ViewChild, ElementRef, Output, EventEmitter } from '@angular/core'; -import { FineUploader } from 'fine-uploader'; -import * as _ from 'lodash-es'; -import { throwError } from 'rxjs'; -import { catchError, map, mergeMap } from 'rxjs/operators'; -import { ToasterService } from '../../services/toaster/toaster.service'; -import { EditorService } from '../../services/editor/editor.service'; -import { ConfigService } from '../../services/config/config.service'; -import { BulkJobService } from '../../services/bulk-job/bulk-job.service'; -import { TreeService } from '../../services/tree/tree.service'; -import { EditorTelemetryService } from '../../services/telemetry/telemetry.service'; - -@Component({ - selector: 'lib-bulk-upload', - templateUrl: './bulk-upload.component.html', - styleUrls: ['./bulk-upload.component.scss'] -}) -export class BulkUploadComponent implements OnInit { - public collectionId: string; - @ViewChild('fineUploaderUI') fineUploaderUI: ElementRef; - @Output() bulkUploadEmitter = new EventEmitter(); - public storedCollectionData; - public process: any = { - process_id: '', - status: '', - type: 'bulk_upload', - overall_stats: { - total: 0, - upload_failed: 0, - upload_pending: 0, - upload_success: 0 - } - }; - public oldProcessStatus = ''; - public stageStatus = ''; - public contents: Array = []; - public completionPercentage = 0; - public showBulkUploadModal = false; - public bulkUploadState = 0; - public loading = false; - public telemetryPageId: string; - public assetConfig: any = { - csv: { - accepted: 'csv', - size: 50 - } - }; - uploader; - public bulkUploadErrorMsgs = []; - public bulkUploadValidationError = ''; - public sampleMetadataCsvUrl = ''; - constructor( - private toasterService: ToasterService, private editorService: EditorService, public configService: ConfigService, - private bulkJobService: BulkJobService, private treeService: TreeService, public telemetryService: EditorTelemetryService) { } - - ngOnInit() { - this.collectionId = _.get(this.editorService.editorConfig, 'context.identifier'); - // tslint:disable-next-line:max-line-length - this.sampleMetadataCsvUrl = _.get(this.editorService, 'editorConfig.config.publicStorageAccount') + _.get(this.configService.urlConFig, 'URLS.BULKJOB.SAMPLE_QUESTION_FILE'); - this.checkBulkUploadStatus(); - this.stageStatus = this.getContentStatus(); - } - - calculateCompletionPercentage() { - this.completionPercentage = 0; - console.log('process.overall_stats', this.process.overall_stats); - const { total, upload_pending } = this.process.overall_stats; - - // tslint:disable-next-line:radix - this.completionPercentage = parseInt(_.toNumber(100 - ((upload_pending / total) * 100))); - console.log('completionPercentage', this.completionPercentage); - } - - checkBulkUploadStatus() { - const reqData = { - filters: { - program_id: _.get(this.editorService.editorConfig, 'context.programId', ''), - collection_id: this.collectionId, - type: 'bulk_upload', - createdby: _.get(this.editorService.editorConfig, 'context.user.id') - }, - limit: 1 - }; - this.bulkJobService.getBulkOperationStatus(reqData) - .subscribe((statusResponse) => { - const count = _.get(statusResponse, 'result.count', 0); - if (!count) { - return; - } - - this.process = _.first(_.get(statusResponse, 'result.process', [])); - this.oldProcessStatus = this.process.status; - this.searchContentWithProcessId(); - this.bulkUploadState = 5; - }, (error) => { - console.log(error); - }); - } - - searchContentWithProcessId() { - this.bulkJobService.searchContentWithProcessId(this.process.process_id).subscribe((searchResponse) => { - this.process.overall_stats.upload_failed = 0; - this.process.overall_stats.upload_success = 0; - this.process.overall_stats.upload_pending = 0; - - if (_.get(searchResponse, 'result.count', 0) > 0) { - this.contents = _.compact(_.get(searchResponse.result, 'Question')); - let status = this.stageStatus; - if (status === 'draft') { - status = 'Draft'; - } - _.each(this.contents, (content) => { - if (content.status === 'Retired') { - this.process.overall_stats.upload_failed++; - } else if (content.status === status) { - this.process.overall_stats.upload_success++; - } else { - this.process.overall_stats.upload_pending++; - } - }); - - this.process.overall_stats.upload_pending = this.process.overall_stats.total - - (this.process.overall_stats.upload_success + this.process.overall_stats.upload_failed); - - if (this.process.overall_stats.upload_pending === 0) { - this.process.status = 'completed'; - } - this.editorService.fetchCollectionHierarchy(this.collectionId).subscribe((response) => { - this.storedCollectionData = response.result.questionSet; - this.calculateCompletionPercentage(); - if (this.oldProcessStatus !== this.process.status) { - this.updateJob(); - } - - }); - if (this.process.status === 'completed') { - this.editorService.nextBulkUploadStatus('completed'); - } else { - this.editorService.nextBulkUploadStatus('processing'); - } - this.bulkUploadEmitter.emit({ status: true, type: 'updateHierarchy' }); - } - }, (error) => { - console.log(error); - }); - } - - downloadReport() { - const headers = ['Name of the Question', 'Level 1 Question Set Section', 'Keywords', 'Audience', - 'Author', 'Copyright', 'License', 'Attributions', 'Identifier of the question ']; - try { - headers.push('Status'); - headers.push('Reason for failure'); - - const tableData = _.map(this.contents, (content, i) => { - const result: any = {}; - result.name = _.get(content, 'name', ''); - result.level1 = ''; - result.keywords = _.join(_.get(content, 'keywords', []), ', '); - result.audience = _.join(_.get(content, 'audience', []), ', '); - result.creator = _.get(content, 'author', ''); - result.copyright = _.get(content, 'copyright', ''); - result.license = _.get(content, 'license', ''); - result.attributions = _.join(_.get(content, 'attributions', []), ', '); - result.identifier = _.get(content, 'identifier', ''); - const selctedUnitParents: any = this.getParents(this.storedCollectionData.children, content.identifier); - if (selctedUnitParents.found && !_.isEmpty(selctedUnitParents.parents)) { - result.level1 = selctedUnitParents.parents; - } - - let status = _.get(content, 'status', ''); - if ((this.stageStatus === 'draft' && status === 'Draft')) { - status = 'Success'; - } else if (status === 'Retired') { - status = 'Failure'; - } - - result.status = status; - result.failedReason = _.get(content, 'questionUploadStatus', ''); - return result; - }); - - const csvDownloadConfig = { - filename: `Bulk Upload ${this.questionSetMetadata.name.trim()}`, - tableData, - headers, - showTitle: false - }; - this.editorService.generateCSV(csvDownloadConfig); - } catch (err) { - console.log(err); - this.toasterService.error(_.get(this.configService.labelConfig, 'messages.error.001')); - } - } - - updateJob() { - const reqData = { - process_id: this.process.process_id, - overall_stats: this.process.overall_stats, - status: this.process.status, - updatedby: _.get(this.editorService.editorConfig, 'context.user.id') - }; - this.bulkJobService.updateBulkJob(reqData) - .subscribe((updateResponse) => { - if (this.process.status === 'completed') { - this.bulkUploadState = 6; - } else if (this.process.status === 'processing') { - this.bulkUploadState = 5; - } - this.oldProcessStatus = this.process.status; - }, (error) => { - console.log(error); - }); - } - - initiateDocumentUploadModal() { - this.loading = false; - this.bulkUploadValidationError = ''; - this.bulkUploadErrorMsgs = []; - return setTimeout(() => { - this.initiateUploadModal(); - }, 0); - } - - initiateUploadModal() { - this.uploader = new FineUploader({ - element: document.getElementById('upload-document-div'), - template: 'qq-template-validation', - multiple: false, - autoUpload: false, - request: { - endpoint: '/assets/uploads' - }, - validation: { - allowedExtensions: [this.assetConfig.csv.accepted], - acceptFiles: ['text/csv'], - itemLimit: 1, - sizeLimit: _.toNumber(this.assetConfig.csv.size) * 1024 * 1024 // Convert into MB - }, - messages: { - sizeError: `{file} is too large, maximum file size is ${this.assetConfig.csv.size} MB.`, - typeError: `Invalid content type (supported type: ${this.assetConfig.csv.accepted})` - }, - callbacks: { - onStatusChange: () => { }, - onSubmit: () => { - this.uploadContent(); - }, - onError: () => { - this.uploader.reset(); - } - } - }); - this.fineUploaderUI.nativeElement.remove(); - } - - uploadContent() { - const file = this.uploader.getFile(0); - const filename = this.uploader.getName(0); - if (file == null) { - this.toasterService.error('File is required to upload'); - this.uploader.reset(); - return; - } - this.bulkUploadState = 3; - this.startBulkUpload(file, filename); - } - - startBulkUpload(file, filename) { - this.generatePreSignedUrl(filename).pipe( - map(response => { - return _.get(response.result, 'pre_signed_url'); - }), mergeMap(signedURL => { - return this.uploadToBlob(signedURL, file); - }), mergeMap(signedURL => this.createImportRequest(signedURL).pipe( - map(importResponse => { - this.process.process_id = _.get(importResponse, 'result.processId'); - return _.get(importResponse, 'result.count'); - }))), mergeMap(totalQuestion => this.createJobRequest(totalQuestion) - )).subscribe((jobResponse) => { - this.process = _.get(jobResponse, 'result'); - this.oldProcessStatus = this.process.status; - this.calculateCompletionPercentage(); - this.editorService.nextBulkUploadStatus('processing'); - this.bulkUploadEmitter.emit({ status: true, type: 'updateHierarchy' }); - console.log('response ::', jobResponse); - }); - } - - generatePreSignedUrl(filename) { - const request = { - content: { - fileName: filename - } - }; - return this.editorService.generatePreSignedUrl(request, this.collectionId, 'hierarchy').pipe(catchError(err => { - const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.035') }; - this.uploader.reset(); - this.updateBulkUploadState('decrement'); - return throwError(this.editorService.apiErrorHandling(err, errInfo)); - })); - } - - uploadToBlob(signedURL, file) { - const config = { - processData: false, - contentType: 'text/csv', - headers: { - 'x-ms-blob-type': 'BlockBlob' - } - }; - return this.editorService.httpClient.put(signedURL, file, config).pipe(catchError(err => { - const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.036')}; - this.uploader.reset(); - this.updateBulkUploadState('decrement'); - return throwError(this.editorService.apiErrorHandling(err, errInfo)); - }), map(data => signedURL.split('?')[0])); - } - - createImportRequest(fileUrl) { - let reqBody = { - fileUrl, - questionType: 'MCQ', - createdBy: _.get(this.editorService.editorConfig, 'context.user.id'), - author: _.get(this.editorService.editorConfig, 'context.user.fullName', ''), - status: 'Draft', - questionSetId: this.collectionId - }; - const headers = { 'X-Channel-ID': _.get(this.editorService.editorConfig, 'context.channel') }; - const derivedProperties = ['additionalCategories', 'board', 'medium', 'gradeLevel', 'subject', 'audience', - 'license', 'framework', 'topic']; - reqBody = _.merge({}, reqBody, _.pick(this.questionSetMetadata, derivedProperties)); - return this.bulkJobService.createBulkImport(reqBody, headers).pipe(catchError(err => { - const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.001')}; - this.uploader.reset(); - if (_.get(err, 'error.result.messages')) { - this.bulkUploadState = 4; - this.bulkUploadErrorMsgs = _.get(err, 'error.result.messages'); - return throwError({}); - } else { - this.updateBulkUploadState('decrement'); - return throwError(this.editorService.apiErrorHandling(err, errInfo)); - } - })); - } - - get questionSetMetadata() { - const rootNode = this.treeService.getFirstChild(); - return _.get(rootNode, 'data.metadata'); - } - - viewDetails($event) { - $event.preventDefault(); - this.showBulkUploadModal = true; - if (this.process.status === 'processing') { - this.bulkUploadState = 5; - this.checkBulkUploadStatus(); - } else { - this.bulkUploadState = 6; - } - } - - getContentStatus() { - return 'draft'; - } - - createJobRequest(rowsCount) { - this.bulkUploadState = 5; - const orgId = _.get(this.editorService.editorConfig, 'context.contributionOrgId'); - const createdby = _.get(this.editorService.editorConfig, 'context.user.id'); - const programId = _.get(this.editorService.editorConfig, 'context.programId', ''); - const collectionId = this.collectionId; - - this.process.overall_stats = { - total: rowsCount, - upload_pending: rowsCount, - upload_failed: 0, - upload_success: 0 - }; - this.process.data = { - program_id: programId, - collection_id: collectionId - }; - this.process.createdon = new Date(); - this.process.createdby = createdby; - this.process.program_id = programId; - this.process.collection_id = collectionId; - this.process.status = 'processing'; - - if (orgId) { - this.process.data.org_id = orgId; - this.process.org_id = orgId; - } - const request = { ...this.process }; - return this.bulkJobService.createBulkJob(request); - } - - async openBulkUploadModal() { - this.bulkUploadState = 0; - this.showBulkUploadModal = true; - this.updateBulkUploadState('increment'); - } - - closeBulkUploadModal() { - this.showBulkUploadModal = false; - this.bulkUploadState = 0; - if (this.uploader) { - this.uploader.reset(); - } - } - - updateBulkUploadState(action) { - if (this.bulkUploadState === 6 && action === 'increment') { - return this.closeBulkUploadModal(); - } - if (this.bulkUploadState === 4 && action === 'decrement') { - this.bulkUploadState = 3; - } - this.bulkUploadState += (action === 'increment') ? 1 : -1; - if (this.bulkUploadState === 2) { - this.initiateDocumentUploadModal(); - } - } - - getParentsHelper(tree: any, id: string, parents: string = '') { - const self = this; - if (tree.identifier === id) { - return { - found: true, - parents - }; - } - let result = { - found: false, - }; - if (tree.children) { - _.forEach(tree.children, (subtree, key) => { - let maybeParents = parents; - if (tree.identifier !== undefined) { - maybeParents = tree.name; - } - const maybeResult: any = self.getParentsHelper(subtree, id, maybeParents); - if (maybeResult.found) { - result = maybeResult; - return false; - } - }); - } - return result; - } - - getParents(data: Array, id: string) { - const tree = { - children: data - }; - return this.getParentsHelper(tree, id); - } - - downloadSampleCSVFile() { - const downloadConfig = { - blobUrl: this.sampleMetadataCsvUrl, - successMessage: false, - fileType: 'csv', - fileName: this.collectionId - }; - window.open(downloadConfig.blobUrl, '_blank'); - } -} diff --git a/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.html b/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.html index 7e0a1f044..b68af0fbb 100644 --- a/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.html +++ b/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.html @@ -39,7 +39,7 @@
- {{data?.name}} +
@@ -64,7 +64,7 @@
- {{data?.name}} +
@@ -109,7 +109,7 @@ (click)="selectVideo(data)">
- {{data?.name}} +
@@ -137,7 +137,7 @@ (click)="selectVideo(data);">
- {{data?.name}} +
@@ -157,7 +157,7 @@ -
{{configService.labelConfig?.lbl?.uploadAndUse}}
@@ -209,11 +209,10 @@
{{configService.labelConfig?.lbl?.copyRightsAndLicense}}
-
diff --git a/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.ts b/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.ts index f473a0abf..1712a46cf 100644 --- a/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.ts +++ b/projects/collection-editor-library/src/lib/components/ckeditor-tool/ckeditor-tool.component.ts @@ -62,7 +62,6 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { public initialFormConfig: any; public imageFormValid = false; public videoFile: any; - public imageFile: any; public termsAndCondition: any; public assetName: any; public emptyImageSearchMessage: any; @@ -176,15 +175,11 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { this.videoDataOutput.emit(false); } dismissImageUploadModal() { - if (this.isClosable) { this.showImageUploadModal = false; } - } initiateImageUploadModal() { this.showImagePicker = false; this.showImageUploadModal = true; - this.loading = false; - this.isClosable = true; } dismissVideoUploadModal() { @@ -372,7 +367,7 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { }); } - addImageInEditor(imageUrl, imageId, imageName) { + addImageInEditor(imageUrl, imageId) { const src = this.getMediaOriginURL(imageUrl); const baseUrl = _.get(this.editorService.editorConfig, 'context.host') || document.location.origin; this.mediaobj = { @@ -384,7 +379,7 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { this.editorInstance.model.change(writer => { const imageElement = writer.createElement('image', { src, - alt: imageName, + alt: imageId, 'data-asset-variable': imageId }); this.editorInstance.model.insertContent(imageElement, this.editorInstance.model.document.selection); @@ -539,7 +534,6 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { * function to upload image */ uploadImage(event) { - this.imageFile = event.target.files[0]; const file = event.target.files[0]; this.assetName = file.name; const reader = new FileReader(); @@ -586,66 +580,21 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { this.formConfig = formvalue; } uploadAndUseImage(modal) { - this.isClosable = false; - this.loading = true; - this.showErrorMsg = false; - this.imageFormValid = false; - this.questionService.createMediaAsset({ asset: this.assestData }).pipe(catchError(err => { + this.questionService.createMediaAsset({ content: this.assestData }).pipe(catchError(err => { const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') }; - this.loading = false; - this.isClosable = true; - this.imageFormValid = true; return throwError(this.editorService.apiErrorHandling(err, errInfo)); })).subscribe((res) => { const imgId = res.result.node_id; - const preSignedRequest = { - content: { - fileName: this.assetName - } + const request = { + data: this.formData }; - this.questionService.generatePreSignedUrl(preSignedRequest, imgId).pipe(catchError(err => { - const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.026') }; - this.loading = false; - this.isClosable = true; - this.imageFormValid = true; + this.questionService.uploadMedia(request, imgId).pipe(catchError(err => { + const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') }; return throwError(this.editorService.apiErrorHandling(err, errInfo)); })).subscribe((response) => { - const signedURL = response.result.pre_signed_url; - const blobConfig = { - processData: false, - contentType: 'Asset', - headers: { - 'x-ms-blob-type': 'BlockBlob' - } - }; - this.uploadToBlob(signedURL, this.imageFile, blobConfig).subscribe(() => { - const fileURL = signedURL.split('?')[0]; - const data = new FormData(); - data.append('fileUrl', fileURL); - data.append('mimeType', this.imageFile.type); - const config1 = { - enctype: 'multipart/form-data', - processData: false, - contentType: false, - cache: false - }; - const uploadMediaConfig = { - data, - param: config1 - }; - this.questionService.uploadMedia(uploadMediaConfig, imgId).pipe(catchError(err => { - const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') }; - this.isClosable = true; - this.loading = false; - this.imageFormValid = true; - return throwError(this.editorService.apiErrorHandling(err, errInfo)); - })).subscribe((response1) => { - this.addImageInEditor(response1.result.content_url, response1.result.node_id, this.assestData['name']); - this.dismissPops(modal); - }); - }); + this.addImageInEditor(response.result.content_url, response.result.node_id); + this.dismissPops(modal); }); - }); } openImageUploadModal() { @@ -690,8 +639,6 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { this.formConfig = this.initialFormConfig; this.imageUploadLoader = false; this.imageFormValid = false; - this.loading = false; - this.isClosable = true; } /** * function to upload video @@ -743,7 +690,7 @@ export class CkeditorToolComponent implements OnInit, AfterViewInit, OnChanges { this.showErrorMsg = false; this.imageFormValid = false; if (!this.showErrorMsg) { - this.questionService.createMediaAsset({ asset: this.assestData }).pipe(catchError(err => { + this.questionService.createMediaAsset({ content: this.assestData }).pipe(catchError(err => { this.loading = false; this.isClosable = true; this.imageFormValid = true; diff --git a/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.html b/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.html index 0da8c59a8..f403b73db 100644 --- a/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.html +++ b/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.html @@ -1,13 +1,15 @@
{{appIconConfig?.label}}
-
+
{{configService.labelConfig?.lbl?.addAnImage}}
- app icon +
\ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.spec.ts b/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.spec.ts index 520c9a319..255087296 100644 --- a/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.spec.ts +++ b/projects/collection-editor-library/src/lib/components/collection-icon/collection-icon.component.spec.ts @@ -18,6 +18,7 @@ describe('CollectionIconComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(CollectionIconComponent); component = fixture.componentInstance; + fixture.detectChanges(); }); it('should create', () => { diff --git a/projects/collection-editor-library/src/lib/components/contentplayer-page/contentplayer-page.component.html b/projects/collection-editor-library/src/lib/components/contentplayer-page/contentplayer-page.component.html index d6051a510..6ae5b8588 100644 --- a/projects/collection-editor-library/src/lib/components/contentplayer-page/contentplayer-page.component.html +++ b/projects/collection-editor-library/src/lib/components/contentplayer-page/contentplayer-page.component.html @@ -1,9 +1,6 @@
- - - + diff --git a/projects/collection-editor-library/src/lib/components/csv-upload/csv-upload.component.scss b/projects/collection-editor-library/src/lib/components/csv-upload/csv-upload.component.scss index 0b722ce29..8b4756e6b 100644 --- a/projects/collection-editor-library/src/lib/components/csv-upload/csv-upload.component.scss +++ b/projects/collection-editor-library/src/lib/components/csv-upload/csv-upload.component.scss @@ -97,17 +97,4 @@ } } } - } -.upload-input-button { - input[type="file"] { - position: absolute; - right: 0px; - top: 0px; - font-size: 118px; - margin: 0px; - padding: 0px; - cursor: pointer; - opacity: 0; - height: 100%; - } -} + } \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/editor/editor.component.html b/projects/collection-editor-library/src/lib/components/editor/editor.component.html index 6cc9acd5d..1626cc86f 100755 --- a/projects/collection-editor-library/src/lib/components/editor/editor.component.html +++ b/projects/collection-editor-library/src/lib/components/editor/editor.component.html @@ -2,7 +2,7 @@
+ [labelConfigData]="toolbarConfig" [buttonLoaders]="buttonLoaders" (toolbarEmitter)="toolbarEventListener($event)">
@@ -13,7 +13,7 @@ @@ -109,7 +105,7 @@ class="font-weight-bold mb-4 d-block">"{{configService.labelConfig?.lbl?.iAgreeSubmit}}
{{configService.labelConfig?.lbl?.iconfirmContent}} {{configService.labelConfig?.lbl?.createCommonFramework}} - {{configService.labelConfig?.lbl?.accordance}} + {{configService.labelConfig?.lbl?.accordance}} {{configService.labelConfig?.lbl?.contentPolicy}} {{configService.labelConfig?.lbl?.privacyRights}}"
@@ -130,7 +126,7 @@ {{configService.labelConfig?.lbl?.questionSetPreview}}
-
+
@@ -140,15 +136,12 @@
- - - - - + + - + diff --git a/projects/collection-editor-library/src/lib/components/editor/editor.component.scss b/projects/collection-editor-library/src/lib/components/editor/editor.component.scss old mode 100644 new mode 100755 index bec7d65be..636773933 --- a/projects/collection-editor-library/src/lib/components/editor/editor.component.scss +++ b/projects/collection-editor-library/src/lib/components/editor/editor.component.scss @@ -1,599 +1,585 @@ -lib-editor { - .fancytree-helper-hidden{display:none}.fancytree-helper-indeterminate-cb{color:#777}.fancytree-helper-disabled{color:silver}.fancytree-helper-spin{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}ul.fancytree-container{font-family:inherit;font-size:10pt;white-space:nowrap;padding:3px;margin:0;background-color:#fff;border:1px dotted gray;min-height:0;position:relative}ul.fancytree-container ul{padding:0 0 0 16px;margin:0}ul.fancytree-container ul>li:before{content:none}ul.fancytree-container li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}ul.fancytree-container li.fancytree-lastsib{background-image:none}.ui-fancytree-disabled ul.fancytree-container{opacity:.5;background-color:silver}ul.fancytree-connectors.fancytree-container li{background-image:url(../../assets/images/vline.gif);background-position:0 0}ul.fancytree-container li.fancytree-lastsib,ul.fancytree-no-connector>li{background-image:none}li.fancytree-animating{position:relative}#fancytree-drop-marker,span.fancytree-checkbox,span.fancytree-drag-helper-img,span.fancytree-empty,span.fancytree-expander,span.fancytree-icon,span.fancytree-vline{width:16px;height:16px;display:inline-block;vertical-align:top;background-repeat:no-repeat;background-image:url(../../assets/images/icons.gif);background-position:0 0}span.fancytree-checkbox,span.fancytree-custom-icon,span.fancytree-expander,span.fancytree-icon{margin-top:0}span.fancytree-custom-icon{width:16px;height:16px;display:inline-block;margin-left:3px;background-position:0 0}img.fancytree-icon{width:16px;height:16px;margin-left:3px;margin-top:0;vertical-align:top;border-style:none}span.fancytree-expander{cursor:pointer}.fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{background-image:none;cursor:default}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(../../assets/images/icons.gif);margin-top:0}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-n span.fancytree-expander:hover{background-position:0 -64px}.fancytree-connectors .fancytree-exp-nl span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander:hover{background-position:-16px -64px}.fancytree-exp-c span.fancytree-expander{background-position:0 -80px}.fancytree-exp-c span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-cl span.fancytree-expander{background-position:0 -96px}.fancytree-exp-cl span.fancytree-expander:hover{background-position:-16px -96px}.fancytree-exp-cd span.fancytree-expander{background-position:-64px -80px}.fancytree-exp-cd span.fancytree-expander:hover{background-position:-80px -80px}.fancytree-exp-cdl span.fancytree-expander{background-position:-64px -96px}.fancytree-exp-cdl span.fancytree-expander:hover{background-position:-80px -96px}.fancytree-exp-e span.fancytree-expander,.fancytree-exp-ed span.fancytree-expander{background-position:-32px -80px}.fancytree-exp-e span.fancytree-expander:hover,.fancytree-exp-ed span.fancytree-expander:hover{background-position:-48px -80px}.fancytree-exp-edl span.fancytree-expander,.fancytree-exp-el span.fancytree-expander{background-position:-32px -96px}.fancytree-exp-edl span.fancytree-expander:hover,.fancytree-exp-el span.fancytree-expander:hover{background-position:-48px -96px}.fancytree-fade-expander span.fancytree-expander{transition:opacity 1.5s;opacity:0}.fancytree-fade-expander .fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander [class*=fancytree-statusnode-] span.fancytree-expander,.fancytree-fade-expander.fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander:hover span.fancytree-expander{transition:opacity .6s;opacity:1}span.fancytree-checkbox{margin-left:3px;background-position:0 -32px}span.fancytree-checkbox:hover{background-position:-16px -32px}span.fancytree-checkbox.fancytree-radio{background-position:0 -48px}span.fancytree-checkbox.fancytree-radio:hover{background-position:-16px -48px}.fancytree-partsel span.fancytree-checkbox{background-position:-64px -32px}.fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -32px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio{background-position:-64px -48px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio:hover{background-position:-80px -48px}.fancytree-selected span.fancytree-checkbox{background-position:-32px -32px}.fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -32px}.fancytree-selected span.fancytree-checkbox.fancytree-radio{background-position:-32px -48px}.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-48px -48px}.fancytree-unselectable span.fancytree-checkbox{opacity:.4}.fancytree-unselectable span.fancytree-checkbox:hover{background-position:0 -32px}.fancytree-unselectable span.fancytree-checkbox.fancytree-radio:hover{background-position:0 -48px}.fancytree-unselectable.fancytree-partsel span.fancytree-checkbox:hover{background-position:-64px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox:hover{background-position:-32px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-32px -48px}.fancytree-container.fancytree-checkbox-auto-hide span.fancytree-checkbox{visibility:hidden}.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node.fancytree-selected span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node:hover span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr.fancytree-selected td span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr:hover td span.fancytree-checkbox{visibility:unset}.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus .fancytree-node.fancytree-active span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus tr.fancytree-active td span.fancytree-checkbox{visibility:unset}span.fancytree-icon{margin-left:3px;background-position:0 0}.fancytree-ico-c span.fancytree-icon:hover{background-position:-16px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon{background-position:-32px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon:hover{background-position:-48px 0}.fancytree-ico-e span.fancytree-icon{background-position:-64px 0}.fancytree-ico-e span.fancytree-icon:hover{background-position:-80px 0}.fancytree-ico-cf span.fancytree-icon{background-position:0 -16px}.fancytree-ico-cf span.fancytree-icon:hover{background-position:-16px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon{background-position:-32px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon:hover{background-position:-48px -16px}.fancytree-ico-ef span.fancytree-icon{background-position:-64px -16px}.fancytree-ico-ef span.fancytree-icon:hover{background-position:-80px -16px}.fancytree-loading span.fancytree-expander,.fancytree-loading span.fancytree-expander:hover,.fancytree-statusnode-loading span.fancytree-icon,.fancytree-statusnode-loading span.fancytree-icon:hover,span.fancytree-icon.fancytree-icon-loading{background-image:url(../../assets/images/loading.gif);background-position:0 0}.fancytree-statusnode-error span.fancytree-icon,.fancytree-statusnode-error span.fancytree-icon:hover{background-position:0 -112px}span.fancytree-node{display:inherit;width:100%;margin-top:1px;min-height:16px}span.fancytree-title{color:#000;cursor:pointer;display:inline-block;vertical-align:top;min-height:16px;padding:0 3px 0 3px;margin:0 0 0 3px;border:1px solid transparent;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}span.fancytree-node.fancytree-error span.fancytree-title{color:red}span.fancytree-childcounter{color:#fff;background:#337ab7;border:1px solid gray;border-radius:10px;padding:2px;text-align:center}div.fancytree-drag-helper span.fancytree-childcounter,div.fancytree-drag-helper span.fancytree-dnd-modifier{display:inline-block;color:#fff;background:#337ab7;border:1px solid gray;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}div.fancytree-drag-helper span.fancytree-childcounter{position:absolute;top:-6px;right:-6px}div.fancytree-drag-helper span.fancytree-dnd-modifier{background:#5cb85c;border:none;font-weight:bolder}div.fancytree-drag-helper.fancytree-drop-accept span.fancytree-drag-helper-img{background-position:-32px -112px}div.fancytree-drag-helper.fancytree-drop-reject span.fancytree-drag-helper-img{background-position:-16px -112px}#fancytree-drop-marker{width:32px;position:absolute;background-position:0 -128px;margin:0}#fancytree-drop-marker.fancytree-drop-after,#fancytree-drop-marker.fancytree-drop-before{width:64px;background-position:0 -144px}#fancytree-drop-marker.fancytree-drop-copy{background-position:-64px -128px}#fancytree-drop-marker.fancytree-drop-move{background-position:-32px -128px}span.fancytree-drag-source.fancytree-drag-remove{opacity:.15}.fancytree-container.fancytree-rtl span.fancytree-connector,.fancytree-container.fancytree-rtl span.fancytree-drag-helper-img,.fancytree-container.fancytree-rtl span.fancytree-expander,.fancytree-container.fancytree-rtl span.fancytree-icon{background-image:url(../../assets/images/icons-rtl.gif)}.fancytree-container.fancytree-rtl .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl .fancytree-exp-nl span.fancytree-expander{background-image:none}.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(../../assets/images/icons-rtl.gif)}ul.fancytree-container.fancytree-rtl ul{padding:0 16px 0 0}ul.fancytree-container.fancytree-rtl.fancytree-connectors li{background-position:right 0;background-image:url(../../assets/images/vline-rtl.gif)}ul.fancytree-container.fancytree-rtl li.fancytree-lastsib,ul.fancytree-container.fancytree-rtl.fancytree-no-connector>li{background-image:none}#fancytree-drop-marker.fancytree-rtl{background-image:url(../../assets/images/icons-rtl.gif)}table.fancytree-ext-table{font-family:inherit;font-size:10pt;border-collapse:collapse}table.fancytree-ext-table span.fancytree-node{display:inline-block;box-sizing:border-box}table.fancytree-ext-table td.fancytree-status-merged{text-align:center;font-style:italic;color:silver}table.fancytree-ext-table tr.fancytree-statusnode-error td.fancytree-status-merged{color:red}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr.fancytree-active>td{background-color:#eee}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr>td.fancytree-active-cell{background-color:#cbe8f6}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode.fancytree-cell-nav-mode>tbody>tr>td.fancytree-active-cell{background-color:#3875d7}table.fancytree-ext-columnview tbody tr td{position:relative;border:1px solid gray;vertical-align:top;overflow:auto}table.fancytree-ext-columnview tbody tr td>ul{padding:0}table.fancytree-ext-columnview tbody tr td>ul li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}table.fancytree-ext-columnview span.fancytree-node{position:relative;display:inline-block}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#e0e0e0}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#cbe8f6}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right{position:absolute;right:3px;background-position:0 -80px}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right:hover{background-position:-16px -80px}.fancytree-ext-filter-dimm span.fancytree-node span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-submatch span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-match span.fancytree-title{color:#000;font-weight:700}.fancytree-ext-filter-hide span.fancytree-node.fancytree-hide,.fancytree-ext-filter-hide tr.fancytree-hide{display:none}.fancytree-ext-filter-hide span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-submatch span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-hide span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-match span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-match span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-match span.fancytree-expander{visibility:hidden}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-submatch span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-submatch span.fancytree-expander{visibility:visible}.fancytree-ext-childcounter span.fancytree-custom-icon,.fancytree-ext-childcounter span.fancytree-icon,.fancytree-ext-filter span.fancytree-custom-icon,.fancytree-ext-filter span.fancytree-icon{position:relative}.fancytree-ext-childcounter span.fancytree-childcounter,.fancytree-ext-filter span.fancytree-childcounter{color:#fff;background:#777;border:1px solid gray;position:absolute;top:-6px;right:-6px;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}ul.fancytree-ext-wide{position:relative;min-width:100%;z-index:2;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.fancytree-ext-wide span.fancytree-node>span{position:relative;z-index:2}ul.fancytree-ext-wide span.fancytree-node span.fancytree-title{position:absolute;z-index:1;left:0;min-width:100%;margin-left:0;margin-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fancytree-ext-fixed-wrapper .fancytree-ext-fixed-hidden{display:none}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-bottom{border-bottom:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-right{border-right:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tl{position:absolute;overflow:hidden;z-index:3;top:0;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tr{position:absolute;overflow:hidden;z-index:2;top:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-bl{position:absolute;overflow:hidden;z-index:2;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-br{position:absolute;overflow:scroll;z-index:1}span.fancytree-title{border:1px solid transparent;border-radius:0}span.fancytree-focused span.fancytree-title{outline:1px dotted #000}span.fancytree-active span.fancytree-title,span.fancytree-selected span.fancytree-title{background-color:#d4d4d4}span.fancytree-selected span.fancytree-title{font-style:italic}.fancytree-treefocus span.fancytree-active span.fancytree-title,.fancytree-treefocus span.fancytree-selected span.fancytree-title{color:#fff;background-color:#3875d7}table.fancytree-ext-table{border-collapse:collapse}table.fancytree-ext-table tbody tr.fancytree-focused{background-color:#99defd}table.fancytree-ext-table tbody tr.fancytree-active{background-color:#4169e1}table.fancytree-ext-table tbody tr.fancytree-selected{background-color:#99defd}table.fancytree-ext-columnview tbody tr td{border:1px solid gray}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#ccc}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#4169e1} - .optionsArrayMap, - .optionsLast, - .optionsArray { - color: #000 !important; - } - .dynamic-form { - .required { - .sb-modal-dropdown-web { - label { - &::after { - content: ' ' !important; - } +.fancytree-helper-hidden{display:none}.fancytree-helper-indeterminate-cb{color:#777}.fancytree-helper-disabled{color:silver}.fancytree-helper-spin{-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}ul.fancytree-container{font-family:inherit;font-size:10pt;white-space:nowrap;padding:3px;margin:0;background-color:#fff;border:1px dotted gray;min-height:0;position:relative}ul.fancytree-container ul{padding:0 0 0 16px;margin:0}ul.fancytree-container ul>li:before{content:none}ul.fancytree-container li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}ul.fancytree-container li.fancytree-lastsib{background-image:none}.ui-fancytree-disabled ul.fancytree-container{opacity:.5;background-color:silver}ul.fancytree-connectors.fancytree-container li{background-image:url(../../assets/images/vline.gif);background-position:0 0}ul.fancytree-container li.fancytree-lastsib,ul.fancytree-no-connector>li{background-image:none}li.fancytree-animating{position:relative}#fancytree-drop-marker,span.fancytree-checkbox,span.fancytree-drag-helper-img,span.fancytree-empty,span.fancytree-expander,span.fancytree-icon,span.fancytree-vline{width:16px;height:16px;display:inline-block;vertical-align:top;background-repeat:no-repeat;background-image:url(../../assets/images/icons.gif);background-position:0 0}span.fancytree-checkbox,span.fancytree-custom-icon,span.fancytree-expander,span.fancytree-icon{margin-top:0}span.fancytree-custom-icon{width:16px;height:16px;display:inline-block;margin-left:3px;background-position:0 0}img.fancytree-icon{width:16px;height:16px;margin-left:3px;margin-top:0;vertical-align:top;border-style:none}span.fancytree-expander{cursor:pointer}.fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{background-image:none;cursor:default}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(../../assets/images/icons.gif);margin-top:0}.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-connectors .fancytree-exp-n span.fancytree-expander:hover{background-position:0 -64px}.fancytree-connectors .fancytree-exp-nl span.fancytree-expander,.fancytree-connectors .fancytree-exp-nl span.fancytree-expander:hover{background-position:-16px -64px}.fancytree-exp-c span.fancytree-expander{background-position:0 -80px}.fancytree-exp-c span.fancytree-expander:hover{background-position:-16px -80px}.fancytree-exp-cl span.fancytree-expander{background-position:0 -96px}.fancytree-exp-cl span.fancytree-expander:hover{background-position:-16px -96px}.fancytree-exp-cd span.fancytree-expander{background-position:-64px -80px}.fancytree-exp-cd span.fancytree-expander:hover{background-position:-80px -80px}.fancytree-exp-cdl span.fancytree-expander{background-position:-64px -96px}.fancytree-exp-cdl span.fancytree-expander:hover{background-position:-80px -96px}.fancytree-exp-e span.fancytree-expander,.fancytree-exp-ed span.fancytree-expander{background-position:-32px -80px}.fancytree-exp-e span.fancytree-expander:hover,.fancytree-exp-ed span.fancytree-expander:hover{background-position:-48px -80px}.fancytree-exp-edl span.fancytree-expander,.fancytree-exp-el span.fancytree-expander{background-position:-32px -96px}.fancytree-exp-edl span.fancytree-expander:hover,.fancytree-exp-el span.fancytree-expander:hover{background-position:-48px -96px}.fancytree-fade-expander span.fancytree-expander{transition:opacity 1.5s;opacity:0}.fancytree-fade-expander .fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander [class*=fancytree-statusnode-] span.fancytree-expander,.fancytree-fade-expander.fancytree-treefocus span.fancytree-expander,.fancytree-fade-expander:hover span.fancytree-expander{transition:opacity .6s;opacity:1}span.fancytree-checkbox{margin-left:3px;background-position:0 -32px}span.fancytree-checkbox:hover{background-position:-16px -32px}span.fancytree-checkbox.fancytree-radio{background-position:0 -48px}span.fancytree-checkbox.fancytree-radio:hover{background-position:-16px -48px}.fancytree-partsel span.fancytree-checkbox{background-position:-64px -32px}.fancytree-partsel span.fancytree-checkbox:hover{background-position:-80px -32px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio{background-position:-64px -48px}.fancytree-partsel span.fancytree-checkbox.fancytree-radio:hover{background-position:-80px -48px}.fancytree-selected span.fancytree-checkbox{background-position:-32px -32px}.fancytree-selected span.fancytree-checkbox:hover{background-position:-48px -32px}.fancytree-selected span.fancytree-checkbox.fancytree-radio{background-position:-32px -48px}.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-48px -48px}.fancytree-unselectable span.fancytree-checkbox{opacity:.4}.fancytree-unselectable span.fancytree-checkbox:hover{background-position:0 -32px}.fancytree-unselectable span.fancytree-checkbox.fancytree-radio:hover{background-position:0 -48px}.fancytree-unselectable.fancytree-partsel span.fancytree-checkbox:hover{background-position:-64px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox:hover{background-position:-32px -32px}.fancytree-unselectable.fancytree-selected span.fancytree-checkbox.fancytree-radio:hover{background-position:-32px -48px}.fancytree-container.fancytree-checkbox-auto-hide span.fancytree-checkbox{visibility:hidden}.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node.fancytree-selected span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide .fancytree-node:hover span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr.fancytree-selected td span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide tr:hover td span.fancytree-checkbox{visibility:unset}.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus .fancytree-node.fancytree-active span.fancytree-checkbox,.fancytree-container.fancytree-checkbox-auto-hide.fancytree-treefocus tr.fancytree-active td span.fancytree-checkbox{visibility:unset}span.fancytree-icon{margin-left:3px;background-position:0 0}.fancytree-ico-c span.fancytree-icon:hover{background-position:-16px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon{background-position:-32px 0}.fancytree-has-children.fancytree-ico-c span.fancytree-icon:hover{background-position:-48px 0}.fancytree-ico-e span.fancytree-icon{background-position:-64px 0}.fancytree-ico-e span.fancytree-icon:hover{background-position:-80px 0}.fancytree-ico-cf span.fancytree-icon{background-position:0 -16px}.fancytree-ico-cf span.fancytree-icon:hover{background-position:-16px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon{background-position:-32px -16px}.fancytree-has-children.fancytree-ico-cf span.fancytree-icon:hover{background-position:-48px -16px}.fancytree-ico-ef span.fancytree-icon{background-position:-64px -16px}.fancytree-ico-ef span.fancytree-icon:hover{background-position:-80px -16px}.fancytree-loading span.fancytree-expander,.fancytree-loading span.fancytree-expander:hover,.fancytree-statusnode-loading span.fancytree-icon,.fancytree-statusnode-loading span.fancytree-icon:hover,span.fancytree-icon.fancytree-icon-loading{background-image:url(../../assets/images/loading.gif);background-position:0 0}.fancytree-statusnode-error span.fancytree-icon,.fancytree-statusnode-error span.fancytree-icon:hover{background-position:0 -112px}span.fancytree-node{display:inherit;width:100%;margin-top:1px;min-height:16px}span.fancytree-title{color:#000;cursor:pointer;display:inline-block;vertical-align:top;min-height:16px;padding:0 3px 0 3px;margin:0 0 0 3px;border:1px solid transparent;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;-o-border-radius:0;border-radius:0}span.fancytree-node.fancytree-error span.fancytree-title{color:red}span.fancytree-childcounter{color:#fff;background:#337ab7;border:1px solid gray;border-radius:10px;padding:2px;text-align:center}div.fancytree-drag-helper span.fancytree-childcounter,div.fancytree-drag-helper span.fancytree-dnd-modifier{display:inline-block;color:#fff;background:#337ab7;border:1px solid gray;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}div.fancytree-drag-helper span.fancytree-childcounter{position:absolute;top:-6px;right:-6px}div.fancytree-drag-helper span.fancytree-dnd-modifier{background:#5cb85c;border:none;font-weight:bolder}div.fancytree-drag-helper.fancytree-drop-accept span.fancytree-drag-helper-img{background-position:-32px -112px}div.fancytree-drag-helper.fancytree-drop-reject span.fancytree-drag-helper-img{background-position:-16px -112px}#fancytree-drop-marker{width:32px;position:absolute;background-position:0 -128px;margin:0}#fancytree-drop-marker.fancytree-drop-after,#fancytree-drop-marker.fancytree-drop-before{width:64px;background-position:0 -144px}#fancytree-drop-marker.fancytree-drop-copy{background-position:-64px -128px}#fancytree-drop-marker.fancytree-drop-move{background-position:-32px -128px}span.fancytree-drag-source.fancytree-drag-remove{opacity:.15}.fancytree-container.fancytree-rtl span.fancytree-connector,.fancytree-container.fancytree-rtl span.fancytree-drag-helper-img,.fancytree-container.fancytree-rtl span.fancytree-expander,.fancytree-container.fancytree-rtl span.fancytree-icon{background-image:url(../../assets/images/icons-rtl.gif)}.fancytree-container.fancytree-rtl .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl .fancytree-exp-nl span.fancytree-expander{background-image:none}.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-n span.fancytree-expander,.fancytree-container.fancytree-rtl.fancytree-connectors .fancytree-exp-nl span.fancytree-expander{background-image:url(../../assets/images/icons-rtl.gif)}ul.fancytree-container.fancytree-rtl ul{padding:0 16px 0 0}ul.fancytree-container.fancytree-rtl.fancytree-connectors li{background-position:right 0;background-image:url(../../assets/images/vline-rtl.gif)}ul.fancytree-container.fancytree-rtl li.fancytree-lastsib,ul.fancytree-container.fancytree-rtl.fancytree-no-connector>li{background-image:none}#fancytree-drop-marker.fancytree-rtl{background-image:url(../../assets/images/icons-rtl.gif)}table.fancytree-ext-table{font-family:inherit;font-size:10pt;border-collapse:collapse}table.fancytree-ext-table span.fancytree-node{display:inline-block;box-sizing:border-box}table.fancytree-ext-table td.fancytree-status-merged{text-align:center;font-style:italic;color:silver}table.fancytree-ext-table tr.fancytree-statusnode-error td.fancytree-status-merged{color:red}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr.fancytree-active>td{background-color:#eee}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode>tbody>tr>td.fancytree-active-cell{background-color:#cbe8f6}table.fancytree-ext-table.fancytree-ext-ariagrid.fancytree-cell-mode.fancytree-cell-nav-mode>tbody>tr>td.fancytree-active-cell{background-color:#3875d7}table.fancytree-ext-columnview tbody tr td{position:relative;border:1px solid gray;vertical-align:top;overflow:auto}table.fancytree-ext-columnview tbody tr td>ul{padding:0}table.fancytree-ext-columnview tbody tr td>ul li{list-style-image:none;list-style-position:outside;list-style-type:none;-moz-background-clip:border;-moz-background-inline-policy:continuous;-moz-background-origin:padding;background-attachment:scroll;background-color:transparent;background-position:0 0;background-repeat:repeat-y;background-image:none;margin:0}table.fancytree-ext-columnview span.fancytree-node{position:relative;display:inline-block}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#e0e0e0}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#cbe8f6}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right{position:absolute;right:3px;background-position:0 -80px}table.fancytree-ext-columnview .fancytree-has-children span.fancytree-cv-right:hover{background-position:-16px -80px}.fancytree-ext-filter-dimm span.fancytree-node span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-submatch span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-dimm span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-dimm tr.fancytree-match span.fancytree-title{color:#000;font-weight:700}.fancytree-ext-filter-hide span.fancytree-node.fancytree-hide,.fancytree-ext-filter-hide tr.fancytree-hide{display:none}.fancytree-ext-filter-hide span.fancytree-node.fancytree-submatch span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-submatch span.fancytree-title{color:silver;font-weight:lighter}.fancytree-ext-filter-hide span.fancytree-node.fancytree-match span.fancytree-title,.fancytree-ext-filter-hide tr.fancytree-match span.fancytree-title{color:#000;font-weight:400}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-match span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-match span.fancytree-expander{visibility:hidden}.fancytree-ext-filter-hide-expanders span.fancytree-node.fancytree-submatch span.fancytree-expander,.fancytree-ext-filter-hide-expanders tr.fancytree-submatch span.fancytree-expander{visibility:visible}.fancytree-ext-childcounter span.fancytree-custom-icon,.fancytree-ext-childcounter span.fancytree-icon,.fancytree-ext-filter span.fancytree-custom-icon,.fancytree-ext-filter span.fancytree-icon{position:relative}.fancytree-ext-childcounter span.fancytree-childcounter,.fancytree-ext-filter span.fancytree-childcounter{color:#fff;background:#777;border:1px solid gray;position:absolute;top:-6px;right:-6px;min-width:10px;height:10px;line-height:1;vertical-align:baseline;border-radius:10px;padding:2px;text-align:center;font-size:9px}ul.fancytree-ext-wide{position:relative;min-width:100%;z-index:2;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.fancytree-ext-wide span.fancytree-node>span{position:relative;z-index:2}ul.fancytree-ext-wide span.fancytree-node span.fancytree-title{position:absolute;z-index:1;left:0;min-width:100%;margin-left:0;margin-right:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.fancytree-ext-fixed-wrapper .fancytree-ext-fixed-hidden{display:none}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-bottom{border-bottom:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-scroll-border-right{border-right:3px solid rgba(0,0,0,.75)}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tl{position:absolute;overflow:hidden;z-index:3;top:0;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-tr{position:absolute;overflow:hidden;z-index:2;top:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-bl{position:absolute;overflow:hidden;z-index:2;left:0}.fancytree-ext-fixed-wrapper div.fancytree-ext-fixed-wrapper-br{position:absolute;overflow:scroll;z-index:1}span.fancytree-title{border:1px solid transparent;border-radius:0}span.fancytree-focused span.fancytree-title{outline:1px dotted #000}span.fancytree-active span.fancytree-title,span.fancytree-selected span.fancytree-title{background-color:#d4d4d4}span.fancytree-selected span.fancytree-title{font-style:italic}.fancytree-treefocus span.fancytree-active span.fancytree-title,.fancytree-treefocus span.fancytree-selected span.fancytree-title{color:#fff;background-color:#3875d7}table.fancytree-ext-table{border-collapse:collapse}table.fancytree-ext-table tbody tr.fancytree-focused{background-color:#99defd}table.fancytree-ext-table tbody tr.fancytree-active{background-color:#4169e1}table.fancytree-ext-table tbody tr.fancytree-selected{background-color:#99defd}table.fancytree-ext-columnview tbody tr td{border:1px solid gray}table.fancytree-ext-columnview span.fancytree-node.fancytree-expanded{background-color:#ccc}table.fancytree-ext-columnview span.fancytree-node.fancytree-active{background-color:#4169e1} +.optionsArrayMap, +.optionsLast, +.optionsArray { + color: #000 !important; +} + +.dynamic-form { + .required { + .sb-modal-dropdown-web { + label { + &::after { + content: ' ' !important; } } } - sb-dynamic-checkbox { - margin-top: 3.5rem; - } - .sb-dropdown-select { - padding: 16px 8px !important; - } - .list-border { - margin-top: 2px !important; - } } - body { - background: #fff !important; + sb-dynamic-checkbox { + margin-top: 3.5rem; + } + .sb-dropdown-select { + padding: 16px 8px !important; } - .add-to-library { + .list-border { + margin-top: 2px !important; + } +} +body { + background: #fff !important; +} +.add-to-library { + position: relative; + z-index: 999 !important; + background: #e5edf5; + .sb-required { + color: #ff4558; + padding-left: 2px; position: relative; - z-index: 998 !important; - background: #e5edf5; - .sb-required { - color: #ff4558; - padding-left: 2px; - position: relative; - top: -5px; + top: -5px; + } + .back-btn { + &:hover { + background: none !important; } - .back-btn { - &:hover { - background: none !important; + } + .back-btn { + min-width: auto; + } + .dynamic-form { + .multi-select-section-app { + label { + margin-bottom: 0.3rem !important; + z-index: inherit; } } - .back-btn { - min-width: auto; + } + .dynamic-form { + label { + font-size: 12px !important; + margin-bottom: 0.5rem !important; + color: #121213e0; + font-weight: 600; } - .dynamic-form { - .multi-select-section-app { - label { - margin-bottom: 0.3rem !important; - z-index: inherit; - } - } + + .sb-textbox, + select, + .sb-textarea, + .list-border { + border: 1px solid rgba(34, 36, 38, 0.15) !important; + padding: 0.85rem 0.5rem !important; + border-radius: 0.28571429rem; + font-size: 0.785rem !important; + font-weight: 500; + // text-transform: capitalize; + } + select { + padding: 12px 8px !important; + } + .list-border { + margin-top: 14px !important; + min-height: 43px !important; + height: inherit !important; + padding: 5px 8px !important; } - .dynamic-form { - label { - font-size: 12px !important; - margin-bottom: 0.5rem !important; - color: #121213e0; - font-weight: 600; - } - .sb-textbox, - select, - .sb-textarea, - .list-border { - border: 1px solid rgba(34, 36, 38, 0.15) !important; - padding: 0.85rem 0.5rem !important; - border-radius: 0.28571429rem; - font-size: 0.785rem !important; - font-weight: 500; - // text-transform: capitalize; - } - select { - padding: 12px 8px !important; - } + .multi-select-container { .list-border { - margin-top: 2px !important; - min-height: 43px !important; - height: inherit !important; - padding: 5px 8px !important; - } - - .multi-select-container { - .list-border { - .placeholder { - font-weight: 500 !important; - color: #333 !important; - } - ul { - @extend label; - color: #333; - padding: 0; - margin: 0 !important; - opacity: 1 !important; - font-weight: 500 !important; - position: inherit !important; - } + .placeholder { + font-weight: 500 !important; + color: #333 !important; } - } - - .sb-modal-dropdown-web { ul { + @extend label; color: #333; padding: 0; margin: 0 !important; opacity: 1 !important; - font-size: 12px !important; - font-weight: 500; - border: 2px solid #eeeeef; - z-index: 99999 !important; + font-weight: 500 !important; + position: inherit !important; } } - .sb-keywordbox { - border: 1px solid rgba(34, 36, 38, 0.15) !important; - padding: 0.45rem 0.5rem !important; - border-radius: 0.28571429rem; - font-size: 0.785rem !important; + } + + .sb-modal-dropdown-web { + ul { + color: #333; + padding: 0; + margin: 0 !important; + opacity: 1 !important; + font-size: 12px !important; font-weight: 500; - padding: 0 !important; - .ng2-tag-input { - padding: 0; - tag { - margin-left: 0.5rem; - } - } - .ng2-tags-container { - margin-top: 0.2rem; - } - .tag-wrapper, - delete-icon svg { - height: 24px; - line-height: 24px; - } + border: 2px solid #eeeeef; + z-index: 99999 !important; } - .topic-picker-selector { - @extend .sb-textbox; - } - .sb-dropdown { - label { - padding: 0; - } - } - .textbox { - .sb-textarea-container { - .sb-textarea { - height: 10rem !important; - padding-top: 0.5rem !important; - } - label { - padding: 0; - } - } - } - - .sb-textarea-container { - .sb-textarea { - height: 2.9rem; - padding-top: 0.5rem !important; - } - label { - padding: 0; + } + .sb-keywordbox { + border: 1px solid rgba(34, 36, 38, 0.15) !important; + padding: 0.45rem 0.5rem !important; + border-radius: 0.28571429rem; + font-size: 0.785rem !important; + font-weight: 500; + padding: 0 !important; + .ng2-tag-input { + padding: 0; + tag { + margin-left: 0.5rem; } } - - .sb-checkbox { - padding: 0; - margin-top: 0; + .ng2-tags-container { + margin-top: 0.2rem; } - sb-icon-dropdown { - top: 10px !important; - right: 6px !important; + .tag-wrapper, + delete-icon svg { + height: 24px; + line-height: 24px; } } - .sb-textarea-container, + .topic-picker-selector { + @extend .sb-textbox; + } .sb-dropdown { - margin: 1rem 0 !important; + label { + padding: 0; + } } - .sb-container { - width: 95% !important; + .sb-textarea-container { + .sb-textarea { + height: 2.9rem; + padding-top: 0.5rem !important; + } + label { + padding: 0; + } } - } - .sb-checkbox-tnc { - .sb-required { - position: absolute; - padding-left: 0; - left: 18px; + .sb-checkbox { + padding: 0; + margin-top: 0; } - } - - .h-100vh { - height: 100vh; - } - .ui.column.grid > [class*='eight wide'].column { - width: 73% !important; - } - .footer-fix { - padding-bottom: 1rem !important; - } - .bg-white, - .ui.twelve.grid { - background: #fff !important; - } - - @keyframes spinner-border { - to { - transform: rotate(360deg); + sb-icon-dropdown { + top: 10px !important; + right: 6px !important; } } - .sb-loading-spinner { - width: 1rem; - height: 1rem; - margin-right: 8px; - border-width: 0.2em; - display: inline-block; - vertical-align: text-bottom; - border: 0.15em solid currentColor; - border-right-color: transparent; - border-radius: 50%; - -webkit-animation: spinner-border 0.75s linear infinite; - animation: spinner-border 0.75s linear infinite; + .sb-textarea-container, + .sb-dropdown { + margin: 1rem 0 !important; } - .sb-btn-loading:before { - position: absolute; - content: ''; - top: 50%; - left: 50%; - margin: -0.64285714em 0 0 -0.64285714em; - width: 1.28571429em; - height: 1.28571429em; - border-radius: 500rem; - border: 0.2em solid rgba(0, 0, 0, 0.15); + .sb-container { + width: 95% !important; } - .sb-btn-loading:after { +} +.sb-checkbox-tnc { + .sb-required { position: absolute; - content: ''; - top: 50%; - left: 50%; - margin: -0.64285714em 0 0 -0.64285714em; - width: 1.28571429em; - height: 1.28571429em; - -webkit-animation: button-spin 0.6s linear; - animation: button-spin 0.6s linear; - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; - border-radius: 500rem; - border-color: #fff transparent transparent; - border-style: solid; - border-width: 0.2em; - -webkit-box-shadow: 0 0 0 1px transparent; - box-shadow: 0 0 0 1px transparent; - } - .sb-btn-outline-disabled { - background-color: #ffffff; - border: 1px solid #cccccc; - color: #999999; - cursor: default; - font-weight: 400; + padding-left: 0; + left: 18px; } +} - lib-chat-window, - .chat_bot { - display: none !important; - } - .sb-textbox::-webkit-input-placeholder { - color: var(--gray-100) !important; - font-weight: 600 !important; - } - .treepicker-parent { - margin: 0.6rem 0 !important; +.h-100vh { + height: 100vh; +} +.ui.column.grid > [class*='eight wide'].column { + width: 73% !important; +} +.footer-fix { + padding-bottom: 1rem !important; +} +.bg-white, +.ui.twelve.grid { + background: #fff !important; +} + +@keyframes spinner-border { + to { + transform: rotate(360deg); } - .ck-content ul { - list-style-type: disc !important; - li { - margin-bottom: 0px !important; - } +} +.sb-loading-spinner { + width: 1rem; + height: 1rem; + margin-right: 8px; + border-width: 0.2em; + display: inline-block; + vertical-align: text-bottom; + border: 0.15em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + -webkit-animation: spinner-border 0.75s linear infinite; + animation: spinner-border 0.75s linear infinite; +} +.sb-btn-loading:before { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -0.64285714em 0 0 -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + border-radius: 500rem; + border: 0.2em solid rgba(0, 0, 0, 0.15); +} +.sb-btn-loading:after { + position: absolute; + content: ''; + top: 50%; + left: 50%; + margin: -0.64285714em 0 0 -0.64285714em; + width: 1.28571429em; + height: 1.28571429em; + -webkit-animation: button-spin 0.6s linear; + animation: button-spin 0.6s linear; + -webkit-animation-iteration-count: infinite; + animation-iteration-count: infinite; + border-radius: 500rem; + border-color: #fff transparent transparent; + border-style: solid; + border-width: 0.2em; + -webkit-box-shadow: 0 0 0 1px transparent; + box-shadow: 0 0 0 1px transparent; +} +.sb-btn-outline-disabled { + background-color: #ffffff; + border: 1px solid #cccccc; + color: #999999; + cursor: default; + font-weight: 400; +} + +lib-chat-window, +.chat_bot { + display: none !important; +} +.sb-textbox::-webkit-input-placeholder { + color: var(--gray-100) !important; + font-weight: 600 !important; +} +.treepicker-parent { + margin: 0.6rem 0 !important; +} +.ck-content ul { + list-style-type: disc !important; + li { + margin-bottom: 0px !important; } - sb-dynamic-richtext +} +sb-dynamic-richtext .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar { - border-left: 1px solid #c4c4c4 !important; - border-right: 1px solid #c4c4c4 !important; - border-bottom-left-radius: 0 !important; - border-bottom-right-radius: 0 !important; - border-bottom: 0 !important; - } - sb-dynamic-richtext + border-left: 1px solid #c4c4c4 !important; + border-right: 1px solid #c4c4c4 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; + border-bottom: 0 !important; +} +sb-dynamic-richtext .ck-rounded-corners .ck.ck-editor__main > .ck-editor__editable, - sb-dynamic-richtext +sb-dynamic-richtext .ck.ck-editor__main > .ck-editor__editable.ck-rounded-corners { - border: 1px solid #c4c4c4 !important; - border-color: var(--ck-color-base-border) !important; - } + border: 1px solid #c4c4c4 !important; + border-color: var(--ck-color-base-border) !important; +} - sb-dynamic-richtext .ck-content .table { - margin: 0.8rem 0 !important; - } +sb-dynamic-richtext .ck-content .table { + margin: 0.8rem 0 !important; +} - .sb-textbox, - .sb-textarea { - &::placeholder { - color: #333 !important; - font-weight: 500 !important; - } +.sb-textbox, +.sb-textarea { + &::placeholder { + color: #333 !important; + font-weight: 500 !important; } +} - .multi-select-container { - .sb-modal-dropdown-web { - ul { - border: 1px solid #d6d4d4 !important; - box-shadow: 0 0 2px #cecaca !important; - } +.multi-select-container { + .sb-modal-dropdown-web { + ul { + border: 1px solid #d6d4d4 !important; + box-shadow: 0 0 2px #cecaca !important; } } +} - .sb-disabled-textarea { - background: var(--gray-0) !important; - border: 0.0625rem solid var(--gray-100) !important; - opacity: 0.45 !important; - pointer-events: none !important; - font-size: 1em !important; - } +.sb-disabled-textarea { + background: var(--gray-0) !important; + border: 0.0625rem solid var(--gray-100) !important; + opacity: 0.45 !important; + pointer-events: none !important; + font-size: 1em !important; +} - .overflow-y { - overflow-y: auto; - } +.overflow-y { + overflow-y: auto; +} +input:focus-visible { + border: none !important; +} + +.dialcodeModal { input:focus-visible { - border: none !important; + border: .0625rem solid #999999 !important; } - - .dialcodeModal { - input:focus-visible { - border: .0625rem solid #999999 !important; - } +} +// Fancy tree css +#fancytree-drop-marker.fa-long-arrow-right:before{ + content: " " !important; +} +.sb-collectionTree-fancyTreelist { + ul> li> span:first-child{ + padding: 15px 33px; } - // Fancy tree css - #fancytree-drop-marker.fa-long-arrow-right:before{ - content: " " !important; + .fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{ + background: none !important; } - .sb-collectionTree-fancyTreelist { - ul> li> span:first-child{ - padding: 15px 33px; - } - .fancytree-exp-n span.fancytree-expander,.fancytree-exp-nl span.fancytree-expander{ - background: none !important; - } - .ui-fancytree:before, .ui-fancytree ul:before{ - content: none !important; - } - .ui-fancytree li:before, .ui-fancytree ul li:before{ - content: none !important; - } - .ui-fancytree li .fancytree-custom-icon::before { - color: var(--primary-color)!important; - margin-left: 5px; - } - .ui-fancytree .fancytree-folder .fancytree-title { - color: var(--primary-color)!important; - font-size: .9286rem!important; - font-weight: 700!important; - padding-left: 5px; - width: inherit!important; - } - .ui-fancytree .fa-caret-right, .ui-fancytree .fa-caret-down, .ui-fancytree ul .fa-caret-right, .ui-fancytree ul .fa-caret-down{ - display: block !important; - } - - ul.fancytree-container{ - font-size: inherit !important; - font-family: inherit !important; - border: none !important; - } - ul.fancytree-connectors.fancytree-container li{ - background-image: none !important; - } - span.fancytree-node{ - width: inherit !important; - } - span.fancytree-active span.fancytree-title, span.fancytree-selected span.fancytree-title{ - background: none !important; - } - .fancytree-treefocus span.fancytree-active span.fancytree-title, .fancytree-treefocus span.fancytree-selected span.fancytree-title{ - background: none !important; - } - .fancytree-exp-edl span.fancytree-expander, .fancytree-exp-el span.fancytree-expander{ - background-position: -34px -94px; - } - span.fancytree-focused span.fancytree-title{ - outline: 0 !important; - } - .ui-fancytree{ - margin:0 !important; - } - &.ui-fancytree, .ui-fancytree ul{ - margin: 0 0 0 0.625rem !important; - } - .fancytree-exp-e span.fancytree-expander, .fancytree-exp-ed span.fancytree-expander{ - background-position: -32px -68px !important; - } - .fancytree-exp-edl span.fancytree-expander, .fancytree-exp-el span.fancytree-expander{ - background-position: -34px -94px !important; - } - .fancytree-treefocus span.fancytree-active span.fancytree-title,.fancytree-treefocus span.fancytree-selected span.fancytree-title{ - color:inherit; - } + .ui-fancytree:before, .ui-fancytree ul:before{ + content: none !important; } - .sb-loader { - position: fixed; - top: 0%; - left: 23%; - transform: translate(-50%, -50%); - &:after { - content: ''; - width: 32px; - height: 32px; - border-radius: 50%; - border: 2px solid; - border-color: #ccc #ccc transparent; - animation: loader 0.5s infinite; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - } - &.dimmer { - width: 100%; - height: 100%; - background: rgba(0, 0, 0, 0.8); - z-index: 9999; - } + .ui-fancytree li:before, .ui-fancytree ul li:before{ + content: none !important; } - @keyframes loader { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } + .ui-fancytree li .fancytree-custom-icon::before { + color: var(--primary-color)!important; + margin-left: 5px; } - .sb-success-loader { - position: absolute !important; - top: 46% !important; - left: -12% !important; - transform: translate(-46%, -50%) !important; - &:after { - width: 1.2rem !important; - height: 1.2rem !important; - } + .ui-fancytree .fancytree-folder .fancytree-title { + color: var(--primary-color)!important; + font-size: .9286rem!important; + font-weight: 700!important; + padding-left: 5px; + width: inherit!important; } - .pos-relative { - position: relative; + .ui-fancytree .fa-caret-right, .ui-fancytree .fa-caret-down, .ui-fancytree ul .fa-caret-right, .ui-fancytree ul .fa-caret-down{ + display: block !important; } - .sb-circle-ul { - list-style-type: disc; - padding: 0; - font-size: 0.785rem; - li { - margin: 0 !important; - line-height: 1.4; - } + ul.fancytree-container{ + font-size: inherit !important; + font-family: inherit !important; + border: none !important; } - .sb-bg-color-success-0 { - background: #e1ffdf; + ul.fancytree-connectors.fancytree-container li{ + background-image: none !important; } - .flex-ai-center { - align-self: center !important; + span.fancytree-node{ + width: inherit !important; } - .sb-br-primary { - border: 1px dashed #aedbfd !important; + span.fancytree-active span.fancytree-title, span.fancytree-selected span.fancytree-title{ + background: none !important; } - - .sb-min-h-250 { - min-height: 250px; + .fancytree-treefocus span.fancytree-active span.fancytree-title, .fancytree-treefocus span.fancytree-selected span.fancytree-title{ + background: none !important; } - .z-index-9 { - .menu { - z-index: 99999 !important; - } + .fancytree-exp-edl span.fancytree-expander, .fancytree-exp-el span.fancytree-expander{ + background-position: -34px -94px; } - .p-50 { - padding: 10px 0 10px 50px; + span.fancytree-focused span.fancytree-title{ + outline: 0 !important; } - .h-1 { - height: 1.1em !important; + .ui-fancytree{ + margin:0 !important; } - .mn-15 { - margin: -15px !important; + &.ui-fancytree, .ui-fancytree ul{ + margin: 0 0 0 0.625rem !important; } - .upload-input-button { - position: relative; + .fancytree-exp-e span.fancytree-expander, .fancytree-exp-ed span.fancytree-expander{ + background-position: -32px -68px !important; } - .upload-input-button input { + .fancytree-exp-edl span.fancytree-expander, .fancytree-exp-el span.fancytree-expander{ + background-position: -34px -94px !important; + } + .fancytree-treefocus span.fancytree-active span.fancytree-title,.fancytree-treefocus span.fancytree-selected span.fancytree-title{ + color:inherit; + } +} +.sb-loader { + position: fixed; + top: 0%; + left: 23%; + transform: translate(-50%, -50%); + &:after { + content: ''; + width: 32px; + height: 32px; + border-radius: 50%; + border: 2px solid; + border-color: #ccc #ccc transparent; + animation: loader 0.5s infinite; position: absolute; - opacity: 0; - left: 0; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); } - .bg-none { - background: none; + &.dimmer { + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.8); + z-index: 9999; } - .label-disable { - opacity: 0.3 !important; - font-weight: 500 !important; +} +@keyframes loader { + 0% { + transform: rotate(0deg); } - .sb-folder-menu { - position: absolute; - /*top: 131px;*/ - left: 35px; - display: flex; - justify-content: space-between; - width: 24%; - margin-top: 5px; - } - .sb-disable-icon{color:#ccc !important;} - .sb-w-240px{width:240px} - .showCollaborator{ - .ui.dimmer{ - overflow-y: unset !important; - } - .ui.segment{ - max-height: calc(80vh - 8em) !important; - overflow-y: auto !important; - } - .sb-modal-content{ - .flex-align-item-center{ - border-bottom: solid 1px #ccc; - margin: 0px -16px; - padding: 0 20px; - } - } - .ui.pointing{ - margin: 0 -15px !important; - .item{ - &.active{ - font-weight: 600 !important; - } + 100% { + transform: rotate(360deg); + } +} +.sb-success-loader { + position: absolute !important; + top: 46% !important; + left: -12% !important; + transform: translate(-46%, -50%) !important; + &:after { + width: 1.2rem !important; + height: 1.2rem !important; + } +} +.pos-relative { + position: relative; +} + +.sb-circle-ul { + list-style-type: disc; + padding: 0; + font-size: 0.785rem; + li { + margin: 0 !important; + line-height: 1.4; + } +} +.sb-bg-color-success-0 { + background: #e1ffdf; +} +.flex-ai-center { + align-self: center !important; +} +.sb-br-primary { + border: 1px dashed #aedbfd !important; +} + +.sb-min-h-250 { + min-height: 250px; +} +.z-index-9 { + .menu { + z-index: 99999 !important; + } +} +.p-50 { + padding: 10px 0 10px 50px; +} +.h-1 { + height: 1.1em !important; +} +.mn-15 { + margin: -15px !important; +} +.upload-input-button { + position: relative; +} +.upload-input-button input { + position: absolute; + opacity: 0; + left: 0; +} +.bg-none { + background: none; +} +.label-disable { + opacity: 0.3 !important; + font-weight: 500 !important; +} +.sb-folder-menu { + position: absolute; + /*top: 131px;*/ + left: 35px; + display: flex; + justify-content: space-between; + width: 24%; + margin-top: 5px; +} +.sb-disable-icon{color:#ccc !important;} +.sb-w-240px{width:240px} +.showCollaborator{ + .ui.dimmer{ + overflow-y: unset !important; + } + .ui.segment{ + max-height: calc(80vh - 8em) !important; + overflow-y: auto !important; + } + .sb-modal-content{ + .flex-align-item-center{ + border-bottom: solid 1px #ccc; + margin: 0px -16px; + padding: 0 20px; + } + } + .ui.pointing{ + margin: 0 -15px !important; + .item{ + &.active{ + font-weight: 600 !important; } } } - .publish-checklist{ - label { +} +.publish-checklist{ + label { font-size: 13px !important; padding: 0 1.5rem !important; - } } - .sb-keywords{ - input{ - width: 100%; - } - input::placeholder{ - display: block !important; - width: 100%; - } - .ng2-tags-container{ - width: inherit !important; - display: block !important; - tag{ - display: inline-flex !important; - } +} +.sb-keywords{ + input{ + width: 100%; + } + input::placeholder{ + display: block !important; + width: 100%; + } + .ng2-tags-container{ + width: inherit !important; + display: block !important; + tag{ + display: inline-flex !important; } } - .sb-dialcode { - border-bottom: 0.5px solid #333333; - padding: 8px 5px !important; +} +.sb-dialcode { + border-bottom: 0.5px solid #333333; + padding: 8px 5px !important; + border-radius: 0 !important; + &:focus-visible{ + border-bottom: 0.5px solid #333333 !important; border-radius: 0 !important; + outline: 0 !important; + } +} +sb-dynamic-timer{ + .sb-timer-input{ + width: 10rem; + font-size: .785rem!important; + border: 1px solid rgba(34,36,38,.15)!important; + border-radius: .28571429rem; + padding: 12px 10px; + margin-right: 5px; + height: 44px; &:focus-visible{ - border-bottom: 0.5px solid #333333 !important; - border-radius: 0 !important; - outline: 0 !important; + border: 1px solid rgba(34,36,38,.15)!important; } } - sb-dynamic-timer{ - .sb-timer-input{ - width: 10rem; - font-size: .785rem!important; - border: 1px solid rgba(34,36,38,.15)!important; - border-radius: .28571429rem; - padding: 12px 10px; - margin-right: 5px; - height: 44px; - &:focus-visible{ - border: 1px solid rgba(34,36,38,.15)!important; - } - } - .sb-btn-normal{ - height: 42px !important; - } + .sb-btn-normal{ + height: 42px !important; } -} +} \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/editor/editor.component.spec.data.ts b/projects/collection-editor-library/src/lib/components/editor/editor.component.spec.data.ts index 8f44058fe..f77560af8 100644 --- a/projects/collection-editor-library/src/lib/components/editor/editor.component.spec.data.ts +++ b/projects/collection-editor-library/src/lib/components/editor/editor.component.spec.data.ts @@ -1,334 +1,136 @@ -import { IEditorConfig } from "collection-editor-library/lib/interfaces/editor"; +import { IEditorConfig } from 'collection-editor-library/lib/interfaces/editor'; export let editorConfig: IEditorConfig | undefined; -export let editorConfig_question: IEditorConfig | undefined; - editorConfig = { context: { - framework: "test", + framework: 'test', user: { - id: "5a587cc1-e018-4859-a0a8-e842650b9d64", - name: "Vaibhav", - orgIds: ["01309282781705830427"], + id: '5a587cc1-e018-4859-a0a8-e842650b9d64', + name: 'Vaibhav', + orgIds: [ + '01309282781705830427' + ] }, - identifier: "do_113274017771085824116", - unitIdentifier: "do_113274017771085824119", - collectionObjectType: "", - channel: "01307938306521497658", - authToken: " ", - sid: "iYO2K6dOSdA0rwq7NeT1TDzS-dbqduvV", - did: "7e85b4967aebd6704ba1f604f20056b6", - uid: "bf020396-0d7b-436f-ae9f-869c6780fc45", + identifier: 'do_113274017771085824116', + channel: '01307938306521497658', + authToken: ' ', + sid: 'iYO2K6dOSdA0rwq7NeT1TDzS-dbqduvV', + did: '7e85b4967aebd6704ba1f604f20056b6', + uid: 'bf020396-0d7b-436f-ae9f-869c6780fc45', additionalCategories: [ { - value: "Textbook", - label: "Textbook", + value: 'Textbook', + label: 'Textbook' }, { - value: "Lesson Plan", - label: "Lesson Plan", - }, + value: 'Lesson Plan', + label: 'Lesson Plan' + } ], pdata: { - id: "dev.dock.portal", - ver: "2.8.0", - pid: "creation-portal", + id: 'dev.dock.portal', + ver: '2.8.0', + pid: 'creation-portal' }, contextRollup: { - l1: "01307938306521497658", + l1: '01307938306521497658' }, - tags: ["01307938306521497658"], + tags: [ + '01307938306521497658' + ], cdata: [ { - id: "01307938306521497658", - type: "sourcing_organization", + id: '01307938306521497658', + type: 'sourcing_organization' }, { - type: "project", - id: "ec5cc850-3f71-11eb-aae1-fb99d9fb6737", + type: 'project', + id: 'ec5cc850-3f71-11eb-aae1-fb99d9fb6737' }, { - type: "linked_collection", - id: "do_113140468925825024117", - }, + type: 'linked_collection', + id: 'do_113140468925825024117' + } ], timeDiff: 5, objectRollup: { - l1: "do_113140468925825024117", - l2: "do_113140468926914560125", + l1: 'do_113140468925825024117', + l2: 'do_113140468926914560125' }, - host: "", - defaultLicense: "CC BY 4.0", - endpoint: "/data/v3/telemetry", - env: "question_set", + host: '', + defaultLicense: 'CC BY 4.0', + endpoint: '/data/v3/telemetry', + env: 'question_set', cloudStorageUrls: [ - "https://s3.ap-south-1.amazonaws.com/ekstep-public-qa/", - "https://ekstep-public-qa.s3-ap-south-1.amazonaws.com/", - "https://dockstorage.blob.core.windows.net/sunbird-content-dock/", + 'https://s3.ap-south-1.amazonaws.com/ekstep-public-qa/', + 'https://ekstep-public-qa.s3-ap-south-1.amazonaws.com/', + 'https://dockstorage.blob.core.windows.net/sunbird-content-dock/' ], - mode: "edit", + mode: 'edit', }, config: { - mode: "edit", + mode: 'edit', maxDepth: 2, - objectType: "Collection", - primaryCategory: "Course", - isReadOnlyMode: false, + objectType: 'Collection', + primaryCategory: 'Course', isRoot: true, dialcodeMinLength: 2, dialcodeMaxLength: 250, - iconClass: "fa fa-book", + iconClass: 'fa fa-book', children: {}, - renderTaxonomy:false, hierarchy: { level1: { - name: "Module", - type: "Unit", - mimeType: "application/vnd.ekstep.content-collection", - contentType: "CourseUnit", - primaryCategory: "Course Unit", - iconClass: "fa fa-folder-o", - children: {}, + name: 'Module', + type: 'Unit', + mimeType: 'application/vnd.ekstep.content-collection', + contentType: 'CourseUnit', + primaryCategory: 'Course Unit', + iconClass: 'fa fa-folder-o', + children: {} }, level2: { - name: "Sub-Module", - type: "Unit", - mimeType: "application/vnd.ekstep.content-collection", - contentType: "CourseUnit", - primaryCategory: "Course Unit", - iconClass: "fa fa-folder-o", + name: 'Sub-Module', + type: 'Unit', + mimeType: 'application/vnd.ekstep.content-collection', + contentType: 'CourseUnit', + primaryCategory: 'Course Unit', + iconClass: 'fa fa-folder-o', children: { Content: [ - "Explanation Content", - "Learning Resource", - "eTextbook", - "Teacher Resource", - "Course Assessment", - ], - }, + 'Explanation Content', + 'Learning Resource', + 'eTextbook', + 'Teacher Resource', + 'Course Assessment' + ] + } }, level3: { - name: "Sub-Sub-Module", - type: "Unit", - mimeType: "application/vnd.ekstep.content-collection", - contentType: "CourseUnit", - primaryCategory: "Course Unit", - iconClass: "fa fa-folder-o", + name: 'Sub-Sub-Module', + type: 'Unit', + mimeType: 'application/vnd.ekstep.content-collection', + contentType: 'CourseUnit', + primaryCategory: 'Course Unit', + iconClass: 'fa fa-folder-o', children: { Content: [ - "Explanation Content", - "Learning Resource", - "eTextbook", - "Teacher Resource", - "Course Assessment", - ], - }, - }, + 'Explanation Content', + 'Learning Resource', + 'eTextbook', + 'Teacher Resource', + 'Course Assessment' + ] + } + } }, collection: { - maxContentsLimit: 10, - }, - questionSet: { - maxQuestionsLimit: 10, - }, - contentPolicyUrl: "/term-of-use.html", - }, -}; - -editorConfig_question = { - context: { - channel: "01309282781705830427", - authToken: "", - sid: "c4hzzUJYlbfLPoN2meEF6QfF3V_9o5Us", - did: "6539921a5736199d5e1ff5b923776c23", - uid: "ae94b68c-a535-4dce-8e7a-fb9662b0ad68", - programId: "f09a30f0-5e34-11ec-874d-3de2a8c29d94", - contributionOrgId: "e7328d77-42a7-44c8-84f4-8cfea235f07d", - pdata: { - id: "local.sunbird.portal", - ver: "2.8.0", - pid: "sunbird-portal", - }, - actor: { - id: "ae94b68c-a535-4dce-8e7a-fb9662b0ad68", - type: "User", + maxContentsLimit: 10 }, - contextRollup: { - l1: "01309282781705830427", - }, - tags: ["01309282781705830427", "01309282781705830427"], - timeDiff: -0.877, - endpoint: "/data/v3/telemetry", - env: "question_editor", - user: { - id: "ae94b68c-a535-4dce-8e7a-fb9662b0ad68", - orgIds: ["01309282781705830427"], - organisations: { - "01309282781705830427": "NIT", - }, - fullName: "N150", - firstName: "N150", - lastName: "", - isRootOrgAdmin: false, - }, - targetFWIds: ["nit_k-12"], - channelData: { - code: "01309282781705830427", - frameworks: [], - channel: "in.ekstep", - description: "Preprod Kayal Org", - createdOn: "2020-08-24T05:00:51.381+0000", - objectType: "Channel", - collectionPrimaryCategories: [ - "Content Playlist", - "Course", - "Digital Textbook", - "Question paper", - ], - appId: "@ignore@", - primaryCategories: [], - additionalCategories: [ - "DigitalCourse", - "DigitalCourse1", - "DigitalCourse2", - "Exam Question Set", - "LearningPath1", - "Observation", - "Survey", - "Text Asset", - "Video transcript", - ], - lastUpdatedOn: "2021-04-09T13:43:13.465+0000", - collectionAdditionalCategories: ["Textbook", "Lesson Plan"], - contentAdditionalCategories: [ - "Classroom Teaching Video", - "Concept Map", - "Curiosity Question Set", - "Experiential Resource", - "Explanation Video", - "Focus Spot", - "Learning Outcome Definition", - "Lesson Plan", - "Marking Scheme Rubric", - "Pedagogy Flow", - "Previous Board Exam Papers", - "TV Lesson", - "Textbook", - ], - apoc_num: 1, - identifier: "01309282781705830427", - lastStatusChangedOn: "2020-08-24T05:00:51.381+0000", - consumerId: "7411b6bd-89f3-40ec-98d1-229dc64ce77d", - assetAdditionalCategories: [], - languageCode: [], - versionKey: "1617975793465", - contentPrimaryCategories: [ - "Course Assessment", - "eTextbook", - "Explanation Content", - "Learning Resource", - "Practice Question Set", - "Teacher Resource", - "Exam Question", - ], - name: "NIT123", - defaultCourseFramework: "TPD", - assetPrimaryCategories: ["Asset", "CertAsset", "Certificate Template"], - status: "Live", - defaultFramework: "ekstep_ncert_k-12", - }, - labels: { - submit_collection_btn_label: "Submit for review", - publish_collection_btn_label: "Submit for Approval", - sourcing_approve_collection_btn_label: "Publish", - reject_collection_btn_label: "Request changes", - }, - framework: "ekstep_ncert_k-12", - correctionComments: "", - sourcingResourceStatus: "Draft", - sourcingResourceStatusClass: "sb-color-gray-300", - collectionIdentifier: "do_113431883451195392169", - unitIdentifier: "do_113431884671442944170", - collectionObjectType: "QuestionSet", - collectionPrimaryCategory: "Exam Question Set", - }, - config: { - primaryCategory: "Subjective Question", - objectType: "Question", - mode: "edit", - setDefaultCopyRight: false, - showOriginPreviewUrl: false, - showSourcingStatus: false, - showCorrectionComments: false, - enableBulkUpload: false, - publicStorageAccount: "https://dockstorage.blob.core.windows.net/", - hideSubmitForReviewBtn: false, questionSet: { - maxQuestionsLimit: 500, - }, - collection: { - maxContentsLimit: 1200, + maxQuestionsLimit: 10 }, - editableFields: { - orgreview: ["name", "learningOutcome"], - sourcingreview: ["name", "learningOutcome"], - }, - mimeType: "application/vnd.sunbird.question", - isReadOnlyMode: false, - interactionType: "default", - questionCategory: "VSA", - }, -}; - -export const toolbarConfig_question = { - preview_collection_btn_label: "Preview", - preview_collection_btn_icon: "icon eye", - save_collection_btn_label: "Save as Draft", - save_collection_btn_icon: "", - submit_collection_btn_label: "Submit for review", - submit_collection_btn_icon: "", - reject_collection_btn_label: "Request changes", - reject_collection_btn_icon: "", - publish_collection_btn_label: "Submit for Approval", - publish_collection_btn_icon: "", - edit_question_btn_label: "Edit", - edit_question_btn_icon: "icon edit", - preview_question_btn_label: "Preview", - preview_question_btn_icon: "icon eye", - cancel_question_btn_label: "Cancel", - cancel_question_btn_icon: "", - save_question_btn_label: "Save", - save_question_btn_icon: "", - send_back_for_correction_collection_btn_label: "Send Back For Corrections", - send_back_for_correction_collection_btn_icon: "", - sourcing_approve_collection_btn_label: "Publish", - sourcing_approve_collection_btn_icon: "", - sourcing_reject_collection_btn_label: "Reject", - sourcing_reject_collection_btn_icon: "", - upload_use_btn_label: "Upload and Use", - cancel_btn_label: "Cancel", - back_btn_label: "Back", - search_btn_label: "Search", - add_btn_label: "Add", - upload_from_computer_btn_label: "Upload from Computer", - request_btn_label: "Request", - no_btn_label: "No", - yes_btn_label: "Yes", - close_btn_label: "Close", - submit_btn_label: "Submit", - add_sibling_btn_label: "Add Sibling", - add_child_btn_label: "Add Child", - create_new_btn_label: "Create New", - add_from_library_btn_label: " Add from library", - submit_review_btn_label: "Submit Review", - apply_btn_label: "Apply", - reset_btn_label: "Reset", - delete_btn_label: "Delete", - next_btn_label: "Next", - remove_btn_label: "Remove", - done_btn_label: "Done", - showDialcode: "no", - showBulkUploadBtn: false, -}; + contentPolicyUrl: '/term-of-use.html' + } +} export const nativeElement = `
-
+
\ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.scss b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.scss index 30203dc0c..1acb52b92 100644 --- a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.scss +++ b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.scss @@ -7,13 +7,13 @@ &:before { background: none !important; } - + ul { &::before { background: none !important; } } - + .fancytree-folder { .fancytree-title { color: var(--primary-color) !important; @@ -22,23 +22,18 @@ padding-left: 5px; width: inherit !important; } - .fancytree-title.highlightNode { + .highlightNode { color: red !important; &::before { color: red !important; } } } - + li { padding: 0; margin: 0 0 1px 0; - - .highlightNode { - color: red !important; - } - .fancytree { &-ico-c{ padding-left: 5px !important; @@ -61,16 +56,16 @@ border-top: none; } } - + &:last-child { &:after { display: none; } } - + ul { padding-top: 1px; - + li { list-style-type: none;; .fancytree-custom-icon { @@ -82,26 +77,19 @@ margin-left: 6px; font-size: 16px; } - + &:last-child { &:after { display: none; } } } - - - .fancytree-custom-icon.highlightNode { - &::before { - color: red !important; - } - } .fancytree-node { padding: 6px 6px 8px 5px; margin-left: 45px; border: 1px solid transparent; - + &.fancytree-active, &.fancytree-focused, &:hover { @@ -109,22 +97,18 @@ background-color: var(--primary-0); border-right: 0; } - - &.dependent { - margin-left: 65px; - } } } } - + &::before { background: none !important; } - + .sb-fancyTree-icon { color: var(--gray-300) !important; } - + .fancytree-custom-icon { &::before { // content: url("/assets/images/question_collection.svg"); @@ -133,14 +117,14 @@ } } } - + .fa-caret-down { margin-top: 6px; display: block; width: 10px; padding-left: 2px; } - + .fa-caret-right { margin-top: 6px; display: block; @@ -148,7 +132,7 @@ padding-left: 6px; } } - + .ui-fancytree { padding-right: 0.785rem; // height: calc(100vh - 126px); diff --git a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.data.ts b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.data.ts index 014246910..a05619147 100644 --- a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.data.ts +++ b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.data.ts @@ -1,245 +1,234 @@ -export const mockData = { - config: { +export const mockData = { + config: { mode: 'edit', maxDepth: 2, objectType: 'Collection', primaryCategory: 'Course', isRoot: true, iconClass: 'fa fa-book', - children: [ - 'do_123' - ], - enableQuestionCreation: false, + children: {}, hierarchy: { - level1: { - name: 'Module', - type: 'Unit', - mimeType: 'application/vnd.ekstep.content-collection', - contentType: 'Course Unit', - iconClass: 'fa fa-folder-o', - children: { - Content: [ - 'Explanation Content', - 'Learning Resource', - 'eTextbook', - 'Teacher Resource', - 'Course Assessment' - ] - } - }, - level2: { - name: 'Sub-Module', - type: 'Unit', - mimeType: 'application/vnd.ekstep.content-collection', - contentType: 'Course Unit', - iconClass: 'fa fa-folder-o', - children: { - Content: [ - 'Explanation Content', - 'Learning Resource', - 'eTextbook', - 'Teacher Resource', - 'Course Assessment' - ] + level1: { + name: 'Module', + type: 'Unit', + mimeType: 'application/vnd.ekstep.content-collection', + contentType: 'Course Unit', + iconClass: 'fa fa-folder-o', + children: {} + }, + level2: { + name: 'Sub-Module', + type: 'Unit', + mimeType: 'application/vnd.ekstep.content-collection', + contentType: 'Course Unit', + iconClass: 'fa fa-folder-o', + children: { + Content: [ + 'Explanation Content', + 'Learning Resource', + 'eTextbook', + 'Teacher Resource', + 'Course Assessment' + ] + } } - } } } }; export const config = { - 'labelConfig': { - 'messages': { - 'error': { - '007': "Test" + 'labelConfig': { + 'messages': { + 'error': { + '007': "Test" + } } } } -} export const treeData = { - "ownershipType": [ - "createdBy" - ], - "parent": "do_113274019351052288119", - "code": "8e6af9b3-5d1e-af9c-8546-4fd6b4e3dcd3", - "credentials": { - "enabled": "No" - }, - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.ekstep.content-collection", - "idealScreenSize": "normal", - "createdOn": "2021-05-11T12:30:17.357+0000", - "objectType": "Content", - "primaryCategory": "Course Unit", - "children": [ - { - "ownershipType": [ - "createdBy" - ], - "parent": "do_113277071092588544112", - "unitIdentifiers": [ - "do_11328844424763801613560" - ], - "copyright": "vaidehi_Instituations", - "previewUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_113289107070615552146/artifact/do_113289107070615552146_1622205453434_do_11328844752160358413583_1622124964912_webm1-copy1.webm", - "keywords": [ - "1.2" - ], - "subject": [ - "Hindi" - ], - "channel": "01309282781705830427", - "downloadUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/ecar_files/do_113289107070615552146/1.2_1622205456360_do_113289107070615552146_1.0.ecar", - "language": [ - "English" - ], - "source": "https://dock.sunbirded.org/api/content/v1/read/do_11328844752160358413583", - "mimeType": "video/webm", - "variants": { - "spine": { - "ecarUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/ecar_files/do_113289107070615552146/1.2_1622205457383_do_113289107070615552146_1.0_spine.ecar", - "size": 7399 - } - }, - "objectType": "Content", - "se_mediums": [ - "English" - ], - "gradeLevel": [ - "Class 10" - ], - "appIcon": "https://dockstorage.blob.core.windows.net/sunbird-content-dock/content/do_11328844752160358413583/artifact/book.thumb.jpg", - "primaryCategory": "Explanation Content", - "appId": "dev.dock.portal", - "contentEncoding": "identity", - "artifactUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_113289107070615552146/artifact/do_113289107070615552146_1622205453434_do_11328844752160358413583_1622124964912_webm1-copy1.webm", - "sYS_INTERNAL_LAST_UPDATED_ON": "2021-05-28T12:40:03.827+0000", - "contentType": "ClassroomTeachingVideo", - "se_gradeLevels": [ - "Class 10" - ], - "trackable": { - "enabled": "No", - "autoBatch": "No" - }, - "identifier": "do_113289107070615552146", - "audience": [ - "Student" - ], - "visibility": "Default", - "discussionForum": { - "enabled": "Yes" - }, - "index": 26, - "mediaType": "content", - "osId": "org.ekstep.quiz.app", - "languageCode": [ - "en" - ], - "lastPublishedBy": "5a587cc1-e018-4859-a0a8-e842650b9d64", - "version": 2, - "se_subjects": [ - "Hindi" - ], - "license": "CC BY 4.0", - "prevState": "Review", - "size": 2621252, - "lastPublishedOn": "2021-05-28T12:37:36.360+0000", - "name": "1.2", - "attributions": [ - "kayal" - ], - "status": "Live", - "code": "28f75944-ab47-2c12-e097-e44349ae50d9", - "credentials": { - "enabled": "No" - }, - "prevStatus": "Processing", - "origin": "do_11328844752160358413583", - "description": "", - "streamingUrl": "https://sunbirdspikemedia-inct.streaming.media.azure.net/92eb3b32-c03c-4a62-a97a-5c88e5ac516a/do_113289107070615552146_1622205.ism/manifest(format=m3u8-aapl-v3)", - "medium": [ - "English" - ], - "posterImage": "https://drive.google.com/uc?export=download&id=1-dFzAeSNmx1ZRn77CEntyQA-VcBE0PKg", - "idealScreenSize": "normal", - "createdOn": "2021-05-28T12:37:32.959+0000", - "se_boards": [ - "CBSE" - ], - "processId": "cb69d06d-1114-4a5c-8b44-28e106781eb8", - "contentDisposition": "inline", - "lastUpdatedOn": "2021-05-28T12:37:36.252+0000", - "originData": { - "identifier": "do_11328844752160358413583", - "repository": "https://dock.sunbirded.org/api/content/v1/read/do_11328844752160358413583" - }, - "collectionId": "do_11328844424709734413553", - "dialcodeRequired": "No", - "lastStatusChangedOn": "2021-05-28T12:37:37.734+0000", - "creator": "n123", - "os": [ - "All" - ], - "cloudStorageKey": "content/do_113289107070615552146/artifact/do_113289107070615552146_1622205453434_do_11328844752160358413583_1622124964912_webm1-copy1.webm", - "se_FWIds": [ - "ekstep_ncert_k-12" - ], - "pkgVersion": 1, - "versionKey": "1622205456252", - "idealScreenDensity": "hdpi", - "framework": "ekstep_ncert_k-12", - "depth": 3, - "s3Key": "ecar_files/do_113289107070615552146/1.2_1622205456360_do_113289107070615552146_1.0.ecar", - "lastSubmittedOn": "2021-05-28T12:37:35.110+0000", - "createdBy": "0ce5b67e-b48e-489b-a818-e938e8bfc14b", - "compatibilityLevel": 1, - "board": "CBSE", - "programId": "00b79bb0-bef5-11eb-84a1-d1e625ff89be" - } - ], - "contentDisposition": "inline", - "lastUpdatedOn": "2021-06-18T06:17:01.752+0000", - "contentEncoding": "gzip", - "contentType": "CourseUnit", - "dialcodeRequired": "No", - "trackable": { - "enabled": "No", - "autoBatch": "No" - }, - "identifier": "do_113277071092588544112", - "lastStatusChangedOn": "2021-05-11T12:30:17.357+0000", - "audience": [ - "Student" - ], - "os": [ - "All" - ], - "visibility": "Parent", - "discussionForum": { - "enabled": "Yes" - }, - "index": 1, - "mediaType": "content", - "osId": "org.ekstep.launcher", - "languageCode": [ - "en" - ], - "version": 2, - "versionKey": "1620736217357", - "license": "CC BY 4.0", - "idealScreenDensity": "hdpi", - "depth": 2, - "compatibilityLevel": 1, - "name": "Sub-Module", - "timeLimits": {}, - "status": "Draft", - "level": 3 -}; + "ownershipType": [ + "createdBy" + ], + "parent": "do_113274019351052288119", + "code": "8e6af9b3-5d1e-af9c-8546-4fd6b4e3dcd3", + "credentials": { + "enabled": "No" + }, + "channel": "01309282781705830427", + "language": [ + "English" + ], + "mimeType": "application/vnd.ekstep.content-collection", + "idealScreenSize": "normal", + "createdOn": "2021-05-11T12:30:17.357+0000", + "objectType": "Content", + "primaryCategory": "Course Unit", + "children": [ + { + "ownershipType": [ + "createdBy" + ], + "parent": "do_113277071092588544112", + "unitIdentifiers": [ + "do_11328844424763801613560" + ], + "copyright": "vaidehi_Instituations", + "previewUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_113289107070615552146/artifact/do_113289107070615552146_1622205453434_do_11328844752160358413583_1622124964912_webm1-copy1.webm", + "keywords": [ + "1.2" + ], + "subject": [ + "Hindi" + ], + "channel": "01309282781705830427", + "downloadUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/ecar_files/do_113289107070615552146/1.2_1622205456360_do_113289107070615552146_1.0.ecar", + "language": [ + "English" + ], + "source": "https://dock.sunbirded.org/api/content/v1/read/do_11328844752160358413583", + "mimeType": "video/webm", + "variants": { + "spine": { + "ecarUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/ecar_files/do_113289107070615552146/1.2_1622205457383_do_113289107070615552146_1.0_spine.ecar", + "size": 7399 + } + }, + "objectType": "Content", + "se_mediums": [ + "English" + ], + "gradeLevel": [ + "Class 10" + ], + "appIcon": "https://dockstorage.blob.core.windows.net/sunbird-content-dock/content/do_11328844752160358413583/artifact/book.thumb.jpg", + "primaryCategory": "Explanation Content", + "appId": "dev.dock.portal", + "contentEncoding": "identity", + "artifactUrl": "https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_113289107070615552146/artifact/do_113289107070615552146_1622205453434_do_11328844752160358413583_1622124964912_webm1-copy1.webm", + "sYS_INTERNAL_LAST_UPDATED_ON": "2021-05-28T12:40:03.827+0000", + "contentType": "ClassroomTeachingVideo", + "se_gradeLevels": [ + "Class 10" + ], + "trackable": { + "enabled": "No", + "autoBatch": "No" + }, + "identifier": "do_113289107070615552146", + "audience": [ + "Student" + ], + "visibility": "Default", + "discussionForum": { + "enabled": "Yes" + }, + "index": 26, + "mediaType": "content", + "osId": "org.ekstep.quiz.app", + "languageCode": [ + "en" + ], + "lastPublishedBy": "5a587cc1-e018-4859-a0a8-e842650b9d64", + "version": 2, + "se_subjects": [ + "Hindi" + ], + "license": "CC BY 4.0", + "prevState": "Review", + "size": 2621252, + "lastPublishedOn": "2021-05-28T12:37:36.360+0000", + "name": "1.2", + "attributions": [ + "kayal" + ], + "status": "Live", + "code": "28f75944-ab47-2c12-e097-e44349ae50d9", + "credentials": { + "enabled": "No" + }, + "prevStatus": "Processing", + "origin": "do_11328844752160358413583", + "description": "", + "streamingUrl": "https://sunbirdspikemedia-inct.streaming.media.azure.net/92eb3b32-c03c-4a62-a97a-5c88e5ac516a/do_113289107070615552146_1622205.ism/manifest(format=m3u8-aapl-v3)", + "medium": [ + "English" + ], + "posterImage": "https://drive.google.com/uc?export=download&id=1-dFzAeSNmx1ZRn77CEntyQA-VcBE0PKg", + "idealScreenSize": "normal", + "createdOn": "2021-05-28T12:37:32.959+0000", + "se_boards": [ + "CBSE" + ], + "processId": "cb69d06d-1114-4a5c-8b44-28e106781eb8", + "contentDisposition": "inline", + "lastUpdatedOn": "2021-05-28T12:37:36.252+0000", + "originData": { + "identifier": "do_11328844752160358413583", + "repository": "https://dock.sunbirded.org/api/content/v1/read/do_11328844752160358413583" + }, + "collectionId": "do_11328844424709734413553", + "dialcodeRequired": "No", + "lastStatusChangedOn": "2021-05-28T12:37:37.734+0000", + "creator": "n123", + "os": [ + "All" + ], + "cloudStorageKey": "content/do_113289107070615552146/artifact/do_113289107070615552146_1622205453434_do_11328844752160358413583_1622124964912_webm1-copy1.webm", + "se_FWIds": [ + "ekstep_ncert_k-12" + ], + "pkgVersion": 1, + "versionKey": "1622205456252", + "idealScreenDensity": "hdpi", + "framework": "ekstep_ncert_k-12", + "depth": 3, + "s3Key": "ecar_files/do_113289107070615552146/1.2_1622205456360_do_113289107070615552146_1.0.ecar", + "lastSubmittedOn": "2021-05-28T12:37:35.110+0000", + "createdBy": "0ce5b67e-b48e-489b-a818-e938e8bfc14b", + "compatibilityLevel": 1, + "board": "CBSE", + "programId": "00b79bb0-bef5-11eb-84a1-d1e625ff89be" + } + ], + "contentDisposition": "inline", + "lastUpdatedOn": "2021-06-18T06:17:01.752+0000", + "contentEncoding": "gzip", + "contentType": "CourseUnit", + "dialcodeRequired": "No", + "trackable": { + "enabled": "No", + "autoBatch": "No" + }, + "identifier": "do_113277071092588544112", + "lastStatusChangedOn": "2021-05-11T12:30:17.357+0000", + "audience": [ + "Student" + ], + "os": [ + "All" + ], + "visibility": "Parent", + "discussionForum": { + "enabled": "Yes" + }, + "index": 1, + "mediaType": "content", + "osId": "org.ekstep.launcher", + "languageCode": [ + "en" + ], + "version": 2, + "versionKey": "1620736217357", + "license": "CC BY 4.0", + "idealScreenDensity": "hdpi", + "depth": 2, + "compatibilityLevel": 1, + "name": "Sub-Module", + "timeLimits": {}, + "status": "Draft", + "level": 3 + }; export const tree = [ { @@ -518,1330 +507,76 @@ export const tree = [ }] export const editorConfig = { - config: { - "rejectCommentsMaxLength": 500, - "setDefaultCopyRight": true, - "showOriginPreviewUrl": false, - "showSourcingStatus": false, - "showCorrectionComments": false, - "assetConfig": { - "image": { - "size": "1", - "accepted": "png, jpeg" - }, - "video": { - "size": "50", - "accepted": "mp4, webm" - } - }, - "mode": "edit", - "maxDepth": 2, - "objectType": "Collection", - "primaryCategory": "Course", - "isRoot": true, - "dialcodeMinLength": 2, - "dialcodeMaxLength": 250, - "iconClass": "fa fa-book", - "children": {}, - "hierarchy": { - "level1": { - "name": "Module", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "CourseUnit", - "primaryCategory": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": {} - }, - "level2": { - "name": "Sub-Module", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "CourseUnit", - "primaryCategory": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [ - "Explanation Content", - "Learning Resource", - "eTextbook", - "Teacher Resource", - "Course Assessment" - ] - } - }, - "level3": { - "name": "Sub-Sub-Module", - "type": "Unit", - "mimeType": "application/vnd.ekstep.content-collection", - "contentType": "CourseUnit", - "primaryCategory": "Course Unit", - "iconClass": "fa fa-folder-o", - "children": { - "Content": [ - "Explanation Content", - "Learning Resource", - "eTextbook", - "Teacher Resource", - "Course Assessment" - ] - } - } - }, - "contentPolicyUrl": "/term-of-use.html" - } -} - -export const TargetNodeMockData = { - data: { - id: "do_1134460323604971521236", - primaryCategory: "Date", - objectType: "Question", - metadata: { - parent: "do_1134347209749299201119", - code: "6ce6f7de-c4e6-89a1-1ddc-3889140601cd", - subject: ["Mathematics"], - channel: "01309282781705830427", - language: ["English"], - branchingLogic: { - "do_113449672558780416163": { - "target": [ - "do_113449775832088576181", - "do_113449787008081920183", - "do_113449808985628672185", - "do_11345671149997260811" - ], - "preCondition": {}, - "source": [] - }, - "do_113449775832088576181": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "eq": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 0 - ] - ] - } - ] + config: { + "rejectCommentsMaxLength": 500, + "setDefaultCopyRight": true, + "showOriginPreviewUrl": false, + "showSourcingStatus": false, + "showCorrectionComments": false, + "assetConfig": { + "image": { + "size": "1", + "accepted": "png, jpeg" + }, + "video": { + "size": "50", + "accepted": "mp4, webm" } - }, - "do_113449787008081920183": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "ne": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 1 + }, + "mode": "edit", + "maxDepth": 2, + "objectType": "Collection", + "primaryCategory": "Course", + "isRoot": true, + "dialcodeMinLength": 2, + "dialcodeMaxLength": 250, + "iconClass": "fa fa-book", + "children": {}, + "hierarchy": { + "level1": { + "name": "Module", + "type": "Unit", + "mimeType": "application/vnd.ekstep.content-collection", + "contentType": "CourseUnit", + "primaryCategory": "Course Unit", + "iconClass": "fa fa-folder-o", + "children": {} + }, + "level2": { + "name": "Sub-Module", + "type": "Unit", + "mimeType": "application/vnd.ekstep.content-collection", + "contentType": "CourseUnit", + "primaryCategory": "Course Unit", + "iconClass": "fa fa-folder-o", + "children": { + "Content": [ + "Explanation Content", + "Learning Resource", + "eTextbook", + "Teacher Resource", + "Course Assessment" ] - ] } - ] - } - }, - "do_113449808985628672185": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "eq": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 0 - ] - ] - } - ] - } - }, - "do_11345671149997260811": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "eq": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 0 + }, + "level3": { + "name": "Sub-Sub-Module", + "type": "Unit", + "mimeType": "application/vnd.ekstep.content-collection", + "contentType": "CourseUnit", + "primaryCategory": "Course Unit", + "iconClass": "fa fa-folder-o", + "children": { + "Content": [ + "Explanation Content", + "Learning Resource", + "eTextbook", + "Teacher Resource", + "Course Assessment" ] - ] } - ] } - } - }, - medium: ["English"], - mimeType: "application/vnd.sunbird.question", - createdOn: "2021-12-21T10:31:41.865+0000", - objectType: "Question", - gradeLevel: ["Class 4"], - primaryCategory: "Date", - contentDisposition: "inline", - lastUpdatedOn: "2021-12-21T10:35:09.785+0000", - contentEncoding: "gzip", - showSolutions: "No", - allowAnonymousAccess: "Yes", - identifier: "do_1134355574936780801170", - lastStatusChangedOn: "2021-12-21T10:31:41.865+0000", - visibility: "Parent", - showTimer: "No", - author: "check1@yopmail.com", - index: 4, - languageCode: ["en"], - version: 1, - versionKey: "1640082909792", - showFeedback: "No", - license: "CC BY 4.0", - interactionTypes: ["date"], - framework: "ekstep_ncert_k-12", - depth: 2, - createdBy: "5a587cc1-e018-4859-a0a8-e842650b9d64", - compatibilityLevel: 4, - name: "Dep Date 3", - topic: ["Forest"], - board: "CBSE", - status: "Draft", - }, - root: false, - }, - folder: false, - parent: { - data: { - id: "do_1134347209749299201119", - primaryCategory: "Observation", - objectType: "QuestionSet", - metadata: { - parent: "do_1133610108714352641210", - code: "2c902f1b-6338-ba1e-d64f-3117f6d88493", - allowScoring: "No", - allowSkip: "Yes", - containsUserData: "No", - channel: "01309282781705830427", - branchingLogic: { - do_1134355569264885761166: { - target: ["do_1134355571590184961168", "do_1134355574936780801170"], - preCondition: {}, - source: [], - }, - do_1134355571590184961168: { - target: [], - source: ["do_1134355569264885761166"], - preCondition: { - and: [ - { - ne: [ - { - var: "do_1134355569264885761166.response1.value", - type: "responseDeclaration", - }, - [0], - ], - }, - ], - }, - }, - do_1134355574936780801170: { - target: [], - source: ["do_1134355569264885761166"], - preCondition: { - and: [ - { - eq: [ - { - var: "do_1134355569264885761166.response1.value", - type: "responseDeclaration", - }, - [1], - ], - }, - ], - }, - }, - }, - language: ["English"], - mimeType: "application/vnd.sunbird.questionset", - showHints: "No", - createdOn: "2021-12-20T06:09:47.760+0000", - objectType: "QuestionSet", - allowMultipleInstances: "No", - primaryCategory: "Observation", - contentDisposition: "inline", - lastUpdatedOn: "2021-12-21T11:36:53.490+0000", - contentEncoding: "gzip", - showSolutions: "No", - allowAnonymousAccess: "Yes", - identifier: "do_1134347209749299201119", - lastStatusChangedOn: "2021-12-20T06:09:47.760+0000", - requiresSubmit: "No", - visibility: "Parent", - showTimer: "No", - index: 2, - setType: "materialised", - languageCode: ["en"], - version: 1, - versionKey: "1639980587760", - showFeedback: "No", - license: "CC BY 4.0", - depth: 1, - compatibilityLevel: 5, - name: "Mid-day Meals", - navigationMode: "non-linear", - allowBranching: "Yes", - shuffle: true, - attributions: [], - status: "Draft", - instances: null, - }, - }, - }, - root: false, - getLevel: () => 3, -}; - -export const CurrentNodeMockData = { - hitMode: "after", - otherNode: { - data: { - id: "do_113449672558780416163", - primaryCategory: "Multiselect Multiple Choice Question", - objectType: "Question", - metadata: { - parent: "do_1134355577791283201172", - code: "77e21fd6-9d5c-f351-d9da-7fc922bc1739", - subject: ["Mathematics"], - showRemarks: "No", - channel: "01309282781705830427", - language: ["English"], - medium: ["English"], - mimeType: "application/vnd.sunbird.question", - templateId: "mcq-vertical", - createdOn: "2021-12-20T06:14:56.100+0000", - objectType: "Question", - gradeLevel: ["Class 4"], - primaryCategory: "Multiselect Multiple Choice Question", - contentDisposition: "inline", - lastUpdatedOn: "2021-12-21T10:28:47.124+0000", - contentEncoding: "gzip", - showSolutions: "No", - allowAnonymousAccess: "Yes", - identifier: "do_1134347235008512001125", - lastStatusChangedOn: "2021-12-20T06:14:56.100+0000", - visibility: "Parent", - showTimer: "No", - author: "check1@yopmail.com", - index: 1, - qType: "MCQ", - languageCode: ["en"], - version: 1, - versionKey: "1640082527132", - showFeedback: "No", - license: "CC BY 4.0", - interactionTypes: ["choice"], - framework: "ekstep_ncert_k-12", - depth: 2, - createdBy: "5a587cc1-e018-4859-a0a8-e842650b9d64", - compatibilityLevel: 4, - name: "MCQ Question 2", - topic: ["Forest"], - board: "CBSE", - status: "Draft", - showEvidence: "No", - }, - }, - parent: { - data: { - id: "do_1134355577791283201172", - primaryCategory: "Observation", - objectType: "QuestionSet", - metadata: { - parent: "do_1133610108714352641210", - code: "4505fec1-8a2c-8e85-f340-7245734aaa35", - allowScoring: "No", - allowSkip: "Yes", - containsUserData: "No", - channel: "01309282781705830427", - branchingLogic: {}, - language: ["English"], - mimeType: "application/vnd.sunbird.questionset", - showHints: "No", - createdOn: "2021-12-21T10:32:16.710+0000", - objectType: "QuestionSet", - allowMultipleInstances: "No", - primaryCategory: "Observation", - contentDisposition: "inline", - lastUpdatedOn: "2021-12-21T10:58:24.169+0000", - contentEncoding: "gzip", - showSolutions: "No", - allowAnonymousAccess: "Yes", - identifier: "do_1134355577791283201172", - lastStatusChangedOn: "2021-12-21T10:32:16.710+0000", - requiresSubmit: "No", - visibility: "Parent", - showTimer: "No", - index: 3, - setType: "materialised", - languageCode: ["en"], - version: 1, - versionKey: "1640082736710", - showFeedback: "No", - license: "CC BY 4.0", - depth: 1, - compatibilityLevel: 5, - name: "School Transport", - navigationMode: "non-linear", - allowBranching: "Yes", - shuffle: true, - attributions: [], - status: "Draft", - instances: null, - }, - root: false, - }, - }, - }, - root: false, -}; - -export const mockTreeService = { - getChildren: () => { - return ["do_11330103476396851218", "do_233"]; - }, - getFirstChild: () => { - return { - data: { - metadata: {} - } - } - }, - getActiveNode: () => { - return { - data: { - id: "do_11330103476396851218", - }, - getParent: () => { - return { - getChildren: () => { - return [ - { - data: { - id: "do_11330103476396851218", - }, - }, - ]; - }, - }; }, - }; - }, - getNodeById: () => { - return { - moveTo: null - } - }, - clearTreeCache: () => { - }, - updateNode: () => { - - }, - updateTreeNodeMetadata: () => { - return {} - } -}; - - -export const observationWithRubricsMockData = -{ - data: { - children: - [ - { - "parent": "do_1134357224765685761203", - "code": "a51c0d9f-4696-3354-062f-b2078048656c", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.118+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "children": [ - { - "parent": "do_1134460323603906561218", - "code": "b4c3e613-5c3f-9c8b-d61f-417f4c5d8df2", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "branchingLogic": { - "do_113449775832088576181": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "eq": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 0 - ] - ] - } - ] - } - }, - "do_113449787008081920183": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "ne": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 1 - ] - ] - } - ] - } - }, - "do_11345671149997260811": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "eq": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 0 - ] - ] - } - ] - } - }, - "do_113449808985628672185": { - "target": [], - "source": [ - "do_113449672558780416163" - ], - "preCondition": { - "and": [ - { - "eq": [ - { - "var": "do_113449672558780416163.response1.value", - "type": "responseDeclaration" - }, - [ - 0 - ] - ] - } - ] - } - }, - "do_113449672558780416163": { - "target": [ - "do_113449775832088576181", - "do_113449787008081920183", - "do_113449808985628672185", - "do_11345671149997260811" - ], - "preCondition": {}, - "source": [] - } - }, - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.106+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "children": [ - { - "parent": "do_1134460323602841601200", - "code": "d0ab14ae-9f67-41cf-dcfa-80c8432bf424", - "evidence": { - "required": "No", - "mimeType": [ - "audio" - ], - "minCount": 1, - "maxCount": 1, - "sizeLimit": "20480" - }, - "subject": [ - "English" - ], - "showRemarks": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "medium": [ - "English" - ], - "mimeType": "application/vnd.sunbird.question", - "templateId": "mcq-vertical", - "createdOn": "2022-01-10T09:08:52.273+0000", - "objectType": "Question", - "gradeLevel": [ - "Grade 1" - ], - "primaryCategory": "Multiselect Multiple Choice Question", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-20T07:49:01.518+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_113449672558780416163", - "lastStatusChangedOn": "2022-01-10T09:08:52.273+0000", - "visibility": "Parent", - "showTimer": "No", - "author": "check1@yopmail.com", - "index": 1, - "qType": "MCQ", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1642664941814", - "showFeedback": "No", - "license": "CC BY 4.0", - "interactionTypes": [ - "choice" - ], - "framework": "tpd", - "depth": 3, - "createdBy": "5a587cc1-e018-4859-a0a8-e842650b9d64", - "compatibilityLevel": 4, - "name": "Parent Question MCQ", - "topic": [ - "Forest" - ], - "board": "CBSE", - "status": "Draft", - "showEvidence": "Yes" - }, - { - "parent": "do_1134460323602841601200", - "code": "c03eddbf-8194-ce67-3f49-08c4b5b33e55", - "subject": [ - "English" - ], - "showRemarks": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "medium": [ - "English" - ], - "mimeType": "application/vnd.sunbird.question", - "createdOn": "2022-01-20T07:49:38.034+0000", - "objectType": "Question", - "gradeLevel": [ - "Grade 1" - ], - "primaryCategory": "Text", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-20T07:49:38.023+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_11345671149997260811", - "lastStatusChangedOn": "2022-01-20T07:49:38.034+0000", - "creator": "Vaibahv Bhuva", - "visibility": "Parent", - "showTimer": "No", - "author": "check1@yopmail.com", - "index": 2, - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1642664978234", - "showFeedback": "No", - "license": "CC BY 4.0", - "interactionTypes": [ - "text" - ], - "framework": "tpd", - "depth": 3, - "createdBy": "5a587cc1-e018-4859-a0a8-e842650b9d64", - "compatibilityLevel": 4, - "name": "child Text Question", - "topic": [ - "Forest" - ], - "board": "CBSE", - "status": "Draft", - "showEvidence": "No" - }, - { - "parent": "do_1134460323602841601200", - "code": "10cf6d1b-ba3d-2925-1d13-032aa3d2d317", - "subject": [ - "English" - ], - "channel": "01309282781705830427", - "language": [ - "English" - ], - "medium": [ - "English" - ], - "mimeType": "application/vnd.sunbird.question", - "createdOn": "2022-01-10T13:46:25.941+0000", - "objectType": "Question", - "gradeLevel": [ - "Grade 1" - ], - "primaryCategory": "Date", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-10T13:46:25.941+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_113449808985628672185", - "lastStatusChangedOn": "2022-01-10T13:46:25.941+0000", - "creator": "Vaibahv Bhuva", - "visibility": "Parent", - "showTimer": "No", - "author": "check1@yopmail.com", - "index": 3, - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641822385942", - "showFeedback": "No", - "license": "CC BY 4.0", - "interactionTypes": [ - "date" - ], - "framework": "tpd", - "depth": 3, - "createdBy": "5a587cc1-e018-4859-a0a8-e842650b9d64", - "compatibilityLevel": 4, - "name": "Child Date 1", - "topic": [ - "Forest" - ], - "board": "CBSE", - "status": "Draft" - }, - { - "parent": "do_1134460323602841601200", - "code": "5403efd9-064e-89af-8f44-a9b10c80291c", - "subject": [ - "English" - ], - "showRemarks": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "medium": [ - "English" - ], - "mimeType": "application/vnd.sunbird.question", - "createdOn": "2022-01-10T12:38:58.878+0000", - "objectType": "Question", - "gradeLevel": [ - "Grade 1" - ], - "primaryCategory": "Slider", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-10T12:38:58.878+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_113449775832088576181", - "lastStatusChangedOn": "2022-01-10T12:38:58.878+0000", - "creator": "Vaibahv Bhuva", - "visibility": "Parent", - "showTimer": "No", - "author": "check1@yopmail.com", - "index": 4, - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641818338879", - "showFeedback": "No", - "license": "CC BY 4.0", - "interactionTypes": [ - "slider" - ], - "framework": "tpd", - "depth": 3, - "createdBy": "5a587cc1-e018-4859-a0a8-e842650b9d64", - "compatibilityLevel": 4, - "name": "test slider 2", - "topic": [ - "Forest" - ], - "board": "CBSE", - "status": "Draft", - "showEvidence": "No" - }, - { - "parent": "do_1134460323602841601200", - "code": "4395c049-8ba7-c611-6334-8bee3f02fa27", - "subject": [ - "English" - ], - "showRemarks": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "medium": [ - "English" - ], - "mimeType": "application/vnd.sunbird.question", - "createdOn": "2022-01-10T13:01:43.135+0000", - "objectType": "Question", - "gradeLevel": [ - "Grade 1" - ], - "primaryCategory": "Slider", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-10T13:01:43.135+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_113449787008081920183", - "lastStatusChangedOn": "2022-01-10T13:01:43.135+0000", - "creator": "Vaibahv Bhuva", - "visibility": "Parent", - "showTimer": "No", - "author": "check1@yopmail.com", - "index": 5, - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641819703136", - "showFeedback": "No", - "license": "CC BY 4.0", - "interactionTypes": [ - "slider" - ], - "framework": "tpd", - "depth": 3, - "createdBy": "5a587cc1-e018-4859-a0a8-e842650b9d64", - "compatibilityLevel": 4, - "name": "test slider 4", - "topic": [ - "Forest" - ], - "board": "CBSE", - "status": "Draft", - "showEvidence": "No" - } - ], - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-20T07:49:38.234+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323602841601200", - "lastStatusChangedOn": "2022-01-05T05:42:52.106+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 1, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372106", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "Chemistry", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134460323603906561218", - "code": "bfdac63e-4cd1-c9fe-00a0-be98f73e13d8", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "branchingLogic": {}, - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.131+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-10T13:09:04.092+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323604971521236", - "lastStatusChangedOn": "2022-01-05T05:42:52.131+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 2, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372131", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "Biology", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134460323603906561218", - "code": "9916f5fc-4f37-3f8e-5151-b32ce65217da", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.114+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-05T05:42:52.114+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323603578881212", - "lastStatusChangedOn": "2022-01-05T05:42:52.114+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 3, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372114", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "General Science", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - } - ], - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-12T08:37:51.019+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323603906561218", - "lastStatusChangedOn": "2022-01-05T05:42:52.118+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 1, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372118", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 1, - "compatibilityLevel": 5, - "name": "Science", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134357224765685761203", - "code": "36b6e0bd-ef9e-9fd1-5092-257c8e6af0a9", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.190+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "children": [ - { - "parent": "do_1134460323609804801240", - "code": "fd63a953-d9c1-cb14-df75-5918afb4b4b0", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.110+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-12T08:37:51.018+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323603251201206", - "lastStatusChangedOn": "2022-01-05T05:42:52.110+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 1, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372110", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "History", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134460323609804801240", - "code": "de1454cf-bfa9-faa5-8a71-cf7954e9f95b", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.100+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-05T05:42:52.100+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323602432001194", - "lastStatusChangedOn": "2022-01-05T05:42:52.100+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 2, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372100", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "Political Science", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134460323609804801240", - "code": "916893b4-816f-9613-1456-bea7da40c4ef", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.195+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-05T05:42:52.195+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323610214401248", - "lastStatusChangedOn": "2022-01-05T05:42:52.195+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 3, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372195", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "Geography", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134460323609804801240", - "code": "0c34d378-77e9-db88-589a-7695edcf1d70", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.094+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-05T05:42:52.094+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323601940481186", - "lastStatusChangedOn": "2022-01-05T05:42:52.094+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 4, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372094", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "Sociology", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134460323609804801240", - "code": "cca8fe66-b7e9-c3cb-a226-b5f96e10dfe9", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.126+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-05T05:42:52.126+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323604561921228", - "lastStatusChangedOn": "2022-01-05T05:42:52.126+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 5, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372126", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "Social Studies", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - }, - { - "parent": "do_1134460323609804801240", - "code": "cedcdd78-2950-e8d7-fa17-f57e67a349b9", - "allowScoring": "Yes", - "allowSkip": "Yes", - "containsUserData": "No", - "channel": "01309282781705830427", - "language": [ - "English" - ], - "mimeType": "application/vnd.sunbird.questionset", - "showHints": "No", - "createdOn": "2022-01-05T05:42:52.128+0000", - "objectType": "QuestionSet", - "primaryCategory": "Observation With Rubrics", - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-05T05:42:52.128+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323604725761232", - "lastStatusChangedOn": "2022-01-05T05:42:52.128+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 6, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372128", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 2, - "compatibilityLevel": 5, - "name": "Environmental Studies", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - } - ], - "contentDisposition": "inline", - "lastUpdatedOn": "2022-01-12T08:37:51.019+0000", - "contentEncoding": "gzip", - "showSolutions": "No", - "allowAnonymousAccess": "Yes", - "identifier": "do_1134460323609804801240", - "lastStatusChangedOn": "2022-01-05T05:42:52.190+0000", - "requiresSubmit": "No", - "visibility": "Parent", - "showTimer": "No", - "index": 2, - "setType": "materialised", - "languageCode": [ - "en" - ], - "version": 1, - "versionKey": "1641361372190", - "showFeedback": "No", - "license": "CC BY 4.0", - "depth": 1, - "compatibilityLevel": 5, - "name": "Social Science", - "navigationMode": "non-linear", - "allowBranching": "Yes", - "shuffle": true, - "attributions": [], - "status": "Draft" - } - ] + "contentPolicyUrl": "/term-of-use.html" } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.ts b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.ts index 47ea119b1..e1a832905 100755 --- a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.ts +++ b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.spec.ts @@ -2,34 +2,28 @@ import { EditorService } from './../../services/editor/editor.service'; import { async, ComponentFixture, TestBed, inject } from '@angular/core/testing'; import { FancyTreeComponent } from './fancy-tree.component'; import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { NO_ERRORS_SCHEMA, ChangeDetectorRef } from '@angular/core'; +import { NO_ERRORS_SCHEMA } from '@angular/core'; import { TelemetryInteractDirective } from '../../directives/telemetry-interact/telemetry-interact.directive'; import { EditorTelemetryService } from '../../services/telemetry/telemetry.service'; -import { config, treeData, tree, editorConfig, TargetNodeMockData, - CurrentNodeMockData, mockTreeService, mockData, observationWithRubricsMockData } from './fancy-tree.component.spec.data'; +import { config, treeData, tree, editorConfig } from './fancy-tree.component.spec.data'; import { Router } from '@angular/router'; import { TreeService } from '../../services/tree/tree.service'; import { ToasterService } from '../../services/toaster/toaster.service'; import { ConfigService } from '../../services/config/config.service'; import { SuiModule } from 'ng2-semantic-ui-v9'; -import { HelperService } from 'collection-editor-library/lib/services/helper/helper.service'; -import { BranchingLogic } from '../question/question.component.spec.data'; describe('FancyTreeComponent', () => { let component: FancyTreeComponent; let fixture: ComponentFixture; - let editorService,helperService; + class RouterStub { navigate = jasmine.createSpy('navigate'); } beforeEach(async(() => { TestBed.configureTestingModule({ - providers: [EditorTelemetryService, EditorService, + providers: [EditorTelemetryService, TreeService, EditorService, { provide: Router, useClass: RouterStub }, ToasterService, - { provide: ConfigService, useValue: config }, - { provide: TreeService, useValue: mockTreeService }, - { provide: ChangeDetectorRef, useValue: { detectChanges: () => {} } } - ], + { provide: ConfigService, useValue: config }], imports: [HttpClientTestingModule, SuiModule], declarations: [ FancyTreeComponent, TelemetryInteractDirective ], schemas: [NO_ERRORS_SCHEMA] @@ -39,7 +33,6 @@ describe('FancyTreeComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(FancyTreeComponent); - editorService = TestBed.get(EditorService); component = fixture.componentInstance; // fixture.detectChanges(); }); @@ -48,28 +41,17 @@ describe('FancyTreeComponent', () => { expect(component).toBeTruthy(); }); - it('#ngOnInit() should call #initialize()', () => { + it('#ngOnInit() should call #buildTree()', () => { const editorService = TestBed.get(EditorService); component.nodes = { data: treeData }; spyOnProperty(editorService, 'editorConfig', 'get').and.returnValue(editorConfig); - spyOn(component, 'initialize'); - component.ngOnInit(); - expect(component.initialize).toHaveBeenCalled(); - }); - - it('#initialize() should call #buildTree()', () => { - component.nodes = { - data: treeData - }; spyOn(component, 'buildTree'); - component.initialize(); + component.ngOnInit(); expect(component.buildTree).toHaveBeenCalled(); }); - - it('#addFromLibrary() should call #emitshowLibraryPageEvent()', () => { const editorService: EditorService = TestBed.get(EditorService); spyOn(editorService, 'emitshowLibraryPageEvent').and.returnValue('showLibraryPage'); @@ -85,68 +67,6 @@ describe('FancyTreeComponent', () => { expect(component.renderTree).toHaveBeenCalled(); }); - it('call #eachNodeActionButton() to verify #visibility for root node', () => { - spyOn(component,'eachNodeActionButton').and.callThrough(); - component.config = mockData.config; - const rootNode = { - getLevel: () => 1, - folder: true, - data: { root: true }, - }; - component.eachNodeActionButton(rootNode); - expect(component.visibility.addFromLibrary).toBeFalsy(); - expect(component.visibility.createNew).toBeFalsy(); - expect(component.visibility.addChild).toBeTruthy(); - expect(component.visibility.addSibling).toBeFalsy(); - expect(component.eachNodeActionButton).toHaveBeenCalled(); - }); - - it('call #eachNodeActionButton() to verify #visibility for child node', () => { - component.config = mockData.config; - const node = { - getLevel: () => 2, - folder: true, - data: { root: false }, - }; - component.eachNodeActionButton(node); - expect(component.visibility.addChild).toBeTruthy(); - expect(component.visibility.addSibling).toBeTruthy(); - expect(component.visibility.addFromLibrary).toBeFalsy(); - expect(component.visibility.createNew).toBeFalsy(); - }); - - it('call #eachNodeActionButton() to verify #visibility for leaf node', () => { - component.config = mockData.config; - const node = { - getLevel: () => 3, - folder: true, - data: { root: false }, - }; - component.eachNodeActionButton(node); - expect(component.visibility.addChild).toBeFalsy(); - expect(component.visibility.addSibling).toBeTruthy(); - expect(component.visibility.addFromLibrary).toBeFalsy(); - expect(component.visibility.createNew).toBeFalsy(); - }); - - it('call #eachNodeActionButton() to verify #visibility when #bulkUploadProcessingStatus is true', () => { - component.config = mockData.config; - component.bulkUploadProcessingStatus = true; - const node = { - getLevel: () => 2, - folder: true, - data: { root: false }, - }; - component.eachNodeActionButton(node); - expect(component.visibility).toEqual({ - addChild: false, - addSibling: false, - addFromLibrary: false, - addQuestionFromLibrary: false, - createNew: false - }); - }); - it('#addFromLibrary() should call #emitshowLibraryPageEvent()', () => { const editorService: EditorService = TestBed.get(EditorService); spyOn(editorService, 'emitshowLibraryPageEvent'); @@ -297,9 +217,6 @@ describe('FancyTreeComponent', () => { spyOn(component, 'dropNode').and.callFake(() => { return true; }); - spyOn(editorService,'getDependentNodes').and.callFake(()=>{ - return {}; - }) const node = {}; component.dragDrop(node, data); expect(component.dropNode).toHaveBeenCalled(); @@ -365,71 +282,10 @@ describe('FancyTreeComponent', () => { it ('#dropNode() should drop node', () => { component.config = editorConfig.config; - spyOn(component, 'dropNode').and.callFake(() => { - return true; - }); const targetNode = { folder: false, getLevel: () => 2 }; - const contentNode: any = { hitMode: 'after', otherNode: { data:{id:"do_11330103476396851218"},getLevel: () => 1, moveTo: () => true }, node: { data: { root: false } }}; - component.dropNode(targetNode, contentNode); - const result = component.dragDrop(targetNode, contentNode); - - spyOn(editorService, 'getDependentNodes').and.returnValue({ - "source": [], - "target": [ - "do_1134347722012835841130", - "do_1134355563320688641163" - ] - }); + const contentNode: any = { hitMode: 'before', otherNode: { getLevel: () => 1, moveTo: () => true }, node: { data: { root: false } }}; + const result = component.dropNode(targetNode, contentNode); expect(result).toBeTruthy(); }); - it("#rearrangeBranchingLogic on the node drag and drop on tree structure",()=>{ - const currentSectionId='do_1134355577791283201172'; - const nodeId ='do_1134347235008512001125'; - const targetSectionId='do_1134347209749299201119'; - const dependentNodeIDs ={ - "source": [], - "target": [ - "do_1134347722012835841130", - "do_1134355563320688641163" - ] - }; - const movingNodeIds= ['do_1134347722012835841130', 'do_1134355563320688641163', 'do_1134347235008512001125']; - spyOn(component,"rearrangeBranchingLogic").and.callThrough(); - component.rearrangeBranchingLogic(nodeId, currentSectionId, targetSectionId, dependentNodeIDs, movingNodeIds); - expect(component.rearrangeBranchingLogic).toHaveBeenCalled(); - - }) - - it("#moveDependentNodes on the node drag and drop on tree structure",()=>{ - spyOn(component,'moveDependentNodes').and.callThrough(); - component.moveDependentNodes(TargetNodeMockData,CurrentNodeMockData); - expect(component.moveDependentNodes).toHaveBeenCalled(); - }); - - it('#rearrangeBranchingLogic() should call when drag and drop with branchingLogic is there ', () => { - const nodeId = "do_113449672558780416163"; - const currentSectionId = "do_1134460323602841601200"; - const targetSectionId = "do_1134460323604971521236"; - const movingNodeIds=[ - "do_113449672558780416163", - "do_113449775832088576181", - "do_113449787008081920183", - "do_113449808985628672185", - "do_11345671149997260811" - ]; - const dependentNodeIDs = { - source: [], - target: [ - "do_113449775832088576181", - "do_113449787008081920183", - "do_113449808985628672185", - "do_11345671149997260811" - ] - } - spyOn(component,'rearrangeBranchingLogic').and.callThrough(); - component.rearrangeBranchingLogic(nodeId,currentSectionId,targetSectionId,dependentNodeIDs,movingNodeIds); - expect(component.rearrangeBranchingLogic).toHaveBeenCalled(); - }); - -}); \ No newline at end of file +}); diff --git a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.ts b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.ts index 8043495f8..ceee8f66d 100755 --- a/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.ts +++ b/projects/collection-editor-library/src/lib/components/fancy-tree/fancy-tree.component.ts @@ -36,11 +36,6 @@ export class FancyTreeComponent implements OnInit, AfterViewInit, OnDestroy { public showAddSiblingButton: boolean; public rootNode: any; public showLibraryButton = false; - public unsubscribe$ = new Subject(); - public bulkUploadProcessingStatus = false; - public nodeParentDependentMap = {}; - public treeData: any = []; - public branchingObject = {}; public rootMenuTemplate = `
@@ -187,6 +144,7 @@ +
@@ -205,6 +163,6 @@ - - + \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/header/header.component.spec.data.ts b/projects/collection-editor-library/src/lib/components/header/header.component.spec.data.ts deleted file mode 100644 index 8b1378917..000000000 --- a/projects/collection-editor-library/src/lib/components/header/header.component.spec.data.ts +++ /dev/null @@ -1 +0,0 @@ - diff --git a/projects/collection-editor-library/src/lib/components/header/header.component.spec.ts b/projects/collection-editor-library/src/lib/components/header/header.component.spec.ts index aafca3d14..102543a93 100755 --- a/projects/collection-editor-library/src/lib/components/header/header.component.spec.ts +++ b/projects/collection-editor-library/src/lib/components/header/header.component.spec.ts @@ -1,6 +1,6 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { HeaderComponent } from './header.component'; -import { CUSTOM_ELEMENTS_SCHEMA, EventEmitter } from '@angular/core'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { TelemetryInteractDirective } from '../../directives/telemetry-interact/telemetry-interact.directive'; @@ -97,11 +97,4 @@ describe('HeaderComponent', () => { expect(component.showPublishCollectionPopup).toBeTruthy(); expect(component.actionType).toBeDefined(); }); - it('#bulkUploadListener() should call #bulkUploadEmitter.emit()', () => { - const data = { status: true, type: 'updateHierarchy' }; - component.bulkUploadEmitter = new EventEmitter(); - spyOn(component.bulkUploadEmitter, 'emit'); - component.bulkUploadListener(data); - expect(component.bulkUploadEmitter.emit).toHaveBeenCalledWith(data) - }); }); diff --git a/projects/collection-editor-library/src/lib/components/header/header.component.ts b/projects/collection-editor-library/src/lib/components/header/header.component.ts index ab56c0a55..e4528bb83 100755 --- a/projects/collection-editor-library/src/lib/components/header/header.component.ts +++ b/projects/collection-editor-library/src/lib/components/header/header.component.ts @@ -4,8 +4,6 @@ import { EditorTelemetryService } from '../../services/telemetry/telemetry.servi import { ConfigService } from '../../services/config/config.service'; import * as _ from 'lodash-es'; import { NgForm } from '@angular/forms'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; @Component({ selector: 'lib-header', @@ -20,7 +18,6 @@ export class HeaderComponent implements OnDestroy, OnInit { @Input() showComment: any; @Input() publishchecklist: any; @Output() toolbarEmitter = new EventEmitter(); - @Output() bulkUploadEmitter = new EventEmitter(); @ViewChild('FormControl') FormControl: NgForm; @ViewChild('modal') public modal; public visibility: any; @@ -29,34 +26,22 @@ export class HeaderComponent implements OnDestroy, OnInit { public showPublishCollectionPopup: boolean; public rejectComment: string; public actionType: string; - public objectType: string; public sourcingStatusText: string; public sourcingStatusClass: string; public originPreviewUrl: string; public correctionComments: string; - public unsubscribe$ = new Subject(); - public bulkUploadStatus = false; constructor(private editorService: EditorService, public telemetryService: EditorTelemetryService, public configService: ConfigService) { } async ngOnInit() { - this.editorService.bulkUploadStatus$.pipe(takeUntil(this.unsubscribe$)).subscribe((status) => { - if (status === 'processing') { - this.bulkUploadStatus = true; - } else { - this.bulkUploadStatus = false; - } - }); - this.objectType = _.get(this.editorService, 'editorConfig.config.objectType'); - await this.handleActionButtons(); - this.getSourcingData(); + await this.handleActionButtons() + this.getSourcingData() } async handleActionButtons() { this.visibility = {}; - this.visibility.editContent = this.editorService.editorMode === 'edit'; this.visibility.saveContent = this.editorService.editorMode === 'edit'; this.visibility.submitContent = this.editorService.editorMode === 'edit'; this.visibility.rejectContent = this.editorService.editorMode === 'review' || this.editorService.editorMode === 'orgreview'; @@ -66,11 +51,9 @@ export class HeaderComponent implements OnDestroy, OnInit { this.visibility.sourcingRejectContent = this.editorService.editorMode === 'sourcingreview'; this.visibility.previewContent = _.get(this.editorService, 'editorConfig.config.objectType') === 'QuestionSet'; this.visibility.dialcode = this.editorService.editorMode === 'edit'; - // tslint:disable-next-line:max-line-length - this.visibility.bulkUpload = _.get(this.editorService, 'editorConfig.config.objectType') === 'QuestionSet' && this.editorService.editorMode === 'edit'; this.visibility.showOriginPreviewUrl = _.get(this.editorService, 'editorConfig.config.showOriginPreviewUrl'); this.visibility.showSourcingStatus = _.get(this.editorService, 'editorConfig.config.showSourcingStatus'); - this.visibility.showCorrectionComments = _.get(this.editorService, 'editorConfig.config.showCorrectionComments'); + //this.visibility.showCorrectionComments = _.get(this.editorService, 'editorConfig.config.showCorrectionComments'); this.visibility.hideSubmitForReviewBtn = _.get(this.editorService, 'editorConfig.config.hideSubmitForReviewBtn') || false; this.visibility.addCollaborator = _.get(this.editorService, 'editorConfig.config.showAddCollaborator'); } @@ -96,20 +79,13 @@ export class HeaderComponent implements OnDestroy, OnInit { } publishEmitter(event) { this.showPublishCollectionPopup = false; - if (event.button === 'publishContent' || event.button === 'publishQuestion' || event.button === 'sourcingApprove' || event.button === 'sourcingApproveQuestion') { + if (event.button === 'publishContent' || event.button === 'sourcingApprove') { this.toolbarEmitter.emit(event) } } - - bulkUploadListener(event) { - this.bulkUploadEmitter.emit(event); - } - ngOnDestroy() { if (this.modal && this.modal.deny) { this.modal.deny(); } - this.unsubscribe$.next(); - this.unsubscribe$.complete(); } } diff --git a/projects/collection-editor-library/src/lib/components/library-list/library-list.component.html b/projects/collection-editor-library/src/lib/components/library-list/library-list.component.html index b9c236327..bc814662b 100644 --- a/projects/collection-editor-library/src/lib/components/library-list/library-list.component.html +++ b/projects/collection-editor-library/src/lib/components/library-list/library-list.component.html @@ -22,7 +22,7 @@
@@ -38,7 +38,7 @@

{{contentListDetails?.name}}
-
By {{contentListDetails?.board}} +
By {{contentListDetails?.board}} {{contentListDetails?.me_averageRating}}
diff --git a/projects/collection-editor-library/src/lib/components/library-player/library-player.component.ts b/projects/collection-editor-library/src/lib/components/library-player/library-player.component.ts index 0e56f3ddb..23962a19b 100644 --- a/projects/collection-editor-library/src/lib/components/library-player/library-player.component.ts +++ b/projects/collection-editor-library/src/lib/components/library-player/library-player.component.ts @@ -16,7 +16,7 @@ export class LibraryPlayerComponent implements OnInit { ngOnInit() { } addToLibrary() { - if (this.editorService.checkIfContentsCanbeAdded('add')) { + if (this.editorService.checkIfContentsCanbeAdded()) { this.moveEvent.emit({ action: 'openHierarchyPopup' }); diff --git a/projects/collection-editor-library/src/lib/components/library/library.component.ts b/projects/collection-editor-library/src/lib/components/library/library.component.ts index e27ba3969..a5d8289cc 100644 --- a/projects/collection-editor-library/src/lib/components/library/library.component.ts +++ b/projects/collection-editor-library/src/lib/components/library/library.component.ts @@ -9,7 +9,7 @@ import { Router } from '@angular/router'; import { HelperService } from '../../services/helper/helper.service'; @Component({ - selector: 'lib-content-library', + selector: 'lib-library', templateUrl: './library.component.html', styleUrls: ['./library.component.scss'], encapsulation: ViewEncapsulation.None, @@ -128,8 +128,7 @@ export class LibraryComponent implements OnInit, AfterViewInit, OnDestroy { if (!(_.get(response, 'result.count'))) { this.contentList = []; } else { - this.contentList = _.filter(_.compact(_.concat(_.get(response.result, 'content'), _.get(response.result, 'QuestionSet'))), - (item: any) => item.identifier !== this.collectionId); + this.contentList = _.compact(_.concat(_.get(response.result, 'content'), _.get(response.result, 'QuestionSet'))); this.filterContentList(); } }); diff --git a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.scss b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.scss index c7c5a0ae4..7b70a689a 100644 --- a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.scss +++ b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.scss @@ -43,6 +43,7 @@ } } .multi-select-section-app { + margin: 0.7rem 0 !important; label { margin-bottom: 0.3rem !important; z-index: inherit; @@ -140,12 +141,10 @@ label { padding: 0 !important; } } -/* .sb-checkbox { padding: 1.5rem 0; margin-top: 2rem; } -*/ sb-icon-dropdown { top: 10px !important; right: 6px !important; @@ -168,17 +167,6 @@ sb-icon-dropdown { } } } - sb-dynamic-checkbox{ - label{ - padding-left: 1.5rem !important; - &:after - { - color:#fff !important; - width:1rem!important; - height:1rem !important; - } - } - } } .sb-textbox[disabled="true"]{ opacity: 0.3 !important; @@ -209,22 +197,3 @@ lib-meta-form{ .fs-28 { font-size: 1.75rem; } .fs-30 { font-size: 1.875rem; } .fs-36 { font-size: 2.25rem; } - -[data-title]:hover::before { - content: attr(data-title); - position: absolute; - left: 0; - top: 20px !important; - bottom: initial !important; - display: inline-block; - padding: 3px 6px; - border-radius: 2px; - background: #fff; - color: #000; - font-size: 12px; - font-family: sans-serif; - white-space: normal !important; - border: solid 1px #ccc !important; - height: auto !important; - font-weight: 600 !important; -} diff --git a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.data.ts b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.data.ts index 8b119ac93..7a03e5d76 100644 --- a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.data.ts +++ b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.data.ts @@ -16,54 +16,6 @@ export const mockData = { "required": true, "visible": true }, - { - "code": "allowMultipleInstances", - "dataType": "text", - "description": "Enable multiple instances/submissions of questions in this section?", - "editable": true, - "index": 5, - "inputType": "radio", - "label": "Enable multiple instances/submissions of questions in this section?", - "name": "allowMultipleInstances", - "placeholder": "QR code required", - "renderingHints": { - "class": "sb-g-col-lg-2" - }, - "range": [ - "Yes", - "No" - ], - "required": true, - "visible": true - }, - { - "code": "instances", - "depends": [ - "allowMultipleInstances" - ], - "dataType": "text", - "description": "This label will show up on a button to record multiple solutions of questions in this section", - "editable": true, - "inputType": "text", - "label": "Add label", - "name": "instanceName", - "placeholder": "Enter label here", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": true, - "visible": true, - "validations": [ - { - "type": "minLength", - "value": "2" - }, - { - "type": "maxLength", - "value": "20" - } - ] - }, { "code": "name", "dataType": "text", @@ -127,212 +79,6 @@ export const mockData = { "placeholder": "Enter Keywords", "required": false, "validations": [] - }, - { - "code": "audience", - "dataType": "list", - "description": "Suggested User Type", - "editable": true, - "inputType": "nestedselect", - "label": "Suggested User Type", - "name": "userTypes", - "placeholder": "Suggested User Type", - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "required": false, - "visible": true, - "range": [ - "Education Official", - "School leaders (HMs)", - "Teachers", - "Students", - "Parents", - "Parent", - "Others" - ] - }, - { - "code": "description", - "name": "Description", - "label": "Description", - "placeholder": "Enter Description", - "description": "Description of the Question Set", - "dataType": "text", - "inputType": "textarea", - "editable": true, - "required": false, - "visible": true, - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "startDate", - "name": "startDate", - "label": "Start Date", - "placeholder": "Start Date", - "description": "Choose Start Date", - "dataType": "date", - "inputType": "date", - "editable": true, - "required": false, - "visible": true, - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "validations": [ - { - "type": "dateFormat", - "value": "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]", - "message": "Date format not matched" - } - ] - }, - { - 'code': 'author', - 'dataType': 'text', - 'description': 'Author of the content', - 'editable': true, - 'inputType': 'text', - 'label': 'Author', - 'name': 'Author', - 'placeholder': 'Author', - 'renderingHints': { - 'class': 'sb-g-col-lg-1' - }, - 'required': false, - 'visible': true - }, - { - 'code': 'license', - 'dataType': 'text', - 'description': 'license', - 'editable': true, - 'inputType': 'select', - 'label': 'License', - 'name': 'license', - 'placeholder': 'Select License', - 'renderingHints': { - 'class': 'sb-g-col-lg-1 required' - }, - 'required': true, - 'visible': true, - 'defaultValue': 'CC BY 4.0', - 'validations': [ - { - 'type': 'required', - 'message': 'License is required' - } - ], - 'default': 'CC BY 4.0', - 'range': [ - '@+kp_ft_license_102876130', - '@+kp_ft_license_132244417', - '@+kp_ft_license_164164056', - ] - }, - { - "code": "setPeriod", - "name": "setPeriod", - "label": "Set Period", - "placeholder": "Set period", - "description": "Set Period", - "dataType": "text", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "endDate", - "name": "endDate", - "depends": [ - "setPeriod" - ], - "label": "End Date", - "placeholder": "End Date", - "description": "Choose End Date", - "dataType": "date", - "inputType": "date", - "editable": true, - "required": false, - "visible": true, - "renderingHints": { - "class": "sb-g-col-lg-1" - }, - "validations": [ - { - "type": "dateFormat", - "value": "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]", - "message": "Date format not matched" - } - ] - }, - { - "code": "entityType", - "dataType": "text", - "description": "Select the entity i.e. district, block, cluster, schools for which the form is designed and is to be taken up. The users will be able to conduct observations for only the selected type of entities.", - "editable": true, - "inputType": "select", - "label": "Entity Type", - "name": "entityType", - "placeholder": "Entity Type", - "renderingHints": { - "class": "sb-g-col-lg-1 required" - }, - "required": true, - "visible": true, - "range": [ - "School", - "Block", - "Cluster", - "District" - ], - "validations": [ - { - "type": "required", - "message": "Name is required" - } - ] - }, - { - "code": "allowScoring", - "name": "allowScoring", - "label": "Enable Scoring", - "placeholder": "Enable Scoring", - "description": "Select to enable the option of scoring for questions in the form. Score can be added to questions only if this is selected", - "dataType": "text", - "inputType": "checkbox", - "editable": true, - "required": false, - "visible": true, - "renderingHints": { - "class": "sb-g-col-lg-1" - } - }, - { - "code": "license", - }, - /* - { - "code": "additionalCategories", - }, - { - "code": "copyright", - }, - { - "code": "maxQuestions", - }, - */ - { - "code": "author", - }, - { - "code": "showTimer", } ] } @@ -487,4 +233,4 @@ export const mockData = { } ] } -}; \ No newline at end of file +}; diff --git a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.ts b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.ts index 0e3b311f5..f92781a30 100644 --- a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.ts +++ b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.spec.ts @@ -3,8 +3,6 @@ import { MetaFormComponent } from './meta-form.component'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NO_ERRORS_SCHEMA } from '@angular/core'; import { mockData } from './meta-form.component.spec.data'; -import { TreeService } from '../../services/tree/tree.service'; -import { mockTreeService } from '../question/question.component.spec.data'; describe('MetaFormComponent', () => { let component: MetaFormComponent; let fixture: ComponentFixture; @@ -13,9 +11,6 @@ describe('MetaFormComponent', () => { TestBed.configureTestingModule({ imports: [HttpClientTestingModule], declarations: [MetaFormComponent], - providers:[ - { provide: TreeService, useValue: mockTreeService } - ], schemas: [NO_ERRORS_SCHEMA] }) .compileComponents(); @@ -24,31 +19,12 @@ describe('MetaFormComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(MetaFormComponent); component = fixture.componentInstance; - component.appIcon='https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png'; - component.showAppIcon=true; fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); - - it('#valueChanges() should call updateNode and emit toolbarEmitter with appIcon', () => { - spyOn(component,'valueChanges').and.callThrough(); - component.appIcon='https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png'; - component.showAppIcon=true; - const event={ - instances:"Add Student", - appIcon: 'https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png', - } - spyOn(component.toolbarEmitter, 'emit'); - spyOn(component.treeService, 'updateNode'); - component.valueChanges(event); - expect(component.valueChanges).toHaveBeenCalledWith(event); - expect(component.toolbarEmitter.emit).toHaveBeenCalled(); - }); - - it('#ngOnChanges() should call setAppIconData', () => { spyOn(component, 'fetchFrameWorkDetails'); spyOn(component, 'setAppIconData'); @@ -64,41 +40,38 @@ describe('MetaFormComponent', () => { expect(component.toolbarEmitter.emit).toHaveBeenCalledWith(data); }); it('#appIconDataHandler() should call updateAppIcon method', () => { - spyOn(component,'appIconDataHandler').and.callThrough(); // tslint:disable-next-line:max-line-length - const event = { url: 'https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png' }; - component.appIcon = event.url; + const data = { url: 'https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png' }; + component.appIcon = data.url; spyOn(component.treeService, 'updateAppIcon'); - component.appIconDataHandler(event); - expect(component.treeService.updateAppIcon).toHaveBeenCalledWith(event.url); - expect(component.appIconDataHandler).toHaveBeenCalled(); + component.appIconDataHandler(data); + expect(component.treeService.updateAppIcon).toHaveBeenCalledWith(data.url); }); it('#setAppIconData() should set appIcon', () => { - spyOn(component,'setAppIconData').and.callThrough(); - const nodeMetadataMock = { + const data = { data: { // tslint:disable-next-line:max-line-length metadata: { appIcon: 'https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png' } } }; - component.nodeMetadata = nodeMetadataMock; + component.nodeMetadata = data; component.appIconConfig = { - isAppIconEditable: true + isAppIconEditable: '' }; component.setAppIconData(); expect(component.appIcon).toBeDefined(); }); - - - it('call #ifFieldIsEditable() verify returning value', () => { - spyOn(component, 'isReviewMode').and.returnValue(false); - expect(component.ifFieldIsEditable('bloomsLevel', false)).toEqual(false); - }); - it('call #isReviewMode() verify returning value', () => { - expect(component.isReviewMode()).toEqual(false); + it('#valueChanges() should call updateNode and emit toolbarEmitter', () => { + const data = { + // tslint:disable-next-line:max-line-length + appIcon: 'https://sunbirddev.blob.core.windows.net/sunbird-content-dev/content/do_11320764935163904015/artifact/2020101299.png' + }; + spyOn(component.toolbarEmitter, 'emit'); + spyOn(component.treeService, 'updateNode'); + component.valueChanges(data); + expect(component.toolbarEmitter.emit).toHaveBeenCalledWith({ button: 'onFormValueChange', event: data }); + expect(component.treeService.updateNode).toHaveBeenCalledWith(data); }); - - it('#attachDefaultValues() should set formFieldProperties', () => { component.rootFormConfig = mockData.rootFormConfig; component.nodeMetadata = mockData.nodeMetaData; @@ -124,5 +97,4 @@ describe('MetaFormComponent', () => { component.fetchFrameWorkDetails(); expect(component.frameworkDetails).toBeDefined(); }); - }); diff --git a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.ts b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.ts index 40c465c2d..0c1df66a2 100644 --- a/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.ts +++ b/projects/collection-editor-library/src/lib/components/meta-form/meta-form.component.ts @@ -17,7 +17,7 @@ let framworkServiceTemp; styleUrls: ['./meta-form.component.scss'], encapsulation: ViewEncapsulation.None, }) -export class MetaFormComponent implements OnChanges, OnDestroy { +export class MetaFormComponent implements OnInit, OnChanges, OnDestroy { @Input() rootFormConfig: any; @Input() unitFormConfig: any; @Input() nodeMetadata: any; @@ -39,6 +39,8 @@ export class MetaFormComponent implements OnChanges, OnDestroy { this.setAppIconData(); } + ngOnInit() { + } setAppIconData() { const isRootNode = _.get(this.nodeMetadata, 'data.root'); @@ -85,6 +87,11 @@ export class MetaFormComponent implements OnChanges, OnDestroy { filter(data => _.get(data, `frameworkdata.${_.first(this.frameworkService.targetFrameworkIds)}`)) ).subscribe((frameworkDetails: any) => { if (frameworkDetails && !frameworkDetails.err) { + // const frameworkData = frameworkDetails.frameworkdata[this.frameworkService.targetFrameworkIds].categories; + // this.frameworkDetails.frameworkData = frameworkData; + // this.frameworkDetails.topicList = _.get(_.find(frameworkData, { + // code: 'topic' + // }), 'terms'); this.frameworkDetails.targetFrameworks = _.filter(frameworkDetails.frameworkdata, (value, key) => { return _.includes(this.frameworkService.targetFrameworkIds, key); }); @@ -97,12 +104,13 @@ export class MetaFormComponent implements OnChanges, OnDestroy { attachDefaultValues() { const metaDataFields = _.get(this.nodeMetadata, 'data.metadata'); - const isRootNode = _.get(this.nodeMetadata, 'data.root'); + // if (_.isEmpty(metaDataFields)) { return; } + const isRoot = _.get(metaDataFields, 'data.root'); const categoryMasterList = this.frameworkDetails.frameworkData || - !isRootNode && this.frameworkService.selectedOrganisationFramework && + !isRoot && this.frameworkService.selectedOrganisationFramework && _.get(this.frameworkService.selectedOrganisationFramework, 'framework.categories'); // tslint:disable-next-line:max-line-length - let formConfig: any = (_.get(metaDataFields, 'visibility') === 'Default') || isRootNode ? _.cloneDeep(this.rootFormConfig) : _.cloneDeep(this.unitFormConfig); + let formConfig: any = (_.get(metaDataFields, 'visibility') === 'Default') ? _.cloneDeep(this.rootFormConfig) : _.cloneDeep(this.unitFormConfig); formConfig = formConfig && _.has(_.first(formConfig), 'fields') ? formConfig : [{name: '', fields: formConfig}]; if (!_.isEmpty(this.frameworkDetails.targetFrameworks)) { _.forEach(this.frameworkDetails.targetFrameworks, (framework) => { @@ -131,7 +139,14 @@ export class MetaFormComponent implements OnChanges, OnDestroy { moment.utc(moment.duration(value, 'seconds').asMilliseconds()).format(this.helperService.getTimerFormat(field)) : ''; } } - + + // const frameworkCategory = _.find(categoryMasterList, category => { + // return (category.code === field.sourceCategory || category.code === field.code) && !_.includes(field.code, 'target'); + // // }); + // if (!_.isEmpty(frameworkCategory)) { + // field.terms = frameworkCategory.terms; + // } + if (field.code === 'framework') { field.range = this.frameworkService.frameworkValues; field.options = this.getFramework; @@ -190,13 +205,6 @@ export class MetaFormComponent implements OnChanges, OnDestroy { if (field.code === 'instructions') { field.default = _.get(metaDataFields, 'instructions.default') || '' ; } - if(field.code === 'setPeriod'){ - field.default = !_.isEmpty(metaDataFields, 'endDate') ? 'Yes' : 'No' ; - } - - if(field.code === 'instances'){ - field.default = !_.isEmpty(metaDataFields, 'instances') ? _.get(metaDataFields,'instances.label') : '' ; - } if ((_.isEmpty(field.range) || _.isEmpty(field.terms)) && !field.editable && !_.isEmpty(field.default)) { @@ -226,21 +234,21 @@ export class MetaFormComponent implements OnChanges, OnDestroy { }); } - const ifEditable = this.ifFieldIsEditable(field.code, field.editable); + const ifEditable = this.ifFieldIsEditable(field.code); _.set(field, 'editable', ifEditable); }); }); this.formFieldProperties = _.cloneDeep(formConfig); + console.log(this.formFieldProperties); } isReviewMode() { return _.includes([ 'review', 'read', 'sourcingreview', 'orgreview' ], this.editorService.editorMode); } - ifFieldIsEditable(fieldCode, primaryCategoryEditableConfig?) { + ifFieldIsEditable(fieldCode) { const ediorMode = this.editorService.editorMode; if (!this.isReviewMode()) { - if(primaryCategoryEditableConfig === false) return false; return true; } const editableFields = _.get(this.editorService.editorConfig.config, 'editableFields'); @@ -256,11 +264,7 @@ export class MetaFormComponent implements OnChanges, OnDestroy { } valueChanges(event: any) { - if (_.get(event, 'instances')) { - event.instances = { - "label": event.instances - } - } + console.log(event); if (!_.isEmpty(this.appIcon) && this.showAppIcon) { event.appIcon = this.appIcon; } diff --git a/projects/collection-editor-library/src/lib/components/options/options.component.html b/projects/collection-editor-library/src/lib/components/options/options.component.html index 0d5cef888..d792705f9 100644 --- a/projects/collection-editor-library/src/lib/components/options/options.component.html +++ b/projects/collection-editor-library/src/lib/components/options/options.component.html @@ -1,85 +1,48 @@ - -
- - - - - - - -
- -
-
-
- - - - - -
-
- - -
-
- -
- - -
-
-
-
- + + +
+ +
+
+
+ + + + +
-
- - - -
-
-
-
- -
-

-
-
- - -
-
-
-
-
+
+ +
- +
+ +
+
\ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/options/options.component.scss b/projects/collection-editor-library/src/lib/components/options/options.component.scss index e8556c9b7..ec4de88bd 100644 --- a/projects/collection-editor-library/src/lib/components/options/options.component.scss +++ b/projects/collection-editor-library/src/lib/components/options/options.component.scss @@ -127,11 +127,4 @@ .sb-field-group .sb-left-icon-btn.sb-btn-xs{ padding: 0 !important; margin-top: -10px; -} - -.optionLabel{ - font-size: 12px !important; - margin-bottom: 0.5rem !important; - color: #121213e0; - font-weight: 600; } \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/options/options.component.spec.data.ts b/projects/collection-editor-library/src/lib/components/options/options.component.spec.data.ts index 106c4a8d3..fc69eef7c 100644 --- a/projects/collection-editor-library/src/lib/components/options/options.component.spec.data.ts +++ b/projects/collection-editor-library/src/lib/components/options/options.component.spec.data.ts @@ -95,34 +95,4 @@ export const mockOptionData = { qType: 'MCQ', primaryCategory: 'Multiple Choice Question', }, - subMenus : [ - [{ - id: 'addHint', - name: 'Add Hint', - value: 'test', - enabled: false, - type: 'input', - label: 'label', - show:true - }] - ] }; - -export const sourcingSettingsMock = { - enforceCorrectAnswer: false, - showSolution: false, - showAddHints: true, - showAddScore: false, - showAddTips: true, - showAddTranslation: true, - showAddSecondaryQuestion: false, -}; - - -export const nativeElement = `
`; - - \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/options/options.component.spec.ts b/projects/collection-editor-library/src/lib/components/options/options.component.spec.ts index 436ffd339..4bb618474 100644 --- a/projects/collection-editor-library/src/lib/components/options/options.component.spec.ts +++ b/projects/collection-editor-library/src/lib/components/options/options.component.spec.ts @@ -4,44 +4,18 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { FormsModule } from '@angular/forms'; import { OptionsComponent } from './options.component'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { mockOptionData, nativeElement, sourcingSettingsMock } from './options.component.spec.data'; +import { mockOptionData } from './options.component.spec.data'; import { ConfigService } from '../../services/config/config.service'; import { SuiModule } from 'ng2-semantic-ui-v9'; -import { TreeService } from '../../services/tree/tree.service'; -import { treeData } from './../fancy-tree/fancy-tree.component.spec.data'; -import { EditorTelemetryService } from '../../services/telemetry/telemetry.service'; -import { EditorService } from "../../services/editor/editor.service"; - -const mockEditorService = { - editorConfig: { - config: { - renderTaxonomy:true, - hierarchy: { - level1: { - name: "Module", - type: "Unit", - mimeType: "application/vnd.ekstep.content-collection", - contentType: "Course Unit", - iconClass: "fa fa-folder-o", - children: {}, - }, - }, - }, - }, - parentIdentifier: "" -}; - describe('OptionsComponent', () => { let component: OptionsComponent; let fixture: ComponentFixture; - let treeService,telemetryService; beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ HttpClientTestingModule, FormsModule, SuiModule ], declarations: [ OptionsComponent, TelemetryInteractDirective ], - providers: [ConfigService,TreeService,EditorTelemetryService, - { provide: EditorService, useValue: mockEditorService },], + providers: [ConfigService], schemas: [ CUSTOM_ELEMENTS_SCHEMA ] }) .compileComponents(); @@ -49,18 +23,7 @@ describe('OptionsComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(OptionsComponent); - treeService = TestBed.get(TreeService); - telemetryService=TestBed.get(EditorTelemetryService); component = fixture.componentInstance; - component.sourcingSettings=sourcingSettingsMock; - spyOn(treeService, 'setTreeElement').and.callFake((el) => { - treeService.nativeElement = nativeElement; - }); - spyOn(treeService, 'getFirstChild').and.callFake(() => { - return { data: { metadata: treeData } }; - }); - component.editorState = mockOptionData.editorOptionData; - // fixture.detectChanges(); }); @@ -94,7 +57,6 @@ describe('OptionsComponent', () => { spyOn(component.editorDataOutput, 'emit').and.callThrough(); component.editorState = mockOptionData.editorOptionData; component.editorDataHandler(); - component.questionPrimaryCategory='Multiselect Multiple Choice Question'; expect(component.prepareMcqBody).toHaveBeenCalledWith(mockOptionData.editorOptionData); expect(component.editorDataOutput.emit).toHaveBeenCalled(); }); @@ -103,23 +65,19 @@ describe('OptionsComponent', () => { spyOn(component, 'getResponseDeclaration').and.callThrough(); spyOn(component, 'getInteractions').and.callThrough(); const result = component.prepareMcqBody(mockOptionData.editorOptionData); - // expect(mockOptionData.prepareMcqBody).toEqual(result); + expect(mockOptionData.prepareMcqBody).toEqual(result); expect(component.getResponseDeclaration).toHaveBeenCalledWith(mockOptionData.editorOptionData); expect(component.getInteractions).toHaveBeenCalledWith(mockOptionData.editorOptionData.options); }); it('#getResponseDeclaration() should return expected response declaration', () => { - spyOn(component,"getResponseDeclaration").and.callThrough(); - component.getResponseDeclaration(mockOptionData.editorOptionData); - expect(component.getResponseDeclaration).toHaveBeenCalled(); - // expect(mockOptionData.prepareMcqBody.responseDeclaration).toEqual(result); + const result = component.getResponseDeclaration(mockOptionData.editorOptionData); + expect(mockOptionData.prepareMcqBody.responseDeclaration).toEqual(result); }); it('#getInteractions() should return expected response declaration', () => { - spyOn(component,"getInteractions").and.callThrough(); - component.getInteractions(mockOptionData.editorOptionData.options); - expect(component.getInteractions).toHaveBeenCalled(); - // expect(mockOptionData.prepareMcqBody.interactions).toEqual(result); + const result = component.getInteractions(mockOptionData.editorOptionData.options); + expect(mockOptionData.prepareMcqBody.interactions).toEqual(result); }); it('#setTemplete() should set #templateType to "mcq-vertical-split" ', () => { @@ -131,31 +89,4 @@ describe('OptionsComponent', () => { expect(component.editorDataHandler).toHaveBeenCalled(); }); - it('#subMenuChange() should set the sub-menu value ', () => { - component.subMenus = mockOptionData.subMenus; - spyOn(component, 'subMenuChange').and.callThrough(); - component.subMenuChange({index:1,value:'test'},1) - expect(component.subMenus[0][0].value).toBe('test'); - }) - - it('#subMenuConfig() should set on initialize', () => { - spyOn(component,'subMenuConfig').and.callThrough(); - const options = [ - { - "body": "

true

" - } - ]; - component.subMenuConfig(options); - expect(component.subMenuConfig).toHaveBeenCalledWith(options) - }) - - it('#setScore() should call if score is entered', () => { - spyOn(component,'setScore').and.callThrough(); - const value = "20"; - const scoreIndex = 1; - component.setScore(value,scoreIndex); - component.editorDataHandler(); - expect(component.setScore).toHaveBeenCalled(); - }); - }); diff --git a/projects/collection-editor-library/src/lib/components/options/options.component.ts b/projects/collection-editor-library/src/lib/components/options/options.component.ts index 9507a5cbf..4b5d889d5 100644 --- a/projects/collection-editor-library/src/lib/components/options/options.component.ts +++ b/projects/collection-editor-library/src/lib/components/options/options.component.ts @@ -2,9 +2,6 @@ import { Component, OnInit, Input, EventEmitter, Output, ViewEncapsulation } fro import * as _ from 'lodash-es'; import { EditorTelemetryService } from '../../services/telemetry/telemetry.service'; import { ConfigService } from '../../services/config/config.service'; -import { SubMenu } from '../question-option-sub-menu/question-option-sub-menu.component'; -import { TreeService } from '../../services/tree/tree.service'; -import { EditorService } from '../../services/editor/editor.service'; @Component({ selector: 'lib-options', templateUrl: './options.component.html', @@ -14,35 +11,17 @@ import { EditorService } from '../../services/editor/editor.service'; export class OptionsComponent implements OnInit { @Input() editorState: any; @Input() showFormError; - @Input() sourcingSettings; - @Input() questionPrimaryCategory; - @Input() mapping = []; - @Input() isReadOnlyMode; @Output() editorDataOutput: EventEmitter = new EventEmitter(); public setCharacterLimit = 160; public setImageLimit = 1; public templateType = 'mcq-vertical'; - subMenus: SubMenu[][]; - hints = []; - showSubMenu:boolean=false; - parentMeta: any; - constructor( - public telemetryService: EditorTelemetryService, - public configService: ConfigService, - public treeService: TreeService, - private editorService: EditorService - ) {} + constructor(public telemetryService: EditorTelemetryService, public configService: ConfigService) { } ngOnInit() { if (!_.isUndefined(this.editorState.templateId)) { this.templateType = this.editorState.templateId; } this.editorDataHandler(); - this.mapping = _.get(this.editorState, 'responseDeclaration.response1.mapping') || []; - if(!_.isUndefined(this.editorService.editorConfig.config.renderTaxonomy)){ - this.parentMeta = this.treeService.getFirstChild().data.metadata; - this.showSubMenu=true; - } } editorDataHandler(event?) { @@ -64,15 +43,15 @@ export class OptionsComponent implements OnInit { }); metadata = { templateId: this.templateType, - name: this.questionPrimaryCategory || 'Multiple Choice Question', + name: 'Multiple Choice Question', responseDeclaration: this.getResponseDeclaration(editorState), interactionTypes: ['choice'], interactions: this.getInteractions(editorState.options), editorState: { - options, + options }, qType: 'MCQ', - primaryCategory: this.questionPrimaryCategory || 'Multiple Choice Question', + primaryCategory: 'Multiple Choice Question' }; return metadata; } @@ -85,10 +64,9 @@ export class OptionsComponent implements OnInit { type: 'integer', correctResponse: { value: editorState.answer, - outcomes: { SCORE: 1 }, - }, - mapping: this.mapping, - }, + outcomes: { SCORE: 1 } + } + } }; return responseDeclaration; } @@ -97,15 +75,13 @@ export class OptionsComponent implements OnInit { let index; const interactOptions = _.map(options, (opt, key) => { index = Number(key); - const hints = _.get(this.editorState, `interactions.response1.options[${index}].hints`) - return { label: opt.body, value: index, hints }; + return { label: opt.body, value: index }; }); - this.subMenuConfig(options); const interactions = { response1: { type: 'choice', - options: interactOptions, - }, + options: interactOptions + } }; return interactions; } @@ -115,36 +91,5 @@ export class OptionsComponent implements OnInit { this.editorDataHandler(); } - subMenuChange({ index, value }, optionIndex) { - _.set(this.editorState, `interactions.response1.options[${optionIndex}].hints.en`, value) - } - - subMenuConfig(options) { - this.subMenus = [] - options.map((opt, index) => { - const value = _.get(this.editorState, `interactions.response1.options[${index}].hints.en`) - this.subMenus[index] = [ - { - id: 'addHint', - name: 'Add Hint', - value, - label: 'Hint', - enabled: value ? true : false, - type: 'input', - show: _.get(this.sourcingSettings, 'showAddHints'), - }, - ]; - }); - } - - setScore(value, scoreIndex) { - const obj = { - respone: scoreIndex, - outcomes: { - score: value, - }, - }; - this.mapping[scoreIndex] = obj; - this.editorDataHandler(); - } } + diff --git a/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.html b/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.html index 6a5746915..5e69502c5 100644 --- a/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.html +++ b/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.html @@ -1,10 +1,10 @@
- {{ configService.labelConfig?.lbl?.publishCollection | interpolate: '${objectType}': objectType }} + {{configService.labelConfig?.lbl?.publishCollection}}
- {{configService.labelConfig?.lbl?.confirmPublishCollection | interpolate: '${objectType}': objectType}} + {{configService.labelConfig?.lbl?.confirmPublishCollection}}
{{configService.labelConfig?.lbl?.publishchecklistTitle}}
@@ -23,4 +23,4 @@ {{configService.labelConfig?.button_labels?.no_btn_label}}
-
+ \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.spec.ts b/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.spec.ts index 21d5237e8..5237e565f 100644 --- a/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.spec.ts +++ b/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.spec.ts @@ -7,8 +7,6 @@ import { HttpClientTestingModule } from '@angular/common/http/testing'; import { TelemetryInteractDirective } from '../../directives/telemetry-interact/telemetry-interact.directive'; import { EditorService } from '../../services/editor/editor.service'; import {mockData} from './publish-checklist.component.spec.data'; -import {InterpolatePipe} from '../../pipes/interpolate.pipe'; - describe('PublishChecklistComponent', () => { let component: PublishChecklistComponent; let fixture: ComponentFixture; @@ -17,7 +15,7 @@ describe('PublishChecklistComponent', () => { TestBed.configureTestingModule({ imports: [FormsModule, ReactiveFormsModule, HttpClientTestingModule], providers: [EditorService], - declarations: [PublishChecklistComponent, TelemetryInteractDirective, InterpolatePipe], + declarations: [PublishChecklistComponent, TelemetryInteractDirective], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) .compileComponents(); @@ -88,4 +86,4 @@ describe('PublishChecklistComponent', () => { component.valueChanges(event); expect(component.fieldsAvailable).toBeDefined(); }); -}); +}); \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.ts b/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.ts index 41c05e0d2..6f77e75c6 100644 --- a/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.ts +++ b/projects/collection-editor-library/src/lib/components/publish-checklist/publish-checklist.component.ts @@ -11,7 +11,6 @@ import * as _ from 'lodash-es'; export class PublishChecklistComponent implements OnInit { @Input() publishchecklist: any; @Input() actionType: any; - @Input() objectType: string; @Output() publishEmitter = new EventEmitter(); public isButtonEnable = false; public fieldsAvailable: any; @@ -56,4 +55,4 @@ export class PublishChecklistComponent implements OnInit { valueChanges(event: any) { this.fieldsAvailable = event; } -} +} \ No newline at end of file diff --git a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.css b/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.css deleted file mode 100644 index 1a9fcac86..000000000 --- a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.css +++ /dev/null @@ -1,6 +0,0 @@ -label { - font-size: 12px !important; - margin-bottom: 0.5rem !important; - color: #121213e0; - font-weight: 600; -} diff --git a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.html b/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.html deleted file mode 100644 index 681aadd93..000000000 --- a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.html +++ /dev/null @@ -1,31 +0,0 @@ -
-
-
- -
-
-
-
-
- -
- - -
-
-
diff --git a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.spec.ts b/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.spec.ts deleted file mode 100644 index e246a5869..000000000 --- a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.spec.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { QuestionOptionSubMenuComponent } from './question-option-sub-menu.component'; -import { mockData } from './question-option-sub-menu.spec.data'; - -describe('QuestionOptionSubMenuComponent', () => { - let component: QuestionOptionSubMenuComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [QuestionOptionSubMenuComponent], - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(QuestionOptionSubMenuComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - it('#onMenuClick() should enable the submenu if type is input ', () => { - component.subMenus = mockData.subMenus; - spyOn(component, 'onMenuClick').and.callThrough(); - component.onMenuClick(1) - expect(component.subMenus[1].enabled).toBe(true); - }); - it('#onMenuClick() should push dependant question if input value is array ', () => { - component.subMenus = mockData.subMenus; - spyOn(component, 'onMenuClick').and.callThrough(); - component.onMenuClick(2) - expect(component.subMenus[2].value.length).toBe(0); - }); - it('#onValueChange() should emit the value if type is input ', () => { - component.subMenus = mockData.subMenus; - spyOn(component, 'onValueChange').and.callThrough(); - spyOn(component.onChange, 'emit') - - let ev = { - target:{value:'text'} - } - component.onValueChange(ev,1) - expect(component.onValueChange).toHaveBeenCalled(); - expect(component.onChange.emit).toHaveBeenCalled() - }); -}); diff --git a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.ts b/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.ts deleted file mode 100644 index 642867b42..000000000 --- a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.component.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; -export class SubMenuEvent { - index: number; - value: any; -} -export interface SubMenu { - id: string; - name: string; - label: string; - value: string|any[]; - enabled: boolean; - type: string; - show: boolean; -} -@Component({ - selector: 'lib-question-option-sub-menu', - templateUrl: './question-option-sub-menu.component.html', - styleUrls: ['./question-option-sub-menu.component.css'], -}) -export class QuestionOptionSubMenuComponent { - @Input() subMenus: SubMenu[]; - @Output() public onChange: EventEmitter = new EventEmitter(); - - - onMenuClick(index) { - const selectedMenu = this.subMenus[index]; - selectedMenu.enabled = !selectedMenu.enabled; - if (selectedMenu.enabled && selectedMenu.type !== 'input' && Array.isArray(selectedMenu.value)) { - this.onChange.emit({index, value: undefined}); - } - } - - onValueChange(event, index) { - if (this.subMenus[index].type === 'input') { this.subMenus[index].value = event.target.value; } - this.onChange.emit({ index, value: event.target.value}); - } -} diff --git a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.spec.data.ts b/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.spec.data.ts deleted file mode 100644 index 4a8246034..000000000 --- a/projects/collection-editor-library/src/lib/components/question-option-sub-menu/question-option-sub-menu.spec.data.ts +++ /dev/null @@ -1,31 +0,0 @@ -export const mockData = { - subMenus: [ - { - id: 'addHint', - name: 'Add Hint', - value: '', - enabled: false, - type: 'input', - label: 'label', - show: true, - }, - { - id: 'addTip', - name: 'Add Tip', - value: '', - enabled: false, - type: 'input', - label: 'label', - show: true, - }, - { - id: 'addDependantQuestion', - name: 'Add Dependant Question', - value: [], - enabled: false, - type: '', - label: 'label', - show: true, - }, - ], -}; diff --git a/projects/collection-editor-library/src/lib/components/question/question.component.html b/projects/collection-editor-library/src/lib/components/question/question.component.html index 0de1254c4..adc1dd1d7 100644 --- a/projects/collection-editor-library/src/lib/components/question/question.component.html +++ b/projects/collection-editor-library/src/lib/components/question/question.component.html @@ -1,6 +1,3 @@ -
- -
@@ -10,173 +7,105 @@
- +
-
-
- - - - - - -
-
-
+
- +
-
+
- - -
-

-
-
- + (editorDataOutput)="editorDataHandler($event)"> + (editorDataOutput)="editorDataHandler($event)"> - - - -
- -