Create text stories

This commit is contained in:
Josh Perez 2022-06-16 20:48:57 -04:00 committed by GitHub
parent 973b2264fe
commit d970d427f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 2433 additions and 1106 deletions

View file

@ -4,7 +4,8 @@
import type { AttachmentType, TextAttachmentType } from '../types/Attachment';
const COLOR_BLACK_ALPHA_90 = 'rgba(0, 0, 0, 0.9)';
const COLOR_WHITE_INT = 4294704123;
export const COLOR_BLACK_INT = 4278190080;
export const COLOR_WHITE_INT = 4294704123;
export function getHexFromNumber(color: number): string {
return `#${color.toString(16).slice(2)}`;
@ -13,11 +14,11 @@ export function getHexFromNumber(color: number): string {
export function getBackgroundColor({
color,
gradient,
}: TextAttachmentType): string {
}: Pick<TextAttachmentType, 'color' | 'gradient'>): string {
if (gradient) {
return `linear-gradient(${gradient.angle}deg, ${getHexFromNumber(
gradient.startColor || COLOR_WHITE_INT
)}, ${getHexFromNumber(gradient.endColor || COLOR_WHITE_INT)})`;
)}, ${getHexFromNumber(gradient.endColor || COLOR_WHITE_INT)}) border-box`;
}
return getHexFromNumber(color || COLOR_WHITE_INT);

View file

@ -912,7 +912,7 @@
"rule": "jQuery-load(",
"path": "node_modules/agent-base/node_modules/debug/src/common.js",
"line": "\tcreateDebug.enable(createDebug.load());",
"reasonCategory": "falseMatch|testCode|exampleCode|otherUtilityCode|regexMatchedSafeCode|notExercisedByOurApp|ruleNeeded|usageTrusted",
"reasonCategory": "usageTrusted",
"updated": "2022-02-11T21:58:24.827Z"
},
{
@ -7351,6 +7351,125 @@
"reasonCategory": "falseMatch",
"updated": "2022-06-04T00:50:49.405Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.cjs.js",
"line": " var libRef = React.useRef(null);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.cjs.js",
"line": " var heightRef = React.useRef(0);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.cjs.js",
"line": " var measurementsCacheRef = React.useRef();",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js",
"line": " var libRef = useRef(null);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js",
"line": " var heightRef = useRef(0);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.browser.esm.js",
"line": " var measurementsCacheRef = useRef();",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.cjs.dev.js",
"line": " var libRef = React.useRef(null);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.cjs.dev.js",
"line": " var heightRef = React.useRef(0);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.cjs.dev.js",
"line": " var measurementsCacheRef = React.useRef();",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.cjs.prod.js",
"line": " var libRef = React.useRef(null);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.cjs.prod.js",
"line": " var heightRef = React.useRef(0);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.cjs.prod.js",
"line": " var measurementsCacheRef = React.useRef();",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.js",
"line": " var libRef = useRef(null);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.js",
"line": " var heightRef = useRef(0);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/react-textarea-autosize/dist/react-textarea-autosize.esm.js",
"line": " var measurementsCacheRef = useRef();",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "jQuery-wrap(",
"path": "node_modules/react-textarea-autosize/node_modules/regenerator-runtime/runtime.js",
"line": " function wrap(innerFn, outerFn, self, tryLocsList) {",
"reasonCategory": "falseMatch",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "jQuery-wrap(",
"path": "node_modules/react-textarea-autosize/node_modules/regenerator-runtime/runtime.js",
"line": " wrap(innerFn, outerFn, self, tryLocsList),",
"reasonCategory": "falseMatch",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "jQuery-wrap(",
"path": "node_modules/redux/node_modules/regenerator-runtime/runtime.js",
@ -8108,6 +8227,41 @@
"updated": "2020-08-26T00:10:28.628Z",
"reasonDetail": "isn't jquery"
},
{
"rule": "React-useRef",
"path": "node_modules/use-composed-ref/dist/use-composed-ref.cjs.js",
"line": " var prevUserRef = React.useRef();",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/use-composed-ref/dist/use-composed-ref.esm.js",
"line": " var prevUserRef = useRef();",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/use-latest/dist/use-latest.cjs.dev.js",
"line": " var ref = React__namespace.useRef(value);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/use-latest/dist/use-latest.cjs.prod.js",
"line": " var ref = React__namespace.useRef(value);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "node_modules/use-latest/dist/use-latest.esm.js",
"line": " var ref = React.useRef(value);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "eval",
"path": "node_modules/vm2/lib/nodevm.js",
@ -8751,6 +8905,13 @@
"reasonCategory": "usageTrusted",
"updated": "2021-11-30T10:15:33.662Z"
},
{
"rule": "React-useRef",
"path": "ts/components/StoryCreator.tsx",
"line": " const textEditorRef = useRef<HTMLInputElement | null>(null);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "ts/components/StoryImage.tsx",
@ -8779,6 +8940,13 @@
"reasonCategory": "usageTrusted",
"updated": "2022-04-06T00:59:17.194Z"
},
{
"rule": "React-useRef",
"path": "ts/components/TextAttachment.tsx",
"line": " const textEditorRef = useRef<HTMLTextAreaElement | null>(null);",
"reasonCategory": "usageTrusted",
"updated": "2022-06-16T23:23:32.306Z"
},
{
"rule": "React-useRef",
"path": "ts/components/Tooltip.tsx",

10
ts/util/objectMap.ts Normal file
View file

@ -0,0 +1,10 @@
// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
export function objectMap<T>(
obj: Record<string, T>,
f: (key: keyof typeof obj, value: typeof obj[keyof typeof obj]) => unknown
): Array<unknown> {
const keys: Array<keyof typeof obj> = Object.keys(obj);
return keys.map(key => f(key, obj[key]));
}