From 7affe313f0cda77b7a11d80f3fff70c5586935c3 Mon Sep 17 00:00:00 2001 From: Josh Perez <60019601+josh-signal@users.noreply.github.com> Date: Tue, 30 Nov 2021 21:14:25 -0500 Subject: [PATCH] Add image editor --- ACKNOWLEDGMENTS.md | 43 + _locales/en/messages.json | 84 ++ fixtures/snow.jpg | Bin 0 -> 248357 bytes images/icons/v2/crop-24.svg | 1 + images/icons/v2/crop-lock-24.svg | 1 + images/icons/v2/crop-unlock-24.svg | 1 + images/icons/v2/draw-24.svg | 1 + images/icons/v2/flip-outline-24.svg | 1 + images/icons/v2/pen-20.svg | 1 + images/icons/v2/pen-heavy-20.svg | 1 + images/icons/v2/pen-highlighter-20.svg | 1 + images/icons/v2/pen-light-20.svg | 1 + images/icons/v2/pen-medium-20.svg | 1 + images/icons/v2/pen-regular-20.svg | 1 + images/icons/v2/redo-24.svg | 1 + images/icons/v2/rotate-outline-24.svg | 1 + images/icons/v2/sticker-smiley-24.svg | 1 + images/icons/v2/text-24.svg | 2 +- images/icons/v2/text-highlight-20.svg | 1 + images/icons/v2/text-outline-20.svg | 1 + images/icons/v2/text-regular-20.svg | 1 + images/icons/v2/undo-24.svg | 2 +- package.json | 2 + patches/@types+fabric+4.5.3.patch | 129 +++ patches/fabric+4.6.0.patch | 22 + stylesheets/_modules.scss | 38 +- stylesheets/components/ContextMenu.scss | 116 +++ stylesheets/components/MediaEditor.scss | 340 +++++++ stylesheets/manifest.scss | 2 + ts/components/Button.tsx | 12 +- ts/components/CompositionArea.tsx | 42 + ts/components/ContextMenu.stories.tsx | 39 + ts/components/ContextMenu.tsx | 186 ++++ ts/components/LeftPane.stories.tsx | 8 +- ts/components/MediaEditor.stories.tsx | 46 + ts/components/MediaEditor.tsx | 934 ++++++++++++++++++ .../conversation/AttachmentList.stories.tsx | 2 +- ts/components/conversation/AttachmentList.tsx | 15 +- .../leftPane/LeftPaneSearchHelper.tsx | 2 + ts/components/stickers/StickerButton.tsx | 215 ++-- ts/components/stickers/StickerPicker.tsx | 40 +- ts/hooks/usePortal.ts | 21 + ts/hooks/useUniqueId.ts | 9 + ts/mediaEditor/ImageStateType.ts | 12 + ts/mediaEditor/MediaEditorFabricCropRect.ts | 196 ++++ ts/mediaEditor/MediaEditorFabricIText.ts | 35 + ts/mediaEditor/MediaEditorFabricPath.ts | 29 + .../MediaEditorFabricPencilBrush.ts | 23 + ts/mediaEditor/MediaEditorFabricSticker.ts | 36 + ts/mediaEditor/useFabricHistory.ts | 152 +++ ts/mediaEditor/util/color.ts | 47 + .../util/customFabricObjectControls.ts | 134 +++ ts/mediaEditor/util/getTextStyleAttributes.ts | 44 + ts/state/ducks/composer.ts | 5 +- ts/test-both/helpers/getStickerPacks.ts | 96 ++ ts/util/canEditImages.ts | 17 + ts/util/lint/exceptions.json | 916 ++++++++++++++++- yarn.lock | 324 +++++- 58 files changed, 4261 insertions(+), 173 deletions(-) create mode 100644 fixtures/snow.jpg create mode 100644 images/icons/v2/crop-24.svg create mode 100644 images/icons/v2/crop-lock-24.svg create mode 100644 images/icons/v2/crop-unlock-24.svg create mode 100644 images/icons/v2/draw-24.svg create mode 100644 images/icons/v2/flip-outline-24.svg create mode 100644 images/icons/v2/pen-20.svg create mode 100644 images/icons/v2/pen-heavy-20.svg create mode 100644 images/icons/v2/pen-highlighter-20.svg create mode 100644 images/icons/v2/pen-light-20.svg create mode 100644 images/icons/v2/pen-medium-20.svg create mode 100644 images/icons/v2/pen-regular-20.svg create mode 100644 images/icons/v2/redo-24.svg create mode 100644 images/icons/v2/rotate-outline-24.svg create mode 100644 images/icons/v2/sticker-smiley-24.svg create mode 100644 images/icons/v2/text-highlight-20.svg create mode 100644 images/icons/v2/text-outline-20.svg create mode 100644 images/icons/v2/text-regular-20.svg create mode 100644 patches/@types+fabric+4.5.3.patch create mode 100644 patches/fabric+4.6.0.patch create mode 100644 stylesheets/components/ContextMenu.scss create mode 100644 stylesheets/components/MediaEditor.scss create mode 100644 ts/components/ContextMenu.stories.tsx create mode 100644 ts/components/ContextMenu.tsx create mode 100644 ts/components/MediaEditor.stories.tsx create mode 100644 ts/components/MediaEditor.tsx create mode 100644 ts/hooks/usePortal.ts create mode 100644 ts/hooks/useUniqueId.ts create mode 100644 ts/mediaEditor/ImageStateType.ts create mode 100644 ts/mediaEditor/MediaEditorFabricCropRect.ts create mode 100644 ts/mediaEditor/MediaEditorFabricIText.ts create mode 100644 ts/mediaEditor/MediaEditorFabricPath.ts create mode 100644 ts/mediaEditor/MediaEditorFabricPencilBrush.ts create mode 100644 ts/mediaEditor/MediaEditorFabricSticker.ts create mode 100644 ts/mediaEditor/useFabricHistory.ts create mode 100644 ts/mediaEditor/util/color.ts create mode 100644 ts/mediaEditor/util/customFabricObjectControls.ts create mode 100644 ts/mediaEditor/util/getTextStyleAttributes.ts create mode 100644 ts/test-both/helpers/getStickerPacks.ts create mode 100644 ts/util/canEditImages.ts diff --git a/ACKNOWLEDGMENTS.md b/ACKNOWLEDGMENTS.md index a8f3a13df..109014021 100644 --- a/ACKNOWLEDGMENTS.md +++ b/ACKNOWLEDGMENTS.md @@ -45,6 +45,30 @@ Signal Desktop makes use of the following open source projects. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## @types/fabric + + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + ## abort-controller MIT License @@ -925,6 +949,25 @@ Signal Desktop makes use of the following open source projects. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## fabric + + Copyright (c) 2008-2015 Printio (Juriy Zaytsev, Maxim Chernyak) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ## fast-glob The MIT License (MIT) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 69e42e0aa..0a9cc428e 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -6566,6 +6566,90 @@ "message": "There was an error when saving your settings. Please try again.", "description": "Shown if there is an error when saving your preferred reaction settings. Should be very rare to see this message." }, + "MediaEditor__control--draw": { + "message": "Draw", + "description": "Label for the draw button in the media editor" + }, + "MediaEditor__control--text": { + "message": "Add text", + "description": "Label for the text button in the media editor" + }, + "MediaEditor__control--sticker": { + "message": "Stickers", + "description": "Label for the sticker button in the media editor" + }, + "MediaEditor__control--crop": { + "message": "Crop and rotate", + "description": "Label for the crop & rotate button in the media editor" + }, + "MediaEditor__control--undo": { + "message": "Undo", + "description": "Label for the undo button in the media editor" + }, + "MediaEditor__control--redo": { + "message": "Redo", + "description": "Label for the redo button in the media editor" + }, + "MediaEditor__text--regular": { + "message": "Regular", + "description": "Describes what attribute the color picker will change on the text" + }, + "MediaEditor__text--highlight": { + "message": "Highlight", + "description": "Describes what attribute the color picker will change on the text" + }, + "MediaEditor__text--outline": { + "message": "Outline", + "description": "Describes what attribute the color picker will change on the text" + }, + "MediaEditor__text--underline": { + "message": "Underline", + "description": "Describes what attribute the color picker will change on the text" + }, + "MediaEditor__draw--pen": { + "message": "Pen", + "description": "Type of brush to free draw" + }, + "MediaEditor__draw--highlighter": { + "message": "Highlighter", + "description": "Type of brush to free draw" + }, + "MediaEditor__draw--thin": { + "message": "Thin", + "description": "Tip width of the brush" + }, + "MediaEditor__draw--regular": { + "message": "Regular", + "description": "Tip width of the brush" + }, + "MediaEditor__draw--medium": { + "message": "Medium", + "description": "Tip width of the brush" + }, + "MediaEditor__draw--heavy": { + "message": "Heavy", + "description": "Tip width of the brush" + }, + "MediaEditor__crop--reset": { + "message": "Reset", + "description": "Reset the crop state" + }, + "MediaEditor__crop--rotate": { + "message": "Rotate", + "description": "Rotate the canvas" + }, + "MediaEditor__crop--flip": { + "message": "Flip", + "description": "Flip/mirror the canvas" + }, + "MediaEditor__crop--lock": { + "message": "Lock", + "description": "Lock the aspect ratio" + }, + "MediaEditor__crop--crop": { + "message": "Crop", + "description": "Performs the crop" + }, "WhatsNew__modal-title": { "message": "What's New", "description": "Title for the whats new modal" diff --git a/fixtures/snow.jpg b/fixtures/snow.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe959acba37b17ea8b65b1494b3d555a79422c6f GIT binary patch literal 248357 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
}7n%wM1Wcmm8k9im1EXcbJ>)*ydG*TxVwH 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

}l1o18NrYG}72JE& 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 literal 0 HcmV?d00001 diff --git a/images/icons/v2/crop-24.svg b/images/icons/v2/crop-24.svg new file mode 100644 index 000000000..ecf4a007c --- /dev/null +++ b/images/icons/v2/crop-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/crop-lock-24.svg b/images/icons/v2/crop-lock-24.svg new file mode 100644 index 000000000..b0502a105 --- /dev/null +++ b/images/icons/v2/crop-lock-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/crop-unlock-24.svg b/images/icons/v2/crop-unlock-24.svg new file mode 100644 index 000000000..6c08707f5 --- /dev/null +++ b/images/icons/v2/crop-unlock-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/draw-24.svg b/images/icons/v2/draw-24.svg new file mode 100644 index 000000000..a6e79b10b --- /dev/null +++ b/images/icons/v2/draw-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/flip-outline-24.svg b/images/icons/v2/flip-outline-24.svg new file mode 100644 index 000000000..d8b7f2bcd --- /dev/null +++ b/images/icons/v2/flip-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/pen-20.svg b/images/icons/v2/pen-20.svg new file mode 100644 index 000000000..0a184fd4a --- /dev/null +++ b/images/icons/v2/pen-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/pen-heavy-20.svg b/images/icons/v2/pen-heavy-20.svg new file mode 100644 index 000000000..f1bb57dda --- /dev/null +++ b/images/icons/v2/pen-heavy-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/pen-highlighter-20.svg b/images/icons/v2/pen-highlighter-20.svg new file mode 100644 index 000000000..646605821 --- /dev/null +++ b/images/icons/v2/pen-highlighter-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/pen-light-20.svg b/images/icons/v2/pen-light-20.svg new file mode 100644 index 000000000..e103b3c25 --- /dev/null +++ b/images/icons/v2/pen-light-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/pen-medium-20.svg b/images/icons/v2/pen-medium-20.svg new file mode 100644 index 000000000..ab289df4c --- /dev/null +++ b/images/icons/v2/pen-medium-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/pen-regular-20.svg b/images/icons/v2/pen-regular-20.svg new file mode 100644 index 000000000..e75ed1583 --- /dev/null +++ b/images/icons/v2/pen-regular-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/redo-24.svg b/images/icons/v2/redo-24.svg new file mode 100644 index 000000000..fd0cc572e --- /dev/null +++ b/images/icons/v2/redo-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/rotate-outline-24.svg b/images/icons/v2/rotate-outline-24.svg new file mode 100644 index 000000000..e455cc0ce --- /dev/null +++ b/images/icons/v2/rotate-outline-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/sticker-smiley-24.svg b/images/icons/v2/sticker-smiley-24.svg new file mode 100644 index 000000000..5186bee37 --- /dev/null +++ b/images/icons/v2/sticker-smiley-24.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/text-24.svg b/images/icons/v2/text-24.svg index 0e5e09922..25900fdae 100644 --- a/images/icons/v2/text-24.svg +++ b/images/icons/v2/text-24.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/images/icons/v2/text-highlight-20.svg b/images/icons/v2/text-highlight-20.svg new file mode 100644 index 000000000..b1012a114 --- /dev/null +++ b/images/icons/v2/text-highlight-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/text-outline-20.svg b/images/icons/v2/text-outline-20.svg new file mode 100644 index 000000000..4ab50f8ce --- /dev/null +++ b/images/icons/v2/text-outline-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/text-regular-20.svg b/images/icons/v2/text-regular-20.svg new file mode 100644 index 000000000..dfc8f9ba1 --- /dev/null +++ b/images/icons/v2/text-regular-20.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icons/v2/undo-24.svg b/images/icons/v2/undo-24.svg index 2369b9d41..0deca433d 100644 --- a/images/icons/v2/undo-24.svg +++ b/images/icons/v2/undo-24.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/package.json b/package.json index 4eaedaa04..1701ad770 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "@react-spring/web": "9.2.6", "@signalapp/signal-client": "0.11.0", "@sindresorhus/is": "0.8.0", + "@types/fabric": "4.5.3", "abort-controller": "3.0.0", "array-move": "2.1.0", "axe-core": "4.1.4", @@ -94,6 +95,7 @@ "emoji-datasource-apple": "7.0.2", "emoji-regex": "9.2.2", "encoding": "0.1.13", + "fabric": "4.6.0", "fast-glob": "3.2.1", "filesize": "3.6.1", "firstline": "1.2.1", diff --git a/patches/@types+fabric+4.5.3.patch b/patches/@types+fabric+4.5.3.patch new file mode 100644 index 000000000..a5cb755db --- /dev/null +++ b/patches/@types+fabric+4.5.3.patch @@ -0,0 +1,129 @@ +diff --git a/node_modules/@types/fabric/fabric-impl.d.ts b/node_modules/@types/fabric/fabric-impl.d.ts +index 9b2e307..6da58c3 100755 +--- a/node_modules/@types/fabric/fabric-impl.d.ts ++++ b/node_modules/@types/fabric/fabric-impl.d.ts +@@ -1194,18 +1194,6 @@ interface IStaticCanvasOptions { + svgViewportTransformation?: boolean | undefined; + } + +-export interface FreeDrawingBrush { +- /** +- * Can be any regular color value. +- */ +- color: string; +- +- /** +- * Brush width measured in pixels. +- */ +- width: number; +-} +- + export interface StaticCanvas + extends IObservable, + IStaticCanvasOptions, +@@ -1222,7 +1210,7 @@ export class StaticCanvas { + + _activeObject?: Object | Group | undefined; + +- freeDrawingBrush: FreeDrawingBrush; ++ freeDrawingBrush: BaseBrush; + + /** + * Calculates canvas element offset relative to the document +@@ -1931,6 +1919,8 @@ interface ICanvasOptions extends IStaticCanvasOptions { + export interface Canvas extends StaticCanvas {} + export interface Canvas extends ICanvasOptions {} + export class Canvas { ++ toCanvasElement(options?: IDataURLOptions): HTMLCanvasElement; ++ + /** + * Constructor + * @param element element to initialize instance on +@@ -2043,9 +2033,8 @@ export class Canvas { + getSelectionElement(): HTMLCanvasElement; + /** + * Returns currently active object +- * @return {fabric.Object} active object + */ +- getActiveObject(): Object; ++ getActiveObject(): null | Object; + /** + * Returns an array with the current selected objects + * @return {fabric.Object} active object +@@ -3997,7 +3986,7 @@ interface IPathOptions extends IObjectOptions { + */ + path?: Point[] | undefined; + } +-export interface Path extends Object, IPathOptions {} ++export interface Path extends Object {} + export class Path { + /** + * Constructor +@@ -4006,6 +3995,8 @@ export class Path { + */ + constructor(path?: string | Point[], options?: IPathOptions); + ++ path: Array; ++ + pathOffset: Point; + + /** +@@ -5865,6 +5856,12 @@ export class PatternBrush extends PencilBrush { + createPath(pathData: string): Path; + } + export class PencilBrush extends BaseBrush { ++ /** ++ * PencilBrush class ++ * @param fabric.Canvas canvas ++ */ ++ constructor(canvas: fabric.Canvas); ++ + /** + * Converts points to SVG path + * @param points Array of points +@@ -5878,6 +5875,32 @@ export class PencilBrush extends BaseBrush { + createPath(pathData: string): Path; + } + ++/////////////////////////////////////////////////////////////////////////////// ++// Fabric controlsUtils Interface ++////////////////////////////////////////////////////////////////////////////// ++interface IControlsUtils { ++ scaleCursorStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string; ++ skewCursorStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string; ++ scaleSkewCursorStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string; ++ rotationWithSnapping(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ scalingEqually(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ scalingX(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ scalingY(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ scalingYOrSkewingX(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ scalingXOrSkewingY(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ changeWidth(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ skewHandlerX(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ skewHandlerY(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ dragHandler(eventData: Event, transform: Transform, x: number, y: number): boolean; ++ scaleOrSkewActionName(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string; ++ rotationStyleHandler(eventData: Event, control: fabric.Control, fabricObject: fabric.Object): string; ++ wrapWithFixedAnchor(actionHandler: ((eventData: Event, transform: Transform, x: number, y: number) => T)): ((eventData: Event, transform: Transform, x: number, y: number) => T); ++ wrapWithFireEvent(actionHandler: ((eventData: Event, transform: Transform, x: number, y: number) => T)): ((eventData: Event, transform: Transform, x: number, y: number) => T); ++ getLocalPoint(transform: Transform, originX: string, originY: string, x: number, y: number): fabric.Point; ++} ++ ++export const controlsUtils: IControlsUtils; ++ + /////////////////////////////////////////////////////////////////////////////// + // Fabric util Interface + ////////////////////////////////////////////////////////////////////////////// +@@ -6452,6 +6475,12 @@ interface IUtilMisc { + */ + isTransparent(ctx: CanvasRenderingContext2D, x: number, y: number, tolerance: number): boolean; + ++ /** ++ * Join path commands to go back to svg format ++ * @param pathData fabricJS parsed path commands ++ */ ++ joinPath(pathData: Array): string; ++ + /** + * reset an object transform state to neutral. Top and left are not accounted for + * @static diff --git a/patches/fabric+4.6.0.patch b/patches/fabric+4.6.0.patch new file mode 100644 index 000000000..5418a45cf --- /dev/null +++ b/patches/fabric+4.6.0.patch @@ -0,0 +1,22 @@ +diff --git a/node_modules/fabric/dist/fabric.js b/node_modules/fabric/dist/fabric.js +index 86536ce..487151b 100644 +--- a/node_modules/fabric/dist/fabric.js ++++ b/node_modules/fabric/dist/fabric.js +@@ -3306,16 +3306,7 @@ fabric.CommonMethods = { + } + + (function () { +- var style = fabric.document.documentElement.style, +- selectProp = 'userSelect' in style +- ? 'userSelect' +- : 'MozUserSelect' in style +- ? 'MozUserSelect' +- : 'WebkitUserSelect' in style +- ? 'WebkitUserSelect' +- : 'KhtmlUserSelect' in style +- ? 'KhtmlUserSelect' +- : ''; ++ var selectProp = 'userSelect'; + + /** + * Makes element unselectable diff --git a/stylesheets/_modules.scss b/stylesheets/_modules.scss index 4a76d08cd..4df7e1164 100644 --- a/stylesheets/_modules.scss +++ b/stylesheets/_modules.scss @@ -3188,6 +3188,40 @@ button.module-image__border-overlay:focus { position: relative; } +.module-attachments__edit-icon { + align-items: center; + background: $color-black-alpha-60; + border-radius: 100%; + display: flex; + height: 36px; + justify-content: center; + left: 50%; + margin-left: -20px; + margin-top: -18px; + position: absolute; + top: 50%; + visibility: hidden; + width: 36px; + + &::after { + @include color-svg('../images/icons/v2/edit-solid-16.svg', $color-white); + content: ''; + height: 20px; + width: 20px; + } +} + +.module-attachments--editable { + display: inline-block; + position: relative; + + &:hover { + .module-attachments__edit-icon { + visibility: visible; + } + } +} + .module-attachments__close-button { @include button-reset; @@ -5623,9 +5657,9 @@ button.module-image__border-overlay:focus { } @include dark-theme { - background: $color-gray-75; + background: $color-gray-80; ::-webkit-scrollbar-thumb { - border: 2px solid $color-gray-75; + border: 2px solid $color-gray-80; } } } diff --git a/stylesheets/components/ContextMenu.scss b/stylesheets/components/ContextMenu.scss new file mode 100644 index 000000000..a94bbefd7 --- /dev/null +++ b/stylesheets/components/ContextMenu.scss @@ -0,0 +1,116 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +.ContextMenu { + &__popper { + @extend %module-composition-popper; + margin: 0; + padding: 6px 0; + width: auto; + } + + &__title { + @include font-body-1-bold; + margin-bottom: 12px; + } + + &__button { + @include button-reset(); + align-items: center; + border-radius: 16px; + display: flex; + height: 32px; + justify-content: center; + opacity: 0.5; + width: 32px; + + &:focus, + &:hover { + opacity: 1; + } + + &::after { + content: ''; + display: block; + flex-shrink: 0; + height: 24px; + width: 24px; + } + + &--active { + opacity: 1; + + @include light-theme() { + background-color: $color-gray-05; + } + + @include dark-theme() { + background-color: $color-gray-75; + } + } + } + + &__option { + @include button-reset(); + @include font-body-2; + @include dark-theme { + color: $color-gray-05; + } + + align-items: center; + border-radius: 6px; + display: flex; + justify-content: space-between; + padding: 6px 8px; + min-width: 150px; + + &--container { + display: flex; + } + + &--icon { + height: 16px; + margin-right: 8px; + width: 16px; + } + + &--selected { + height: 12px; + margin: 0 6px; + width: 16px; + + @include light-theme { + @include color-svg('../images/icons/v2/check-24.svg', $color-black); + } + @include dark-theme { + @include color-svg('../images/icons/v2/check-24.svg', $color-white); + } + } + + &--title { + @include font-body-2; + } + + &--description { + @include font-subtitle; + } + + &:hover { + @include light-theme() { + background-color: $color-gray-05; + } + + @include dark-theme() { + background-color: $color-gray-65; + } + } + + &--focused, + &:focus, + &:active { + border-radius: 6px; + box-shadow: 0 0 1px 1px $color-ultramarine; + outline: none; + } + } +} diff --git a/stylesheets/components/MediaEditor.scss b/stylesheets/components/MediaEditor.scss new file mode 100644 index 000000000..71510df3f --- /dev/null +++ b/stylesheets/components/MediaEditor.scss @@ -0,0 +1,340 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +.MediaEditor { + background: $color-gray-95; + display: flex; + flex-direction: column; + height: 100vh; + left: 0; + position: absolute; + top: 0; + user-select: none; + width: 100vw; + z-index: 2; + + &__container { + display: flex; + flex: 1; + padding: 22px 60px; + padding-bottom: 0; + overflow: hidden; + } + + &__media { + align-items: center; + display: flex; + height: 100%; + justify-content: center; + position: relative; + width: 100%; + + &--canvas { + border-radius: 12px; + transition: border-radius 200ms ease-out; + + &--cropping { + border-radius: 0; + } + } + } + + &__control { + @include button-reset; + align-items: center; + border-radius: 32px; + display: inline-flex; + height: 32px; + justify-content: center; + margin: 0 15px; + opacity: 1; + width: 32px; + + &::after { + content: ' '; + height: 24px; + width: 24px; + } + + &--crop::after { + @include color-svg('../images/icons/v2/crop-24.svg', $color-white); + } + + &--pen::after { + @include color-svg('../images/icons/v2/draw-24.svg', $color-white); + } + + &--redo { + &::after { + @include color-svg('../images/icons/v2/redo-24.svg', $color-white); + } + &:disabled::after { + @include color-svg('../images/icons/v2/redo-24.svg', $color-gray-45); + } + } + + &--sticker.module-sticker-button__button::after { + @include color-svg( + '../images/icons/v2/sticker-smiley-24.svg', + $color-white + ); + } + + &--text::after { + @include color-svg('../images/icons/v2/text-24.svg', $color-white); + } + + &--undo { + &::after { + @include color-svg('../images/icons/v2/undo-24.svg', $color-white); + } + &:disabled::after { + @include color-svg('../images/icons/v2/undo-24.svg', $color-gray-45); + } + } + + &--selected { + background-color: $color-white; + + &::after { + background-color: $color-black; + } + } + + &:hover { + background-color: $color-gray-80; + + &::after { + background-color: $color-white; + } + } + } + + &__toolbar { + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + padding: 22px; + width: 100%; + + &--buttons { + align-items: center; + display: flex; + justify-content: center; + width: 100%; + } + + &--space { + height: 36px; + margin-bottom: 22px; + } + } + + &__controls { + display: flex; + flex-grow: 1; + flex-wrap: wrap; + justify-content: center; + max-width: 596px; + } + + &__tools { + align-items: center; + display: flex; + height: 36px; + justify-content: center; + margin-bottom: 22px; + } + + &__crop-toolbar { + align-items: center; + background-color: $color-gray-90; + border-radius: 10px; + color: $color-white; + display: flex; + + &--button { + @include button-reset; + margin: 0 8px; + padding: 8px; + } + + &--rotate { + @include color-svg( + '../images/icons/v2/rotate-outline-24.svg', + $color-white + ); + height: 20px; + width: 20px; + } + + &--flip { + @include color-svg( + '../images/icons/v2/flip-outline-24.svg', + $color-white + ); + height: 20px; + width: 20px; + } + + &--locked { + @include color-svg('../images/icons/v2/crop-lock-24.svg', $color-white); + height: 20px; + width: 20px; + } + + &--unlocked { + @include color-svg('../images/icons/v2/crop-unlock-24.svg', $color-white); + height: 20px; + width: 20px; + } + + &--reset { + padding-left: 24px; + } + + &--crop { + padding-right: 24px; + } + } + + &__hue-slider.Slider { + background-image: linear-gradient( + 90deg, + hsl(0, 0%, 100%), + hsl(0, 0%, 0%), + hsl(0, 100%, 50%), + hsl(45, 100%, 50%), + hsl(90, 100%, 50%), + hsl(135, 100%, 50%), + hsl(180, 100%, 50%), + hsl(225, 100%, 50%), + hsl(270, 100%, 50%), + hsl(315, 100%, 50%), + hsl(360, 100%, 50%) + ); + border-radius: 4px; + height: 8px; + margin-right: 7px; + width: 280px; + } + + &__hue-slider__handle.Slider__handle { + background-color: transparent; + border: 7px solid $color-white; + margin-top: -7px; + margin-left: -11px; + height: 22px; + width: 22px; + } + + &__button { + @mixin button($svg) { + height: 20px; + margin: 0 7px; + opacity: 1; + width: 20px; + + &::after { + @include color-svg($svg, $color-white); + width: 20px; + height: 20px; + } + + &:hover { + background-color: $color-gray-80; + } + } + + &__text { + @include button('../images/icons/v2/edit-solid-16.svg'); + } + + &--draw-pen { + @include button('../images/icons/v2/pen-20.svg'); + } + + &--draw-highlighter { + @include button('../images/icons/v2/pen-highlighter-20.svg'); + } + + &--text-regular { + @include button('../images/icons/v2/text-regular-20.svg'); + } + + &--text-highlight { + @include button('../images/icons/v2/text-highlight-20.svg'); + } + + &--text-outline { + @include button('../images/icons/v2/text-outline-20.svg'); + } + + &--width-thin { + @include button('../images/icons/v2/pen-light-20.svg'); + } + + &--width-regular { + @include button('../images/icons/v2/pen-regular-20.svg'); + } + + &--width-medium { + @include button('../images/icons/v2/pen-medium-20.svg'); + } + + &--width-heavy { + @include button('../images/icons/v2/pen-heavy-20.svg'); + } + } + + &__icon { + &--draw-pen { + @include color-svg('../images/icons/v2/pen-20.svg', $color-white); + } + + &--draw-highlighter { + @include color-svg( + '../images/icons/v2/pen-highlighter-20.svg', + $color-white + ); + } + + &--text-regular { + @include color-svg( + '../images/icons/v2/text-regular-20.svg', + $color-white + ); + } + + &--text-highlight { + @include color-svg( + '../images/icons/v2/text-highlight-20.svg', + $color-white + ); + } + + &--text-outline { + @include color-svg( + '../images/icons/v2/text-outline-20.svg', + $color-white + ); + } + + &--width-thin { + @include color-svg('../images/icons/v2/pen-light-20.svg', $color-white); + } + + &--width-regular { + @include color-svg('../images/icons/v2/pen-regular-20.svg', $color-white); + } + + &--width-medium { + @include color-svg('../images/icons/v2/pen-medium-20.svg', $color-white); + } + + &--width-heavy { + @include color-svg('../images/icons/v2/pen-heavy-20.svg', $color-white); + } + } +} diff --git a/stylesheets/manifest.scss b/stylesheets/manifest.scss index 148b59302..32411a387 100644 --- a/stylesheets/manifest.scss +++ b/stylesheets/manifest.scss @@ -51,6 +51,7 @@ @import './components/ContactPills.scss'; @import './components/ContactSpoofingReviewDialog.scss'; @import './components/ContactSpoofingReviewDialogPerson.scss'; +@import './components/ContextMenu.scss'; @import './components/ConversationDetails.scss'; @import './components/ConversationHeader.scss'; @import './components/ConversationView.scss'; @@ -71,6 +72,7 @@ @import './components/LeftPaneDialog.scss'; @import './components/LeftPaneSearchInput.scss'; @import './components/Lightbox.scss'; +@import './components/MediaEditor.scss'; @import './components/MediaQualitySelector.scss'; @import './components/MessageAudio.scss'; @import './components/MessageBody.scss'; diff --git a/ts/components/Button.tsx b/ts/components/Button.tsx index adf77a0fc..4281964c9 100644 --- a/ts/components/Button.tsx +++ b/ts/components/Button.tsx @@ -5,7 +5,9 @@ import type { CSSProperties, MouseEventHandler, ReactNode } from 'react'; import React from 'react'; import classNames from 'classnames'; +import type { Theme } from '../util/theme'; import { assert } from '../util/assert'; +import { themeClassName } from '../util/theme'; export enum ButtonSize { Large, @@ -41,6 +43,7 @@ type PropsType = { size?: ButtonSize; style?: CSSProperties; tabIndex?: number; + theme?: Theme; variant?: ButtonVariant; } & ( | { @@ -97,6 +100,7 @@ export const Button = React.forwardRef( icon, style, tabIndex, + theme, variant = ButtonVariant.Primary, size = variant === ButtonVariant.Details ? ButtonSize.Small @@ -120,7 +124,7 @@ export const Button = React.forwardRef( const variantClassName = VARIANT_CLASS_NAMES.get(variant); assert(variantClassName, ' ); + + if (theme) { + return

; + } + + return buttonElement; } ); diff --git a/ts/components/CompositionArea.tsx b/ts/components/CompositionArea.tsx index 5baa1679f..f7c7d62ac 100644 --- a/ts/components/CompositionArea.tsx +++ b/ts/components/CompositionArea.tsx @@ -55,6 +55,10 @@ import { useAttachFileShortcut, useKeyboardShortcuts, } from '../hooks/useKeyboardShortcuts'; +import { MediaEditor } from './MediaEditor'; +import { IMAGE_PNG } from '../types/MIME'; +import { isImageTypeSupported } from '../util/GoogleChrome'; +import { canEditImages } from '../util/canEditImages'; export type CompositionAPIType = | { @@ -253,6 +257,9 @@ export const CompositionArea = ({ const [disabled, setDisabled] = useState(false); const [dirty, setDirty] = useState(false); const [large, setLarge] = useState(false); + const [attachmentToEdit, setAttachmentToEdit] = useState< + AttachmentDraftType | undefined + >(); const inputApiRef = useRef(); const fileInputRef = useRef(null); @@ -286,6 +293,19 @@ export const CompositionArea = ({ } }, []); + const hasImageEditingEnabled = canEditImages(); + + function maybeEditAttachment(attachment: AttachmentDraftType) { + if ( + !hasImageEditingEnabled || + !isImageTypeSupported(attachment.contentType) + ) { + return; + } + + setAttachmentToEdit(attachment); + } + const attachFileShortcut = useAttachFileShortcut(launchAttachmentPicker); useKeyboardShortcuts(attachFileShortcut); @@ -560,6 +580,26 @@ export const CompositionArea = ({ return (
+ {attachmentToEdit && 'url' in attachmentToEdit && attachmentToEdit.url && ( + setAttachmentToEdit(undefined)} + onDone={data => { + const newAttachment = { + ...attachmentToEdit, + contentType: IMAGE_PNG, + data, + size: data.byteLength, + }; + + addAttachment(conversationId, newAttachment); + setAttachmentToEdit(undefined); + }} + installedPacks={installedPacks} + recentStickers={recentStickers} + /> + )}
+ ))} +
+ )} +
+ ); +}; diff --git a/ts/components/LeftPane.stories.tsx b/ts/components/LeftPane.stories.tsx index b6ce37cb4..f7e59875d 100644 --- a/ts/components/LeftPane.stories.tsx +++ b/ts/components/LeftPane.stories.tsx @@ -430,12 +430,8 @@ story.add('Archive: searching a conversation', () => ( modeSpecificProps: { mode: LeftPaneMode.Archive, archivedConversations: defaultConversations, - searchConversation: defaultConversations[0], - searchTerm: 'foo bar', - conversationResults: { isLoading: true }, - contactResults: { isLoading: true }, - messageResults: { isLoading: true }, - primarySendsSms: false, + searchConversation: undefined, + searchTerm: '', }, })} /> diff --git a/ts/components/MediaEditor.stories.tsx b/ts/components/MediaEditor.stories.tsx new file mode 100644 index 000000000..3f80759f3 --- /dev/null +++ b/ts/components/MediaEditor.stories.tsx @@ -0,0 +1,46 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import React from 'react'; +import { storiesOf } from '@storybook/react'; +import { action } from '@storybook/addon-actions'; + +import type { PropsType } from './MediaEditor'; +import { MediaEditor } from './MediaEditor'; +import enMessages from '../../_locales/en/messages.json'; +import { setupI18n } from '../util/setupI18n'; +import { Stickers, installedPacks } from '../test-both/helpers/getStickerPacks'; + +const i18n = setupI18n('en', enMessages); + +const story = storiesOf('Components/MediaEditor', module); + +const IMAGE_1 = '/fixtures/nathan-anderson-316188-unsplash.jpg'; +const IMAGE_2 = '/fixtures/tina-rolf-269345-unsplash.jpg'; +const IMAGE_3 = '/fixtures/kitten-4-112-112.jpg'; +const IMAGE_4 = '/fixtures/snow.jpg'; + +const getDefaultProps = (): PropsType => ({ + i18n, + imageSrc: IMAGE_2, + onClose: action('onClose'), + onDone: action('onDone'), + + // StickerButtonProps + installedPacks, + recentStickers: [Stickers.wide, Stickers.tall, Stickers.abe], +}); + +story.add('Extra Large', () => ); + +story.add('Large', () => ( + +)); + +story.add('Smol', () => ( + +)); + +story.add('Portrait', () => ( + +)); diff --git a/ts/components/MediaEditor.tsx b/ts/components/MediaEditor.tsx new file mode 100644 index 000000000..df285be23 --- /dev/null +++ b/ts/components/MediaEditor.tsx @@ -0,0 +1,934 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import Measure from 'react-measure'; +import React, { useEffect, useRef, useState } from 'react'; +import classNames from 'classnames'; +import { createPortal } from 'react-dom'; +import { fabric } from 'fabric'; +import { get, has, noop } from 'lodash'; + +import type { LocalizerType } from '../types/Util'; +import type { Props as StickerButtonProps } from './stickers/StickerButton'; +import type { ImageStateType } from '../mediaEditor/ImageStateType'; + +import * as log from '../logging/log'; +import { Button, ButtonVariant } from './Button'; +import { ContextMenu } from './ContextMenu'; +import { Slider } from './Slider'; +import { StickerButton } from './stickers/StickerButton'; +import { Theme } from '../util/theme'; +import { canvasToBytes } from '../util/canvasToBytes'; +import { useFabricHistory } from '../mediaEditor/useFabricHistory'; +import { usePortal } from '../hooks/usePortal'; +import { useUniqueId } from '../hooks/useUniqueId'; + +import { MediaEditorFabricPencilBrush } from '../mediaEditor/MediaEditorFabricPencilBrush'; +import { MediaEditorFabricCropRect } from '../mediaEditor/MediaEditorFabricCropRect'; +import { MediaEditorFabricIText } from '../mediaEditor/MediaEditorFabricIText'; +import { MediaEditorFabricSticker } from '../mediaEditor/MediaEditorFabricSticker'; +import { getRGBA, getHSL } from '../mediaEditor/util/color'; +import { + TextStyle, + getTextStyleAttributes, +} from '../mediaEditor/util/getTextStyleAttributes'; + +export type PropsType = { + i18n: LocalizerType; + imageSrc: string; + onClose: () => unknown; + onDone: (data: Uint8Array) => unknown; +} & Pick; + +enum EditMode { + Crop = 'Crop', + Draw = 'Draw', + Text = 'Text', +} + +enum DrawWidth { + Thin = 2, + Regular = 4, + Medium = 12, + Heavy = 24, +} + +enum DrawTool { + Pen = 'Pen', + Highlighter = 'Highlighter', +} + +export const MediaEditor = ({ + i18n, + imageSrc, + onClose, + onDone, + + // StickerButtonProps + installedPacks, + recentStickers, +}: PropsType): JSX.Element | null => { + const [fabricCanvas, setFabricCanvas] = useState(); + const [image, setImage] = useState(new Image()); + + const isRestoringImageState = useRef(false); + + const canvasId = useUniqueId(); + + const [imageState, setImageState] = useState({ + angle: 0, + cropX: 0, + cropY: 0, + flipX: false, + flipY: false, + height: image.height, + width: image.width, + }); + + // Initial image load and Fabric canvas setup + useEffect(() => { + const img = new Image(); + img.onload = () => { + setImage(img); + + const canvas = new fabric.Canvas(canvasId); + canvas.selection = false; + setFabricCanvas(canvas); + setImageState(curr => ({ + ...curr, + height: img.height, + width: img.width, + })); + }; + img.onerror = () => { + // This is a bad experience, but it should be impossible. + log.error(': image failed to load. Closing'); + onClose(); + }; + img.src = imageSrc; + return () => { + img.onload = noop; + img.onerror = noop; + }; + }, [canvasId, imageSrc, onClose]); + + // Keyboard support + useEffect(() => { + function handleKeydown(ev: KeyboardEvent) { + if (!fabricCanvas) { + return; + } + + const obj = fabricCanvas.getActiveObject(); + + if (!obj) { + return; + } + + if (ev.key === 'Delete') { + if (!obj.excludeFromExport) { + fabricCanvas.remove(obj); + } + ev.preventDefault(); + ev.stopPropagation(); + } + + if (ev.key === 'Escape') { + fabricCanvas.discardActiveObject(); + fabricCanvas.requestRenderAll(); + ev.preventDefault(); + ev.stopPropagation(); + } + } + + document.addEventListener('keydown', handleKeydown); + + return () => { + document.removeEventListener('keydown', handleKeydown); + }; + }, [fabricCanvas]); + + const history = useFabricHistory(fabricCanvas); + + // Take a snapshot of history whenever imageState changes + useEffect(() => { + if ( + !imageState.height || + !imageState.width || + isRestoringImageState.current + ) { + isRestoringImageState.current = false; + return; + } + history?.takeSnapshot(imageState); + }, [history, imageState]); + + const [containerWidth, setContainerWidth] = useState(0); + const [containerHeight, setContainerHeight] = useState(0); + + const zoom = + Math.min( + containerWidth / imageState.width, + containerHeight / imageState.height + ) || 1; + + // Update the canvas dimensions (and therefore zoom) + useEffect(() => { + if (!fabricCanvas || !imageState.width || !imageState.height) { + return; + } + fabricCanvas.setDimensions({ + width: imageState.width * zoom, + height: imageState.height * zoom, + }); + fabricCanvas.setZoom(zoom); + }, [ + containerHeight, + containerWidth, + fabricCanvas, + imageState.height, + imageState.width, + zoom, + ]); + + // Refresh the background image according to imageState changes + useEffect(() => { + const backgroundImage = new fabric.Image(image, { + canvas: fabricCanvas, + height: imageState.height || image.height, + width: imageState.width || image.width, + }); + + let left: number; + let top: number; + switch (imageState.angle) { + case 0: + left = 0; + top = 0; + break; + case 90: + left = imageState.width; + top = 0; + break; + case 180: + left = imageState.width; + top = imageState.height; + break; + case 270: + left = 0; + top = imageState.height; + break; + default: + throw new Error('Unexpected angle'); + } + + let { height, width } = imageState; + if (imageState.angle % 180) { + [width, height] = [height, width]; + } + + fabricCanvas?.setBackgroundImage( + backgroundImage, + fabricCanvas.requestRenderAll.bind(fabricCanvas), + { + angle: imageState.angle, + cropX: imageState.cropX, + cropY: imageState.cropY, + flipX: imageState.flipX, + flipY: imageState.flipY, + left, + top, + originX: 'left', + originY: 'top', + width, + height, + } + ); + }, [fabricCanvas, image, imageState]); + + const [canRedo, setCanRedo] = useState(false); + const [canUndo, setCanUndo] = useState(false); + const [cropAspectRatioLock, setcropAspectRatioLock] = useState(false); + const [drawTool, setDrawTool] = useState(DrawTool.Pen); + const [drawWidth, setDrawWidth] = useState(DrawWidth.Regular); + const [editMode, setEditMode] = useState(); + const [sliderValue, setSliderValue] = useState(0); + const [textStyle, setTextStyle] = useState(TextStyle.Regular); + + // Check if we can undo/redo & restore the image state on undo/undo + useEffect(() => { + if (!history) { + return; + } + + function refreshUndoState() { + if (!history) { + return; + } + + setCanUndo(history.canUndo()); + setCanRedo(history.canRedo()); + } + + function restoreImageState(prevImageState?: ImageStateType) { + if (prevImageState) { + isRestoringImageState.current = true; + setImageState(prevImageState); + } + } + + history.on('historyChanged', refreshUndoState); + history.on('appliedState', restoreImageState); + + return () => { + history.off('historyChanged', refreshUndoState); + history.off('appliedState', restoreImageState); + }; + }, [history]); + + // If you select a text path auto enter edit mode + useEffect(() => { + if (!fabricCanvas) { + return; + } + + function updateEditMode(ev: fabric.IEvent) { + if (ev.target?.get('type') === 'MediaEditorFabricIText') { + setEditMode(EditMode.Text); + } else if (editMode === EditMode.Text) { + setEditMode(undefined); + } + } + + fabricCanvas.on('selection:created', updateEditMode); + fabricCanvas.on('selection:updated', updateEditMode); + fabricCanvas.on('selection:cleared', updateEditMode); + + return () => { + fabricCanvas.off('selection:created', updateEditMode); + fabricCanvas.off('selection:updated', updateEditMode); + fabricCanvas.off('selection:cleared', updateEditMode); + }; + }, [editMode, fabricCanvas]); + + // Ensure scaling is in locked|unlocked state only when cropping + useEffect(() => { + if (!fabricCanvas) { + return; + } + + if (editMode === EditMode.Crop) { + fabricCanvas.uniformScaling = cropAspectRatioLock; + } else { + fabricCanvas.uniformScaling = true; + } + }, [cropAspectRatioLock, editMode, fabricCanvas]); + + // Remove any blank text when edit mode changes off of text + useEffect(() => { + if (!fabricCanvas) { + return; + } + + if (editMode !== EditMode.Text) { + const obj = fabricCanvas.getActiveObject(); + if (obj && has(obj, 'text') && get(obj, 'text') === '') { + fabricCanvas.remove(obj); + } + } + }, [editMode, fabricCanvas]); + + // Toggle draw mode + useEffect(() => { + if (!fabricCanvas) { + return; + } + + if (editMode !== EditMode.Draw) { + fabricCanvas.isDrawingMode = false; + return; + } + + fabricCanvas.discardActiveObject(); + fabricCanvas.isDrawingMode = true; + + const freeDrawingBrush = new MediaEditorFabricPencilBrush(fabricCanvas); + if (drawTool === DrawTool.Highlighter) { + freeDrawingBrush.color = getRGBA(sliderValue, 0.5); + freeDrawingBrush.strokeLineCap = 'square'; + freeDrawingBrush.strokeLineJoin = 'miter'; + freeDrawingBrush.width = (drawWidth / zoom) * 2; + } else { + freeDrawingBrush.color = getHSL(sliderValue); + freeDrawingBrush.strokeLineCap = 'round'; + freeDrawingBrush.strokeLineJoin = 'bevel'; + freeDrawingBrush.width = drawWidth / zoom; + } + fabricCanvas.freeDrawingBrush = freeDrawingBrush; + + fabricCanvas.requestRenderAll(); + }, [drawTool, drawWidth, editMode, fabricCanvas, sliderValue, zoom]); + + // Change text style + useEffect(() => { + if (!fabricCanvas) { + return; + } + + if (editMode !== EditMode.Text) { + return; + } + + const obj = fabricCanvas.getActiveObject(); + + if (!obj || !(obj instanceof MediaEditorFabricIText)) { + return; + } + + obj.set(getTextStyleAttributes(textStyle, sliderValue)); + fabricCanvas.requestRenderAll(); + }, [editMode, fabricCanvas, sliderValue, textStyle]); + + // Create the CroppingRect + useEffect(() => { + if (!fabricCanvas) { + return; + } + + if (editMode === EditMode.Crop) { + const PADDING = MediaEditorFabricCropRect.PADDING / zoom; + // For reasons we don't understand, height and width on small images doesn't work + // right (it bleeds out) so we decrease them for small images. + const height = + imageState.height - PADDING * Math.max(440 / imageState.height, 2); + const width = + imageState.width - PADDING * Math.max(440 / imageState.width, 2); + + let rect: MediaEditorFabricCropRect; + const obj = fabricCanvas.getActiveObject(); + + if (obj instanceof MediaEditorFabricCropRect) { + rect = obj; + rect.set({ height, width, scaleX: 1, scaleY: 1 }); + } else { + rect = new MediaEditorFabricCropRect({ + height, + width, + }); + + rect.on('deselected', () => { + setEditMode(undefined); + }); + + fabricCanvas.add(rect); + fabricCanvas.setActiveObject(rect); + } + + fabricCanvas.viewportCenterObject(rect); + rect.setCoords(); + } else { + fabricCanvas.getObjects().forEach(obj => { + if (obj instanceof MediaEditorFabricCropRect) { + fabricCanvas.remove(obj); + } + }); + } + }, [editMode, fabricCanvas, imageState.height, imageState.width, zoom]); + + // In an ideal world we'd use to get the nice animation benefits + // but because of the way IText is implemented -- with a hidden textarea -- to + // capture keyboard events, we can't use ModalHost since that traps focus, and + // focus trapping doesn't play nice with fabric's IText. + const portal = usePortal(); + + if (!portal) { + return null; + } + + let tooling: JSX.Element | undefined; + if (editMode === EditMode.Text) { + tooling = ( + <> + + setTextStyle(value)} + theme={Theme.Dark} + value={textStyle} + /> + + ); + } else if (editMode === EditMode.Draw) { + tooling = ( + <> + + setDrawTool(value)} + theme={Theme.Dark} + value={drawTool} + /> + setDrawWidth(value)} + theme={Theme.Dark} + value={drawWidth} + /> + + ); + } else if (editMode === EditMode.Crop) { + const canReset = + imageState.cropX !== 0 || + imageState.cropY !== 0 || + imageState.flipX || + imageState.flipY || + imageState.angle !== 0; + + tooling = ( +
+ + +
+ ); + } + + return createPortal( +
+
+ { + if (!bounds) { + log.error('We should be measuring the bounds'); + return; + } + setContainerWidth(bounds.width); + setContainerHeight(bounds.height); + }} + > + {({ measureRef }) => ( +
+ {image && ( +
+ +
+ )} +
+ )} +
+
+
+ {tooling ? ( +
{tooling}
+ ) : ( +
+ )} +
+ +
+
+ +
+
+
, + portal + ); +}; diff --git a/ts/components/conversation/AttachmentList.stories.tsx b/ts/components/conversation/AttachmentList.stories.tsx index 30c81bd07..ef4692969 100644 --- a/ts/components/conversation/AttachmentList.stories.tsx +++ b/ts/components/conversation/AttachmentList.stories.tsx @@ -43,7 +43,7 @@ story.add('One File', () => { }), ], }); - return ; + return ; }); story.add('Multiple Visual Attachments', () => { diff --git a/ts/components/conversation/AttachmentList.tsx b/ts/components/conversation/AttachmentList.tsx index dc790615d..ac6006b97 100644 --- a/ts/components/conversation/AttachmentList.tsx +++ b/ts/components/conversation/AttachmentList.tsx @@ -17,6 +17,7 @@ import { export type Props = Readonly<{ attachments: ReadonlyArray; + canEditImages?: boolean; i18n: LocalizerType; onAddAttachment?: () => void; onClickAttachment?: (attachment: AttachmentDraftType) => void; @@ -41,6 +42,7 @@ function getUrl(attachment: AttachmentDraftType): string | undefined { export const AttachmentList = ({ attachments, + canEditImages, i18n, onAddAttachment, onClickAttachment, @@ -88,7 +90,7 @@ export const AttachmentList = ({ ? () => onClickAttachment(attachment) : undefined; - return ( + const imgElement = ( {i18n('stagedImageAttachment', ); + + if (isImage && canEditImages) { + return ( +
+ {imgElement} +
+
+ ); + } + + return imgElement; } return ( diff --git a/ts/components/leftPane/LeftPaneSearchHelper.tsx b/ts/components/leftPane/LeftPaneSearchHelper.tsx index ee88c9cc9..affa8afd1 100644 --- a/ts/components/leftPane/LeftPaneSearchHelper.tsx +++ b/ts/components/leftPane/LeftPaneSearchHelper.tsx @@ -43,6 +43,8 @@ const searchResultKeys: Array< 'conversationResults' | 'contactResults' | 'messageResults' > = ['conversationResults', 'contactResults', 'messageResults']; +/* eslint-disable class-methods-use-this */ + export class LeftPaneSearchHelper extends LeftPaneHelper { private readonly conversationResults: MaybeLoadedSearchResultsType; diff --git a/ts/components/stickers/StickerButton.tsx b/ts/components/stickers/StickerButton.tsx index b8879cca7..d3938d28a 100644 --- a/ts/components/stickers/StickerButton.tsx +++ b/ts/components/stickers/StickerButton.tsx @@ -6,13 +6,17 @@ import classNames from 'classnames'; import { get, noop } from 'lodash'; import { Manager, Popper, Reference } from 'react-popper'; import { createPortal } from 'react-dom'; -import { StickerPicker } from './StickerPicker'; -import { countStickers } from './lib'; + import type { StickerPackType, StickerType } from '../../state/ducks/stickers'; import type { LocalizerType } from '../../types/Util'; +import type { Theme } from '../../util/theme'; +import { StickerPicker } from './StickerPicker'; +import { countStickers } from './lib'; import { offsetDistanceModifier } from '../../util/popperUtil'; +import { themeClassName } from '../../util/theme'; export type OwnProps = { + readonly className?: string; readonly i18n: LocalizerType; readonly receivedPacks: ReadonlyArray; readonly installedPacks: ReadonlyArray; @@ -21,19 +25,25 @@ export type OwnProps = { readonly installedPack?: StickerPackType | null; readonly recentStickers: ReadonlyArray; readonly clearInstalledStickerPack: () => unknown; - readonly onClickAddPack: () => unknown; - readonly onPickSticker: (packId: string, stickerId: number) => unknown; + readonly onClickAddPack?: () => unknown; + readonly onPickSticker: ( + packId: string, + stickerId: number, + url: string + ) => unknown; readonly showIntroduction?: boolean; readonly clearShowIntroduction: () => unknown; readonly showPickerHint: boolean; readonly clearShowPickerHint: () => unknown; readonly position?: 'top-end' | 'top-start'; + readonly theme?: Theme; }; export type Props = OwnProps; export const StickerButton = React.memo( ({ + className, i18n, clearInstalledStickerPack, onClickAddPack, @@ -49,6 +59,7 @@ export const StickerButton = React.memo( showPickerHint, clearShowPickerHint, position = 'top-end', + theme, }: Props) => { const [open, setOpen] = React.useState(false); const [popperRoot, setPopperRoot] = React.useState( @@ -62,7 +73,7 @@ export const StickerButton = React.memo( // Handle button click if (installedPacks.length === 0) { - onClickAddPack(); + onClickAddPack?.(); } else if (popperRoot) { setOpen(false); } else { @@ -78,9 +89,9 @@ export const StickerButton = React.memo( ]); const handlePickSticker = React.useCallback( - (packId: string, stickerId: number) => { + (packId: string, stickerId: number, url: string) => { setOpen(false); - onPickSticker(packId, stickerId); + onPickSticker(packId, stickerId, url); }, [setOpen, onPickSticker] ); @@ -94,7 +105,7 @@ export const StickerButton = React.memo( if (showPickerHint) { clearShowPickerHint(); } - onClickAddPack(); + onClickAddPack?.(); }, [onClickAddPack, showPickerHint, clearShowPickerHint]); const handleClearIntroduction = React.useCallback(() => { @@ -110,13 +121,16 @@ export const StickerButton = React.memo( document.body.appendChild(root); const handleOutsideClick = ({ target }: MouseEvent) => { const targetElement = target as HTMLElement; - const className = targetElement ? targetElement.className || '' : ''; + const targetClassName = targetElement + ? targetElement.className || '' + : ''; // We need to special-case sticker picker header buttons, because they can // disappear after being clicked, which breaks the .contains() check below. const isMissingButtonClass = - !className || - className.indexOf('module-sticker-picker__header__button') < 0; + !targetClassName || + targetClassName.indexOf('module-sticker-picker__header__button') < + 0; if (!root.contains(targetElement) && isMissingButtonClass) { setOpen(false); @@ -194,10 +208,13 @@ export const StickerButton = React.memo( type="button" ref={ref} onClick={handleClickButton} - className={classNames({ - 'module-sticker-button__button': true, - 'module-sticker-button__button--active': open, - })} + className={classNames( + { + 'module-sticker-button__button': true, + 'module-sticker-button__button--active': open, + }, + className + )} aria-label={i18n('stickers--StickerPicker--Open')} /> )} @@ -209,84 +226,88 @@ export const StickerButton = React.memo( modifiers={[offsetDistanceModifier(6)]} > {({ ref, style, placement, arrowProps }) => ( - + + + {installedPack.title} + {' '} + installed + +
+ +
)} ) : null} {!open && showIntroduction ? ( {({ ref, style, placement, arrowProps }) => ( -
-
+ + onClick={handleClearIntroduction} + > + {i18n('stickers--StickerManager--Introduction--Image')} +
+
+ {i18n('stickers--StickerManager--Introduction--Title')} +
+
+ {i18n('stickers--StickerManager--Introduction--Body')} +
+
+
+
+
+ +
)} ) : null} @@ -294,17 +315,21 @@ export const StickerButton = React.memo( ? createPortal( {({ ref, style }) => ( - +
+ +
)}
, popperRoot diff --git a/ts/components/stickers/StickerPicker.tsx b/ts/components/stickers/StickerPicker.tsx index 9c978cf0f..f0407ff51 100644 --- a/ts/components/stickers/StickerPicker.tsx +++ b/ts/components/stickers/StickerPicker.tsx @@ -12,8 +12,12 @@ import type { LocalizerType } from '../../types/Util'; export type OwnProps = { readonly i18n: LocalizerType; readonly onClose: () => unknown; - readonly onClickAddPack: () => unknown; - readonly onPickSticker: (packId: string, stickerId: number) => unknown; + readonly onClickAddPack?: () => unknown; + readonly onPickSticker: ( + packId: string, + stickerId: number, + url: string + ) => unknown; readonly packs: ReadonlyArray; readonly recentStickers: ReadonlyArray; readonly showPickerHint?: boolean; @@ -230,20 +234,22 @@ export const StickerPicker = React.memo( /> ) : null}
-
onPickSticker(packId, id)} + onClick={() => onPickSticker(packId, id, url)} > (null); + + useEffect(() => { + const div = document.createElement('div'); + document.body.appendChild(div); + setRoot(div); + + return () => { + document.body.removeChild(div); + setRoot(null); + }; + }, []); + + return root; +} diff --git a/ts/hooks/useUniqueId.ts b/ts/hooks/useUniqueId.ts new file mode 100644 index 000000000..c6b099edc --- /dev/null +++ b/ts/hooks/useUniqueId.ts @@ -0,0 +1,9 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { useMemo } from 'react'; +import { v4 as uuid } from 'uuid'; + +export function useUniqueId(): string { + return useMemo(() => uuid(), []); +} diff --git a/ts/mediaEditor/ImageStateType.ts b/ts/mediaEditor/ImageStateType.ts new file mode 100644 index 000000000..0cf5fc2fc --- /dev/null +++ b/ts/mediaEditor/ImageStateType.ts @@ -0,0 +1,12 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +export type ImageStateType = { + angle: number; + cropX: number; + cropY: number; + flipX: boolean; + flipY: boolean; + height: number; + width: number; +}; diff --git a/ts/mediaEditor/MediaEditorFabricCropRect.ts b/ts/mediaEditor/MediaEditorFabricCropRect.ts new file mode 100644 index 000000000..4776c8041 --- /dev/null +++ b/ts/mediaEditor/MediaEditorFabricCropRect.ts @@ -0,0 +1,196 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { fabric } from 'fabric'; +import { clamp } from 'lodash'; + +export class MediaEditorFabricCropRect extends fabric.Rect { + static PADDING = 4; + + constructor(options?: fabric.IRectOptions) { + super({ + fill: undefined, + lockScalingFlip: true, + ...(options || {}), + }); + + this.on('modified', this.containBounds.bind(this)); + } + + private containBounds() { + if (!this.canvas) { + return; + } + + const zoom = this.canvas.getZoom() || 1; + + const { left, top, height, width } = this.getBoundingRect(); + + const canvasHeight = this.canvas.getHeight(); + const canvasWidth = this.canvas.getWidth(); + + if (height > canvasHeight || width > canvasWidth) { + this.canvas.discardActiveObject(); + } else { + this.set( + 'left', + clamp( + left / zoom, + MediaEditorFabricCropRect.PADDING / zoom, + (canvasWidth - width - MediaEditorFabricCropRect.PADDING) / zoom + ) + ); + this.set( + 'top', + clamp( + top / zoom, + MediaEditorFabricCropRect.PADDING / zoom, + (canvasHeight - height - MediaEditorFabricCropRect.PADDING) / zoom + ) + ); + } + + this.setCoords(); + } + + override render(ctx: CanvasRenderingContext2D): void { + super.render(ctx); + + const bounds = this.getBoundingRect(); + + const zoom = this.canvas?.getZoom() || 1; + const canvasWidth = (this.canvas?.getWidth() || 0) / zoom; + const canvasHeight = (this.canvas?.getHeight() || 0) / zoom; + const height = bounds.height / zoom; + const left = bounds.left / zoom; + const top = bounds.top / zoom; + const width = bounds.width / zoom; + + ctx.save(); + ctx.fillStyle = 'rgba(0, 0, 0, 0.4)'; + // top + ctx.fillRect(0, 0, canvasWidth, top); + // left + ctx.fillRect(0, top, left, height); + // bottom + ctx.fillRect(0, height + top, canvasWidth, canvasHeight - top); + // right + ctx.fillRect(left + width, top, canvasWidth - left, height); + ctx.restore(); + } +} + +MediaEditorFabricCropRect.prototype.controls = { + tl: new fabric.Control({ + x: -0.5, + y: -0.5, + actionHandler: fabric.controlsUtils.scalingEqually, + render: ( + ctx: CanvasRenderingContext2D, + left: number, + top: number, + _, + rect: fabric.Object + ) => { + const WIDTH = getMinSize(rect.width); + + ctx.save(); + ctx.fillStyle = '#fff'; + ctx.strokeStyle = '#fff'; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(left - 2, top + WIDTH); + ctx.lineTo(left - 2, top - 2); + ctx.lineTo(left + WIDTH, top - 2); + ctx.stroke(); + + ctx.restore(); + }, + }), + tr: new fabric.Control({ + x: 0.5, + y: -0.5, + actionHandler: fabric.controlsUtils.scalingEqually, + render: ( + ctx: CanvasRenderingContext2D, + left: number, + top: number, + _, + rect: fabric.Object + ) => { + const WIDTH = getMinSize(rect.width); + + ctx.save(); + ctx.fillStyle = '#fff'; + ctx.strokeStyle = '#fff'; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(left + 2, top + WIDTH); + ctx.lineTo(left + 2, top - 2); + ctx.lineTo(left - WIDTH, top - 2); + ctx.stroke(); + + ctx.restore(); + }, + }), + bl: new fabric.Control({ + x: -0.5, + y: 0.5, + actionHandler: fabric.controlsUtils.scalingEqually, + render: ( + ctx: CanvasRenderingContext2D, + left: number, + top: number, + _, + rect: fabric.Object + ) => { + const WIDTH = getMinSize(rect.width); + + ctx.save(); + ctx.fillStyle = '#fff'; + ctx.strokeStyle = '#fff'; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(left - 2, top - WIDTH); + ctx.lineTo(left - 2, top + 2); + ctx.lineTo(left + WIDTH, top + 2); + ctx.stroke(); + + ctx.restore(); + }, + }), + br: new fabric.Control({ + x: 0.5, + y: 0.5, + actionHandler: fabric.controlsUtils.scalingEqually, + render: ( + ctx: CanvasRenderingContext2D, + left: number, + top: number, + _, + rect: fabric.Object + ) => { + const WIDTH = getMinSize(rect.width); + + ctx.save(); + ctx.fillStyle = '#fff'; + ctx.strokeStyle = '#fff'; + ctx.lineWidth = 3; + ctx.beginPath(); + ctx.moveTo(left + 2, top - WIDTH); + ctx.lineTo(left + 2, top + 2); + ctx.lineTo(left - WIDTH, top + 2); + ctx.stroke(); + + ctx.restore(); + }, + }), +}; + +MediaEditorFabricCropRect.prototype.excludeFromExport = true; +MediaEditorFabricCropRect.prototype.borderColor = '#ffffff'; +MediaEditorFabricCropRect.prototype.cornerColor = '#ffffff'; + +function getMinSize(width: number | undefined): number { + return Math.min(width || 24, 24); +} diff --git a/ts/mediaEditor/MediaEditorFabricIText.ts b/ts/mediaEditor/MediaEditorFabricIText.ts new file mode 100644 index 000000000..a9db7f286 --- /dev/null +++ b/ts/mediaEditor/MediaEditorFabricIText.ts @@ -0,0 +1,35 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { fabric } from 'fabric'; +import { customFabricObjectControls } from './util/customFabricObjectControls'; + +export class MediaEditorFabricIText extends fabric.IText { + constructor(text: string, options: fabric.ITextOptions) { + super(text, { + fontFamily: 'Inter', + fontWeight: 'bold', + lockScalingFlip: true, + originX: 'center', + originY: 'center', + textAlign: 'center', + ...options, + }); + } + + static override fromObject( + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types + options: any, + callback: (_: MediaEditorFabricIText) => unknown + ): MediaEditorFabricIText { + const result = new MediaEditorFabricIText(options.text, options); + callback(result); + return result; + } +} + +MediaEditorFabricIText.prototype.type = 'MediaEditorFabricIText'; +MediaEditorFabricIText.prototype.lockScalingFlip = true; +MediaEditorFabricIText.prototype.borderColor = '#ffffff'; +MediaEditorFabricIText.prototype.controls = customFabricObjectControls; diff --git a/ts/mediaEditor/MediaEditorFabricPath.ts b/ts/mediaEditor/MediaEditorFabricPath.ts new file mode 100644 index 000000000..239239a20 --- /dev/null +++ b/ts/mediaEditor/MediaEditorFabricPath.ts @@ -0,0 +1,29 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { fabric } from 'fabric'; +import { customFabricObjectControls } from './util/customFabricObjectControls'; + +export class MediaEditorFabricPath extends fabric.Path { + constructor( + path?: string | Array, + options?: fabric.IPathOptions + ) { + super(path, { fill: undefined, lockScalingFlip: true, ...(options || {}) }); + } + + static override fromObject( + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types + options: any, + callback: (_: MediaEditorFabricPath) => unknown + ): MediaEditorFabricPath { + const result = new MediaEditorFabricPath(options.path, options); + callback(result); + return result; + } +} + +MediaEditorFabricPath.prototype.type = 'MediaEditorFabricPath'; +MediaEditorFabricPath.prototype.borderColor = '#ffffff'; +MediaEditorFabricPath.prototype.controls = customFabricObjectControls; diff --git a/ts/mediaEditor/MediaEditorFabricPencilBrush.ts b/ts/mediaEditor/MediaEditorFabricPencilBrush.ts new file mode 100644 index 000000000..7caa5f7ed --- /dev/null +++ b/ts/mediaEditor/MediaEditorFabricPencilBrush.ts @@ -0,0 +1,23 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { fabric } from 'fabric'; +import { MediaEditorFabricPath } from './MediaEditorFabricPath'; + +export class MediaEditorFabricPencilBrush extends fabric.PencilBrush { + public strokeMiterLimit: undefined | number; + + override createPath( + pathData?: string | Array + ): MediaEditorFabricPath { + return new MediaEditorFabricPath(pathData, { + fill: undefined, + stroke: this.color, + strokeWidth: this.width, + strokeLineCap: this.strokeLineCap, + strokeMiterLimit: this.strokeMiterLimit, + strokeLineJoin: this.strokeLineJoin, + strokeDashArray: this.strokeDashArray, + }); + } +} diff --git a/ts/mediaEditor/MediaEditorFabricSticker.ts b/ts/mediaEditor/MediaEditorFabricSticker.ts new file mode 100644 index 000000000..b5b442306 --- /dev/null +++ b/ts/mediaEditor/MediaEditorFabricSticker.ts @@ -0,0 +1,36 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { fabric } from 'fabric'; +import { customFabricObjectControls } from './util/customFabricObjectControls'; + +export class MediaEditorFabricSticker extends fabric.Image { + constructor( + element: string | HTMLImageElement | HTMLVideoElement, + options: fabric.IImageOptions = {} + ) { + // Fabric seems to have issues when passed a string, but not an Image. + let normalizedElement: undefined | HTMLImageElement | HTMLVideoElement; + if (typeof element === 'string') { + normalizedElement = new Image(); + normalizedElement.src = element; + } else { + normalizedElement = element; + } + + super(normalizedElement, options); + } + + static fromObject( + // eslint-disable-next-line max-len + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types + options: any, + callback: (_: MediaEditorFabricSticker) => unknown + ): void { + callback(new MediaEditorFabricSticker(options.src, options)); + } +} + +MediaEditorFabricSticker.prototype.type = 'MediaEditorFabricSticker'; +MediaEditorFabricSticker.prototype.borderColor = '#ffffff'; +MediaEditorFabricSticker.prototype.controls = customFabricObjectControls; diff --git a/ts/mediaEditor/useFabricHistory.ts b/ts/mediaEditor/useFabricHistory.ts new file mode 100644 index 000000000..65380c6dc --- /dev/null +++ b/ts/mediaEditor/useFabricHistory.ts @@ -0,0 +1,152 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { useEffect, useState } from 'react'; +import { fabric } from 'fabric'; +import EventEmitter from 'events'; + +import type { ImageStateType } from './ImageStateType'; +import { MediaEditorFabricIText } from './MediaEditorFabricIText'; +import { MediaEditorFabricPath } from './MediaEditorFabricPath'; +import { MediaEditorFabricSticker } from './MediaEditorFabricSticker'; + +export function useFabricHistory( + canvas: fabric.Canvas | undefined +): FabricHistory | undefined { + const [history, setHistory] = useState(); + + // We need this type of precision so that when serializing/deserializing + // the floats don't get rounded off and we maintain proper image state. + // http://fabricjs.com/fabric-gotchas + fabric.Object.NUM_FRACTION_DIGITS = 16; + + // Attach our custom classes to the global Fabric instance. Unfortunately, Fabric + // doesn't make it easy to deserialize into a custom class without polluting the + // global namespace. See . + Object.assign(fabric, { + MediaEditorFabricIText, + MediaEditorFabricPath, + MediaEditorFabricSticker, + }); + + useEffect(() => { + if (canvas) { + const fabricHistory = new FabricHistory(canvas); + setHistory(fabricHistory); + } + }, [canvas]); + + return history; +} + +const LIMIT = 1000; + +type SnapshotStateType = { + canvasState: string; + imageState?: ImageStateType; +}; + +export class FabricHistory extends EventEmitter { + private readonly canvas: fabric.Canvas; + + private highWatermark: number; + private isTimeTraveling: boolean; + private snapshots: Array; + + constructor(canvas: fabric.Canvas) { + super(); + + this.canvas = canvas; + this.highWatermark = 0; + this.isTimeTraveling = false; + this.snapshots = []; + + this.canvas.on('object:added', this.onObjectModified.bind(this)); + this.canvas.on('object:modified', this.onObjectModified.bind(this)); + this.canvas.on('object:removed', this.onObjectModified.bind(this)); + } + + private applyState({ canvasState, imageState }: SnapshotStateType): void { + this.canvas.loadFromJSON(canvasState, () => { + this.emit('appliedState', imageState); + this.emit('historyChanged'); + this.isTimeTraveling = false; + }); + } + + private getState(): string { + return JSON.stringify(this.canvas.toDatalessJSON()); + } + + private onObjectModified({ target }: fabric.IEvent): void { + if (target?.excludeFromExport) { + return; + } + + this.takeSnapshot(); + } + + private getUndoState(): SnapshotStateType | undefined { + if (!this.canUndo()) { + return; + } + + this.highWatermark -= 1; + return this.snapshots[this.highWatermark]; + } + + private getRedoState(): SnapshotStateType | undefined { + if (this.canRedo()) { + this.highWatermark += 1; + } + + return this.snapshots[this.highWatermark]; + } + + public takeSnapshot(imageState?: ImageStateType): void { + if (this.isTimeTraveling) { + return; + } + + if (this.canRedo()) { + this.snapshots.splice(this.highWatermark, this.snapshots.length); + } + + this.snapshots.push({ canvasState: this.getState(), imageState }); + if (this.snapshots.length > LIMIT) { + this.snapshots.shift(); + } + this.highWatermark = this.snapshots.length - 1; + this.emit('historyChanged'); + } + + public undo(): void { + const undoState = this.getUndoState(); + + if (!undoState) { + return; + } + + this.isTimeTraveling = true; + this.applyState(undoState); + } + + public redo(): void { + const redoState = this.getRedoState(); + + if (!redoState) { + return; + } + + this.isTimeTraveling = true; + this.applyState(redoState); + } + + public canUndo(): boolean { + return this.highWatermark > 0; + } + + public canRedo(): boolean { + return this.highWatermark < this.snapshots.length - 1; + } +} diff --git a/ts/mediaEditor/util/color.ts b/ts/mediaEditor/util/color.ts new file mode 100644 index 000000000..87b75a2bc --- /dev/null +++ b/ts/mediaEditor/util/color.ts @@ -0,0 +1,47 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +function getRatio(min: number, max: number, value: number) { + return (value - min) / (max - min); +} + +function getHSLValues(percentage: number): [number, number, number] { + if (percentage <= 10) { + return [0, 0, 1 - getRatio(0, 10, percentage)]; + } + + if (percentage < 20) { + return [0, 0.5, 0.5 * getRatio(10, 20, percentage)]; + } + + const ratio = getRatio(20, 100, percentage); + + return [360 * ratio, 1, 0.5]; +} + +export function getHSL(percentage: number): string { + const [h, s, l] = getHSLValues(percentage); + return `hsl(${h}, ${s * 100}%, ${l * 100}%)`; +} + +// https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB_alternative +export function getRGBA(percentage: number, alpha = 1): string { + const [h, s, l] = getHSLValues(percentage); + + const a = s * Math.min(l, 1 - l); + + function f(n: number): number { + const k = (n + h / 30) % 12; + return l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1); + } + + const rgbValue = [ + Math.round(255 * f(0)), + Math.round(255 * f(8)), + Math.round(255 * f(4)), + ] + .map(String) + .join(','); + + return `rgba(${rgbValue},${alpha})`; +} diff --git a/ts/mediaEditor/util/customFabricObjectControls.ts b/ts/mediaEditor/util/customFabricObjectControls.ts new file mode 100644 index 000000000..cdfa10e67 --- /dev/null +++ b/ts/mediaEditor/util/customFabricObjectControls.ts @@ -0,0 +1,134 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { fabric } from 'fabric'; + +const resizeControl = new fabric.Control({ + actionHandler: fabric.controlsUtils.scalingEqually, + cursorStyleHandler: () => 'se-resize', + render: (ctx: CanvasRenderingContext2D, left: number, top: number) => { + // circle + const size = 9; + ctx.save(); + ctx.fillStyle = '#fff'; + ctx.strokeStyle = '#fff'; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.arc(left, top, size, 0, 2 * Math.PI, false); + ctx.fill(); + + // arrows NW & SE + const arrowSize = 4; + ctx.fillStyle = '#3b3b3b'; + ctx.strokeStyle = '#3b3b3b'; + ctx.beginPath(); + + // SE + ctx.moveTo(left + 0.5, top + 0.5); + ctx.lineTo(left + arrowSize, top + arrowSize); + ctx.moveTo(left + arrowSize, top + 1); + ctx.lineTo(left + arrowSize, top + arrowSize); + ctx.lineTo(left + 1, top + arrowSize); + + // NW + ctx.moveTo(left - 0.5, top - 0.5); + ctx.lineTo(left - arrowSize, top - arrowSize); + ctx.moveTo(left - arrowSize, top - 1); + ctx.lineTo(left - arrowSize, top - arrowSize); + ctx.lineTo(left - 1, top - arrowSize); + + ctx.stroke(); + ctx.restore(); + }, + x: 0.5, + y: 0.5, +}); + +const rotateControl = new fabric.Control({ + actionHandler: fabric.controlsUtils.rotationWithSnapping, + actionName: 'rotate', + cursorStyleHandler: fabric.controlsUtils.rotationStyleHandler, + offsetY: -40, + render( + ctx: CanvasRenderingContext2D, + left: number, + top: number, + _, + target: fabric.Object + ) { + const size = 5; + ctx.save(); + + ctx.fillStyle = '#fff'; + ctx.strokeStyle = '#fff'; + + // connecting line + ctx.beginPath(); + ctx.moveTo(left, top); + const radians = 0 - ((target.angle || 0) * Math.PI) / 180; + const targetLeft = 40 * Math.sin(radians); + const targetTop = 40 * Math.cos(radians); + ctx.lineTo(left + targetLeft, top + targetTop); + ctx.stroke(); + + // circle + ctx.beginPath(); + ctx.moveTo(left, top); + ctx.arc(left, top, size, 0, 2 * Math.PI, false); + ctx.fill(); + + ctx.restore(); + }, + withConnection: false, + x: 0, + y: -0.5, +}); + +const deleteControl = new fabric.Control({ + cursorStyleHandler: () => 'pointer', + // This is lifted from . + mouseUpHandler: (_eventData, { target }) => { + if (!target.canvas) { + return false; + } + target.canvas.remove(target); + return true; + }, + render: (ctx: CanvasRenderingContext2D, left: number, top: number) => { + // circle + const size = 9; + ctx.save(); + ctx.fillStyle = '#000'; + ctx.strokeStyle = '#000'; + ctx.lineWidth = 1; + ctx.beginPath(); + ctx.arc(left, top, size, 0, 2 * Math.PI, false); + ctx.fill(); + + // x + const xSize = 3; + ctx.fillStyle = '#fff'; + ctx.strokeStyle = '#fff'; + ctx.beginPath(); + const topLeft = new fabric.Point(left - xSize, top - xSize); + const topRight = new fabric.Point(left + xSize, top - xSize); + const bottomRight = new fabric.Point(left + xSize, top + xSize); + const bottomLeft = new fabric.Point(left - xSize, top + xSize); + + ctx.moveTo(topLeft.x, topLeft.y); + ctx.lineTo(bottomRight.x, bottomRight.y); + ctx.moveTo(topRight.x, topRight.y); + ctx.lineTo(bottomLeft.x, bottomLeft.y); + ctx.stroke(); + + ctx.restore(); + }, + x: -0.5, + y: -0.5, +}); + +export const customFabricObjectControls = { + br: resizeControl, + mtr: rotateControl, + tl: deleteControl, +}; diff --git a/ts/mediaEditor/util/getTextStyleAttributes.ts b/ts/mediaEditor/util/getTextStyleAttributes.ts new file mode 100644 index 000000000..e33859b4d --- /dev/null +++ b/ts/mediaEditor/util/getTextStyleAttributes.ts @@ -0,0 +1,44 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import * as log from '../../logging/log'; +import { getHSL } from './color'; +import { missingCaseError } from '../../util/missingCaseError'; + +export enum TextStyle { + Regular = 'Regular', + Highlight = 'Highlight', + Outline = 'Outline', +} + +export function getTextStyleAttributes( + textStyle: TextStyle, + hueSliderValue: number +): { + fill: string; + stroke?: string; + strokeWidth: number; + textBackgroundColor: string; +} { + const color = getHSL(hueSliderValue); + switch (textStyle) { + case TextStyle.Regular: + return { fill: color, strokeWidth: 0, textBackgroundColor: '' }; + case TextStyle.Highlight: + return { + fill: hueSliderValue <= 5 ? '#000' : '#fff', + strokeWidth: 0, + textBackgroundColor: color, + }; + case TextStyle.Outline: + return { + fill: hueSliderValue <= 5 ? '#000' : '#fff', + stroke: color, + strokeWidth: 2, + textBackgroundColor: '', + }; + default: + log.error(missingCaseError(textStyle)); + return getTextStyleAttributes(TextStyle.Regular, hueSliderValue); + } +} diff --git a/ts/state/ducks/composer.ts b/ts/state/ducks/composer.ts index cecab51e0..b9907c320 100644 --- a/ts/state/ducks/composer.ts +++ b/ts/state/ducks/composer.ts @@ -123,9 +123,10 @@ function addAttachment( ? getState().composer.attachments : getAttachmentsFromConversationModel(conversationId); + // We expect there to either be a pending draft attachment or an existing + // attachment that we'll be replacing. const hasDraftAttachmentPending = draftAttachments.some( - draftAttachment => - draftAttachment.pending && draftAttachment.path === attachment.path + draftAttachment => draftAttachment.path === attachment.path ); // User has canceled the draft so we don't need to continue processing diff --git a/ts/test-both/helpers/getStickerPacks.ts b/ts/test-both/helpers/getStickerPacks.ts new file mode 100644 index 000000000..01bfa6302 --- /dev/null +++ b/ts/test-both/helpers/getStickerPacks.ts @@ -0,0 +1,96 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import type { StickerPackType, StickerType } from '../../state/ducks/stickers'; + +export const createPack = ( + props: Partial, + sticker?: StickerType +): StickerPackType => ({ + id: '', + title: props.id ? `${props.id} title` : 'title', + key: '', + author: '', + isBlessed: false, + lastUsed: 0, + status: 'known', + cover: sticker, + stickerCount: 101, + stickers: sticker + ? Array(101) + .fill(0) + .map((_, id) => ({ ...sticker, id })) + : [], + ...props, +}); + +export const Stickers: Record = { + kitten1: { + id: 1, + url: '/fixtures/kitten-1-64-64.jpg', + packId: 'kitten1', + emoji: '', + }, + + kitten2: { + id: 2, + url: '/fixtures/kitten-2-64-64.jpg', + packId: 'kitten2', + emoji: '', + }, + + kitten3: { + id: 3, + url: '/fixtures/kitten-3-64-64.jpg', + packId: 'kitten3', + emoji: '', + }, + + abe: { + id: 4, + url: '/fixtures/512x515-thumbs-up-lincoln.webp', + packId: 'abe', + emoji: '', + }, + + wide: { + id: 5, + url: '/fixtures/1000x50-green.jpeg', + packId: 'wide', + emoji: '', + }, + + tall: { + id: 6, + url: '/fixtures/50x1000-teal.jpeg', + packId: 'tall', + emoji: '', + }, +}; + +export const receivedPacks = [ + createPack({ id: 'abe', status: 'downloaded' }, Stickers.abe), + createPack({ id: 'kitten3', status: 'downloaded' }, Stickers.kitten3), +]; + +export const installedPacks = [ + createPack({ id: 'kitten1', status: 'installed' }, Stickers.kitten1), + createPack({ id: 'kitten2', status: 'installed' }, Stickers.kitten2), + createPack({ id: 'kitten3', status: 'installed' }, Stickers.kitten3), +]; + +export const blessedPacks = [ + createPack( + { id: 'wide', status: 'downloaded', isBlessed: true }, + Stickers.wide + ), + createPack( + { id: 'tall', status: 'downloaded', isBlessed: true }, + Stickers.tall + ), +]; + +export const knownPacks = [ + createPack({ id: 'kitten1', status: 'known' }, Stickers.kitten1), + createPack({ id: 'kitten2', status: 'known' }, Stickers.kitten2), +]; diff --git a/ts/util/canEditImages.ts b/ts/util/canEditImages.ts new file mode 100644 index 000000000..142afa047 --- /dev/null +++ b/ts/util/canEditImages.ts @@ -0,0 +1,17 @@ +// Copyright 2021 Signal Messenger, LLC +// SPDX-License-Identifier: AGPL-3.0-only + +import { isEnabled } from '../RemoteConfig'; +import { getEnvironment, Environment } from '../environment'; +import { isBeta } from './version'; + +export function canEditImages(): boolean { + return ( + isEnabled('desktop.internalUser') || + getEnvironment() === Environment.Staging || + getEnvironment() === Environment.Development || + // eslint-disable-next-line @typescript-eslint/no-explicit-any + Boolean((window as any).STORYBOOK_ENV) || + isBeta(window.getVersion()) + ); +} diff --git a/ts/util/lint/exceptions.json b/ts/util/lint/exceptions.json index 4c53537ac..83b118417 100644 --- a/ts/util/lint/exceptions.json +++ b/ts/util/lint/exceptions.json @@ -162,6 +162,104 @@ "reasonCategory": "falseMatch", "updated": "2021-04-05T20:48:36.065Z" }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.es.js", + "line": "\t\t\t\t\tthis.append(headerName, value);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.es.js", + "line": "\t\t// We don't worry about converting prop to ByteString here as append()", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.es.js", + "line": "\t\t\t\t\tthis.append(pair[0], pair[1]);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.es.js", + "line": "\t\t\t\t\tthis.append(key, value);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.es.js", + "line": "\tappend(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.es.js", + "line": "\t\t\t\theaders.append('Content-Type', contentType);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.es.js", + "line": "\t\t\t\theaders.append('Content-Type', contentType);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.js", + "line": "\t\t\t\t\tthis.append(headerName, value);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.js", + "line": "\t\t// We don't worry about converting prop to ByteString here as append()", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.js", + "line": "\t\t\t\t\tthis.append(pair[0], pair[1]);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.js", + "line": "\t\t\t\t\tthis.append(key, value);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.js", + "line": "\tappend(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.js", + "line": "\t\t\t\theaders.append('Content-Type', contentType);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch/lib/index.js", + "line": "\t\t\t\theaders.append('Content-Type', contentType);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "eval", "path": "node_modules/@protobufjs/inquire/index.js", @@ -540,6 +638,13 @@ "reasonCategory": "falseMatch", "updated": "2019-07-31T00:19:18.696Z" }, + { + "rule": "jQuery-$(", + "path": "node_modules/acorn-globals/node_modules/acorn/dist/acorn.js", + "line": " // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "jQuery-$(", "path": "node_modules/acorn/dist/acorn.js", @@ -1449,6 +1554,12 @@ "reasonCategory": "falseMatch|", "updated": "2020-04-30T22:35:27.860Z" }, + { + "rule": "jQuery-$(", + "path": "node_modules/fabric/dist/fabric.min.js", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "jQuery-load(", "path": "node_modules/file-entry-cache/cache.js", @@ -1743,94 +1854,94 @@ "path": "node_modules/intl-tel-input/build/js/intlTelInput-jquery.js", "line": " this.selectedDialCode.innerHTML = dialCode;", "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/build/js/intlTelInput-jquery.js", "line": " this.telInput.parentNode.insertBefore(wrapper, this.telInput);", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/build/js/intlTelInput-jquery.js", "line": " wrapper.parentNode.insertBefore(this.telInput, wrapper);", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "DOM-innerHTML", "path": "node_modules/intl-tel-input/build/js/intlTelInput-jquery.min.js", "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/build/js/intlTelInput-jquery.min.js", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "DOM-innerHTML", "path": "node_modules/intl-tel-input/build/js/intlTelInput.js", "line": " this.selectedDialCode.innerHTML = dialCode;", "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/build/js/intlTelInput.js", "line": " this.telInput.parentNode.insertBefore(wrapper, this.telInput);", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/build/js/intlTelInput.js", "line": " wrapper.parentNode.insertBefore(this.telInput, wrapper);", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "DOM-innerHTML", "path": "node_modules/intl-tel-input/build/js/intlTelInput.min.js", "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/build/js/intlTelInput.min.js", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "DOM-innerHTML", "path": "node_modules/intl-tel-input/src/js/intlTelInput.js", "line": " this.selectedDialCode.innerHTML = dialCode;", "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/src/js/intlTelInput.js", "line": " this.telInput.parentNode.insertBefore(wrapper, this.telInput);", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-insertBefore(", "path": "node_modules/intl-tel-input/src/js/intlTelInput.js", "line": " wrapper.parentNode.insertBefore(this.telInput, wrapper);", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-$(", "path": "node_modules/intl-tel-input/src/spec/helpers/helpers.js", "line": " $(\"script.iti-load-utils\").remove();", - "reasonCategory": "usageTrusted", - "updated": "2021-11-24T20:55:14.943Z" + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "DOM-document.write(", @@ -1985,6 +2096,643 @@ "reasonCategory": "falseMatch", "updated": "2019-06-19T20:42:32.133Z" }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/api.js", + "line": " template.innerHTML = string;", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/browser/Window.js", + "line": " this._document.body.innerHTML = \"\";", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/browser/parser/html.js", + "line": " insertBefore(parentNode, newNode, referenceNode) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/level3/xpath.js", + "line": " if (null != ctx.outerHTML) return ctx.outerHTML;", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js", + "line": " this.append(header[0], header[1]);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js", + "line": " this.append(key, init[key]);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js", + "line": " append(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js", + "line": " this.headersList.append(name, value);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/fetch/header-list.js", + "line": " append(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-after(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js", + "line": " after() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-after(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js", + "line": " return this[impl].after(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-before(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js", + "line": " before() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-before(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js", + "line": " return this[impl].before(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Document.js", + "line": " append() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Document.js", + "line": " return this[impl].append(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Document.js", + "line": " prepend() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Document.js", + "line": " return this[impl].prepend(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js", + "line": " append() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js", + "line": " return this[impl].append(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js", + "line": " prepend() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js", + "line": " return this[impl].prepend(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-after(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js", + "line": " after() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-after(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js", + "line": " return this[impl].after(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-before(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js", + "line": " before() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-before(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js", + "line": " return this[impl].before(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " get innerHTML() {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " return this[impl][\"innerHTML\"];", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " set innerHTML(V) {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " context: \"Failed to set the 'innerHTML' property on 'Element': The provided value\",", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " this[impl][\"innerHTML\"] = V;", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " innerHTML: { enumerable: true },", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " get outerHTML() {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " return this[impl][\"outerHTML\"];", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " set outerHTML(V) {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " context: \"Failed to set the 'outerHTML' property on 'Element': The provided value\",", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " this[impl][\"outerHTML\"] = V;", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " outerHTML: { enumerable: true },", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-after(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " after() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-after(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " return this[impl].after(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " append() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " return this[impl].append(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-before(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " before() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-before(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " return this[impl].before(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " prepend() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Element.js", + "line": " return this[impl].prepend(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/FormData.js", + "line": " append(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/FormData.js", + "line": " return this[impl].append(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-load(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js", + "line": " load() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-load(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js", + "line": " return this[impl].load();", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-wrap(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js", + "line": " get wrap() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-wrap(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js", + "line": " set wrap(V) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Headers.js", + "line": " append(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Headers.js", + "line": " return this[impl].append(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Node.js", + "line": " insertBefore(node, child) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/generated/Node.js", + "line": " return utils.tryWrapperForImpl(this[impl].insertBefore(...args));", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js", + "line": " get innerHTML() {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js", + "line": " return this[impl][\"innerHTML\"];", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js", + "line": " set innerHTML(V) {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js", + "line": " context: \"Failed to set the 'innerHTML' property on 'ShadowRoot': The provided value\",", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js", + "line": " this[impl][\"innerHTML\"] = V;", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js", + "line": " innerHTML: { enumerable: true },", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js", + "line": " append(item) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js", + "line": " tokens.append(token);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js", + "line": " prepend(item) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-after(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js", + "line": " after(...nodes) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-before(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js", + "line": " before(...nodes) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js", + "line": " this._tokenSet.append(token);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js", + "line": " this._tokenSet.append(token);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js", + "line": " tempDiv.innerHTML = text;", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js", + "line": " node.innerHTML = text;", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js", + "line": " parent.insertBefore(node, previous.nextSibling);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js", + "line": " get innerHTML() {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js", + "line": " set innerHTML(markup) {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js", + "line": " get outerHTML() {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-outerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js", + "line": " set outerHTML(markup) {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-load(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js", + "line": " load() {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-document.write(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js", + "line": " // In our current terribly-hacky document.write() implementation, we parse in a div them move elements into the main", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js", + "line": " this.insertBefore(value, insertionPoint);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js", + "line": " this.insertBefore(value, insertionPoint);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js", + "line": " this.insertBefore(el, insertionPoint.nextSibling);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js", + "line": " tSection.insertBefore(tr, beforeTR);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js", + "line": " insertBefore(nodeImpl, childImpl) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js", + "line": " domSymbolTree.insertBefore(childImpl, node);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js", + "line": " append(...nodes) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-prepend(", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js", + "line": " prepend(...nodes) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js", + "line": " get innerHTML() {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js", + "line": " set innerHTML(markup) {", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "eval", + "path": "node_modules/jsdom/lib/jsdom/living/window/navigation.js", + "line": " return window.eval(scriptSource);", + "reasonCategory": "notExercisedByOurApp", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/xhr-utils.js", + "line": " form.append(entry.name, entry.value, entry.options);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js", + "line": " append(name, value, filename) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-$(", + "path": "node_modules/jsdom/node_modules/acorn/dist/acorn.js", + "line": " // $$('#table-binary-unicode-properties > figure > table > tbody > tr > td:nth-child(1) code').map(el => el.innerText)", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "jQuery-$(", "path": "node_modules/lazy-universal-dotenv/node_modules/core-js/internals/collection.js", @@ -4739,6 +5487,13 @@ "reasonCategory": "falseMatch", "updated": "2019-07-19T17:16:02.404Z" }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/nwsapi/src/nwsapi.js", + "line": " r = d.documentElement; r.removeChild(r.insertBefore(s, r.firstChild));", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "DOM-innerHTML", "path": "node_modules/package-json/node_modules/@sindresorhus/is/dist/index.js", @@ -5089,6 +5844,34 @@ "reasonCategory": "falseMatch", "updated": "2018-09-19T18:13:29.628Z" }, + { + "rule": "jQuery-insertAfter(", + "path": "node_modules/parse5/lib/parser/index.js", + "line": " p.openElements.insertAfter(furthestBlock, newElement);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/parse5/lib/parser/index.js", + "line": " this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertAfter(", + "path": "node_modules/parse5/lib/parser/open-element-stack.js", + "line": " insertAfter(referenceElement, newElement) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/parse5/lib/tree-adapters/default.js", + "line": " insertBefore(parentNode, createTextNode(text), referenceNode);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "jQuery-append(", "path": "node_modules/picomatch/lib/parse.js", @@ -5101,21 +5884,21 @@ "path": "node_modules/picomatch/lib/parse.js", "line": " append({ value });", "reasonCategory": "falseMatch", - "updated": "2020-02-21T14:09:28.005Z" + "updated": "2021-04-06T04:01:59.934Z" }, { "rule": "jQuery-append(", "path": "node_modules/picomatch/lib/parse.js", "line": " append({ value });", "reasonCategory": "falseMatch", - "updated": "2020-02-21T14:09:28.005Z" + "updated": "2021-12-01T01:35:52.592Z" }, { "rule": "jQuery-append(", "path": "node_modules/picomatch/lib/parse.js", "line": " append({ value });", "reasonCategory": "falseMatch", - "updated": "2020-02-21T14:09:28.005Z" + "updated": "2021-12-01T01:35:52.592Z" }, { "rule": "thenify-multiArgs", @@ -5552,13 +6335,6 @@ "reasonCategory": "falseMatch", "updated": "2021-04-06T04:01:59.934Z" }, - { - "rule": "DOM-innerHTML", - "path": "node_modules/playwright/lib/third_party/highlightjs/highlightjs/core.js", - "line": " domProps: { innerHTML: this.highlighted }", - "reasonCategory": "falseMatch", - "updated": "2021-04-06T04:01:59.934Z" - }, { "rule": "DOM-innerHTML", "path": "node_modules/playwright/lib/third_party/highlightjs/highlightjs/core.js", @@ -5580,6 +6356,13 @@ "reasonCategory": "falseMatch", "updated": "2021-04-06T04:01:59.934Z" }, + { + "rule": "DOM-innerHTML", + "path": "node_modules/playwright/lib/third_party/highlightjs/highlightjs/core.js", + "line": " domProps: { innerHTML: this.highlighted }", + "reasonCategory": "usageTrusted", + "updated": "2021-12-01T01:31:12.757Z" + }, { "rule": "jQuery-$(", "path": "node_modules/playwright/lib/third_party/highlightjs/highlightjs/languages/javascript.js", @@ -7570,7 +8353,7 @@ { "rule": "DOM-innerHTML", "path": "node_modules/quill/modules/clipboard.js", - "line": " debug.log('convert', this.container.innerHTML, delta);", + "line": " this.container.innerHTML = '';", "reasonCategory": "usageTrusted", "updated": "2020-10-13T18:36:57.012Z", "reasonDetail": "necessary for quill" @@ -7578,10 +8361,9 @@ { "rule": "DOM-innerHTML", "path": "node_modules/quill/modules/clipboard.js", - "line": " this.container.innerHTML = '';", + "line": " debug.log('convert', this.container.innerHTML, delta);", "reasonCategory": "usageTrusted", - "updated": "2020-10-13T18:36:57.012Z", - "reasonDetail": "necessary for quill" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "DOM-innerHTML", @@ -7941,7 +8723,7 @@ "rule": "jQuery-prepend(", "path": "node_modules/source-map/dist/source-map.min.js", "reasonCategory": "falseMatch", - "updated": "2018-09-19T18:13:29.628Z" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "jQuery-prepend(", @@ -7978,6 +8760,34 @@ "reasonCategory": "falseMatch", "updated": "2020-04-25T01:47:02.583Z" }, + { + "rule": "jQuery-insertAfter(", + "path": "node_modules/symbol-tree/lib/SymbolTree.js", + "line": " insertAfter(referenceObject, newObject) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertAfter(", + "path": "node_modules/symbol-tree/lib/SymbolTree.js", + "line": " this.insertAfter(referenceNode.lastChild, newObject);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/symbol-tree/lib/SymbolTree.js", + "line": " insertBefore(referenceObject, newObject) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-insertBefore(", + "path": "node_modules/symbol-tree/lib/SymbolTree.js", + "line": " this.insertBefore(referenceNode.firstChild, newObject);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "jQuery-append(", "path": "node_modules/table/dist/createStream.js", @@ -8319,6 +9129,27 @@ "reasonCategory": "falseMatch", "updated": "2018-09-19T18:13:29.628Z" }, + { + "rule": "jQuery-append(", + "path": "node_modules/whatwg-url/lib/URLSearchParams-impl.js", + "line": " append(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/whatwg-url/lib/URLSearchParams.js", + "line": " append(name, value) {", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, + { + "rule": "jQuery-append(", + "path": "node_modules/whatwg-url/lib/URLSearchParams.js", + "line": " return this[impl].append(...args);", + "reasonCategory": "falseMatch", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "eval", "path": "node_modules/workerpool/dist/worker.js", @@ -8560,7 +9391,7 @@ "path": "ts/components/CallScreen.tsx", "line": " const localVideoRef = useRef(null);", "reasonCategory": "usageTrusted", - "updated": "2021-07-30T16:57:33.618Z" + "updated": "2021-12-01T01:31:12.757Z" }, { "rule": "React-useRef", @@ -8941,6 +9772,13 @@ "updated": "2020-02-14T20:02:37.507Z", "reasonDetail": "Used only to set focus" }, + { + "rule": "React-useRef", + "path": "ts/components/MediaEditor.tsx", + "line": " const isRestoringImageState = useRef(false);", + "reasonCategory": "usageTrusted", + "updated": "2021-12-01T01:13:59.892Z" + }, { "rule": "React-useRef", "path": "ts/components/Modal.tsx", diff --git a/yarn.lock b/yarn.lock index 5b7a2d3a9..059b76a30 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1705,6 +1705,21 @@ lodash "^4.17.15" tmp-promise "^3.0.2" +"@mapbox/node-pre-gyp@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" + integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== + dependencies: + detect-libc "^1.0.3" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.1" + nopt "^5.0.0" + npmlog "^4.1.2" + rimraf "^3.0.2" + semver "^7.3.4" + tar "^6.1.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -2499,6 +2514,11 @@ "@types/express-serve-static-core" "*" "@types/serve-static" "*" +"@types/fabric@4.5.3": + version "4.5.3" + resolved "https://registry.yarnpkg.com/@types/fabric/-/fabric-4.5.3.tgz#f4f2e1168d086a7ffe12e5cea4193d0cd6a526f7" + integrity sha512-DCneYSkuVdGYpFbDQ2j5zT7DDdAiOlAPfSjS3PsVWHFt6f/DapCdV0ansPq3Ai5oe+j6BgFhdkh+DWne1yQMdw== + "@types/filesize@3.6.0": version "3.6.0" resolved "https://registry.yarnpkg.com/@types/filesize/-/filesize-3.6.0.tgz#5f1a25c7b4e3d5ee2bc63133d374d096b7008c8d" @@ -3471,6 +3491,11 @@ resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== +abab@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== + abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" @@ -3497,16 +3522,39 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" +acorn-globals@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^6.0.1: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + acorn@^6.2.1: version "6.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn@^7.1.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + acorn@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" @@ -3871,6 +3919,11 @@ array-each@^1.0.1: resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + array-filter@~0.0.0: version "0.0.1" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" @@ -4870,6 +4923,11 @@ brorand@^1.0.1, brorand@^1.1.0: resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" @@ -5228,6 +5286,15 @@ caniuse-lite@^1.0.30001181: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001207.tgz#364d47d35a3007e528f69adb6fecb07c2bb2cc50" integrity sha512-UPQZdmAsyp2qfCTiMU/zqGSWOYaY9F9LL61V8f+8MrubsaDGpaHD9HRV/EWZGULZn0Hxu48SKzI5DgFwTvHuYw== +canvas@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/canvas/-/canvas-2.8.0.tgz#f99ca7f25e6e26686661ffa4fec1239bbef74461" + integrity sha512-gLTi17X8WY9Cf5GZ2Yns8T5lfBOcGgFehDFb+JQwDqdOoBOcECS9ZWMEAqMSVcMYwXD659J8NyzjRY/2aE+C2Q== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.0" + nan "^2.14.0" + simple-get "^3.0.3" + case-sensitive-paths-webpack-plugin@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e" @@ -6307,6 +6374,23 @@ csso@^3.5.1: dependencies: css-tree "1.0.0-alpha.29" +cssom@^0.4.1: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + csstype@^2.2.0: version "2.6.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.2.tgz#3043d5e065454579afc7478a18de41909c8a2f01" @@ -6351,6 +6435,15 @@ data-uri-to-buffer@3: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" @@ -6805,6 +6898,13 @@ domelementtype@^2.0.1: resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + domhandler@^2.3.0: version "2.4.2" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" @@ -7386,7 +7486,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.8.1: +escodegen@^1.11.1, escodegen@^1.8.1: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -7972,6 +8072,14 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= +fabric@4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/fabric/-/fabric-4.6.0.tgz#bd11c2baf165db2c97e4d05740d931586cb26bbb" + integrity sha512-MhJXCD/ZugOGV5aPHIG0MY1q2EfrlzC2sasrAHj0HHXN50JTe1bHFrlRdkXBijCJ0dG81fGu/A/Pct9DyuwCzQ== + optionalDependencies: + canvas "^2.6.1" + jsdom "^15.2.1" + fast-deep-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" @@ -9569,6 +9677,13 @@ hpack.js@^2.1.6: readable-stream "^2.0.1" wbuf "^1.1.0" +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + html-entities@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" @@ -10767,6 +10882,38 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsdom@^15.2.1: + version "15.2.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" + integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== + dependencies: + abab "^2.0.0" + acorn "^7.1.0" + acorn-globals "^4.3.2" + array-equal "^1.0.0" + cssom "^0.4.1" + cssstyle "^2.0.0" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.1" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.2.0" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.7" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^3.0.1" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^7.0.0" + xml-name-validator "^3.0.0" + jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" @@ -11206,6 +11353,11 @@ lodash.memoize@^4.1.2: resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" @@ -11359,6 +11511,13 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + make-error@^1.1.1: version "1.3.5" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" @@ -12050,6 +12209,11 @@ nan@^2.12.1, nan@^2.13.2: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== +nan@^2.14.0: + version "2.15.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" + integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== + nanoid@3.1.20: version "3.1.20" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" @@ -12186,6 +12350,13 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.6.1: + version "2.6.5" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.5.tgz#42735537d7f080a7e5f78b6c549b7146be1742fd" + integrity sha512-mmlIVHJEu5rnIxgEgez6b9GgWXbkZj5YZ7fx+2r94a2E+Uirsp6HsPTPlomfdHtpt/B0cdKviwkoaM6pyvUOpQ== + dependencies: + whatwg-url "^5.0.0" + node-forge@0.10.0, node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -12496,6 +12667,11 @@ number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + nyc@11.4.1: version "11.4.1" resolved "https://registry.yarnpkg.com/nyc/-/nyc-11.4.1.tgz#13fdf7e7ef22d027c61d174758f6978a68f4f5e5" @@ -13099,6 +13275,11 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" @@ -13392,6 +13573,11 @@ plist@^3.0.1: xmlbuilder "^9.0.7" xmldom "^0.5.0" +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + pngjs@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" @@ -14957,6 +15143,22 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + request@^2.45.0: version "2.81.0" resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" @@ -15368,6 +15570,13 @@ sax@^1.2.4, sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + scheduler@^0.13.3: version "0.13.3" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.13.3.tgz#bed3c5850f62ea9c716a4d781f9daeb9b2a58896" @@ -16149,6 +16358,11 @@ stdout-stream@^1.4.0: dependencies: readable-stream "^2.0.1" +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + store2@^2.7.1: version "2.8.0" resolved "https://registry.yarnpkg.com/store2/-/store2-2.8.0.tgz#032d5dcbd185a5d74049d67a1765ff1e75faa04b" @@ -16513,6 +16727,11 @@ symbol-observable@^1.0.3, symbol-observable@^1.0.4, symbol-observable@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + symbol.prototype.description@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/symbol.prototype.description/-/symbol.prototype.description-1.0.0.tgz#6e355660eb1e44ca8ad53a68fdb72ef131ca4b12" @@ -16877,6 +17096,23 @@ touch@^2.0.1: dependencies: nopt "~1.0.10" +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.1.tgz#9df4f57e739c26930a018184887f4adb7dca73b2" + integrity sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg== + dependencies: + ip-regex "^2.1.0" + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@~2.3.0: version "2.3.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.4.tgz#ec60cee38ac675063ffc97a5c18970578ee83655" @@ -16891,13 +17127,17 @@ tough-cookie@~2.4.3: psl "^1.1.24" punycode "^1.4.1" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= dependencies: - psl "^1.1.28" - punycode "^2.1.1" + punycode "^2.1.0" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= trim-newlines@^1.0.0: version "1.0.0" @@ -17450,6 +17690,22 @@ vm2@^3.9.3: resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.5.tgz#5288044860b4bbace443101fcd3bddb2a0aa2496" integrity sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng== +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + warning@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" @@ -17518,6 +17774,16 @@ webdriverio@^4.13.0: wdio-dot-reporter "~0.0.8" wgxpath "~1.0.0" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + webpack-cli@4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.6.0.tgz#27ae86bfaec0cf393fcfd58abdc5a229ad32fd16" @@ -17742,10 +18008,39 @@ wgxpath@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wgxpath/-/wgxpath-1.0.0.tgz#eef8a4b9d558cc495ad3a9a2b751597ecd9af690" +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + whatwg-fetch@>=0.10.0: version "2.0.3" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" @@ -17905,6 +18200,11 @@ ws@^6.2.1: dependencies: async-limiter "~1.0.0" +ws@^7.0.0: + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== + ws@^7.3.1: version "7.4.4" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" @@ -17915,6 +18215,11 @@ xdg-basedir@^4.0.0: resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + xmlbuilder@>=11.0.1: version "15.1.1" resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" @@ -17925,6 +18230,11 @@ xmlbuilder@^9.0.7: resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + xmldom@^0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.5.0.tgz#193cb96b84aa3486127ea6272c4596354cb4962e"