diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c5921ee37..9b19ffb3d 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -47,6 +47,7 @@ jobs:
"@ollion/flow-log":"packages/flow-log/CHANGELOG.md",
"@ollion/flow-code-editor":"packages/flow-code-editor/CHANGELOG.md",
"@ollion/flow-md-editor":"packages/flow-md-editor/CHANGELOG.md",
+ "@ollion/flow-text-editor":"packages/flow-text-editor/CHANGELOG.md",
"@ollion/flow-core":"packages/flow-core/CHANGELOG.md",
"@ollion/flow-table":"packages/flow-table/CHANGELOG.md",
"@ollion/flow-core-config":"packages/flow-core-config/CHANGELOG.md",
diff --git a/.storybook/main.ts b/.storybook/main.ts
index 28cbeea51..cc56872bd 100644
--- a/.storybook/main.ts
+++ b/.storybook/main.ts
@@ -9,6 +9,7 @@ const alias = [
"flow-lineage",
"flow-log",
"flow-md-editor",
+ "flow-text-editor",
"flow-table",
"flow-dashboard"
].map(pkg => ({
diff --git a/.storybook/preview.ts b/.storybook/preview.ts
index 66a216a1a..bac1f03c5 100644
--- a/.storybook/preview.ts
+++ b/.storybook/preview.ts
@@ -11,6 +11,7 @@ import "@ollion/flow-log";
import "@ollion/flow-code-editor";
import "@ollion/flow-table";
import "@ollion/flow-md-editor";
+import "@ollion/flow-text-editor";
import "@ollion/flow-form-builder";
import "@ollion/flow-lineage";
import "@ollion/flow-dashboard";
@@ -65,6 +66,8 @@ export const parameters = {
["About", "Release Notes", "Properties", "*", "Examples", "Debug"],
"flow-code-editor",
["About", "Release Notes"],
+ "flow-text-editor",
+ ["About", "Release Notes"],
"flow-md-editor",
["About", "Release Notes"],
"flow-log",
@@ -134,6 +137,10 @@ async function run() {
await fetch(new URL("../packages/flow-md-editor/custom-elements.json", import.meta.url))
).json();
+ const textEditorCustomElements = await (
+ await fetch(new URL("../packages/flow-text-editor/custom-elements.json", import.meta.url))
+ ).json();
+
setCustomElementsManifest(customElements);
setCustomElements(customElements);
setCustomElementsManifest(loggerCustomElements);
@@ -146,6 +153,8 @@ async function run() {
setCustomElementsManifest(mdEditorCustomElements);
setCustomElements(mdEditorCustomElements);
+ setCustomElementsManifest(textEditorCustomElements);
+ setCustomElements(textEditorCustomElements);
setCustomElementsManifest(dashboardCustomElements);
setCustomElements(dashboardCustomElements);
}
diff --git a/package.json b/package.json
index ed573845c..1f821fae6 100644
--- a/package.json
+++ b/package.json
@@ -80,6 +80,7 @@
"@ollion/flow-lineage": "workspace:*",
"@ollion/flow-log": "workspace:*",
"@ollion/flow-md-editor": "workspace:*",
+ "@ollion/flow-text-editor": "workspace:*",
"@ollion/flow-product-icon": "1.14.0",
"@ollion/flow-system-icon": "latest",
"@ollion/flow-table": "workspace:*",
diff --git a/packages/flow-core/CHANGELOG.md b/packages/flow-core/CHANGELOG.md
index dd5951eb9..c61b9bfae 100644
--- a/packages/flow-core/CHANGELOG.md
+++ b/packages/flow-core/CHANGELOG.md
@@ -2,6 +2,12 @@
# Change Log
+## [2.10.0] - 2024-07-10
+
+### Minor Changes
+
+- `actions` property added in `f-button`, it will be displayed under chevron
+
## [2.9.15] - 2024-07-08
### Patch Changes
diff --git a/packages/flow-core/package.json b/packages/flow-core/package.json
index 3de257842..ef9e2c93c 100644
--- a/packages/flow-core/package.json
+++ b/packages/flow-core/package.json
@@ -1,6 +1,6 @@
{
"name": "@ollion/flow-core",
- "version": "2.9.15",
+ "version": "2.10.0",
"description": "Core package of flow design system",
"module": "dist/flow-core.es.js",
"main": "dist/flow-core.cjs.js",
diff --git a/packages/flow-core/src/components/f-button/f-button.scss b/packages/flow-core/src/components/f-button/f-button.scss
index 55c66f272..87425ed12 100644
--- a/packages/flow-core/src/components/f-button/f-button.scss
+++ b/packages/flow-core/src/components/f-button/f-button.scss
@@ -43,6 +43,7 @@ $sizes: (
"x-small": (
"height": 20px,
"padding": 0px 8px,
+ "options-padding": 0px 4px,
"fontSize": 10px,
"gap": 4px,
"loaderSize": 12px
@@ -50,6 +51,7 @@ $sizes: (
"small": (
"height": 28px,
"padding": 0px 12px,
+ "options-padding": 0px 8px,
"fontSize": 12px,
"gap": 8px,
"loaderSize": 16px
@@ -57,6 +59,7 @@ $sizes: (
"medium": (
"height": 36px,
"padding": 0px 16px,
+ "options-padding": 0px 12px,
"fontSize": 14px,
"gap": 12px,
"loaderSize": 20px
@@ -64,6 +67,7 @@ $sizes: (
"large": (
"height": 44px,
"padding": 0px 20px,
+ "options-padding": 0px 16px,
"fontSize": 16px,
"gap": 16px,
"loaderSize": 24px
@@ -162,7 +166,10 @@ in this case it is `f-button`
}
}
}
-
+ &.has-options {
+ border-top-right-radius: 0px !important;
+ border-bottom-right-radius: 0px !important;
+ }
/**
* Iterating over sizes with padding, fontsize, height
**/
@@ -180,6 +187,10 @@ in this case it is `f-button`
padding: map.get($value, "padding");
}
+ &.has-options {
+ padding-right: map.get($value, "gap") !important;
+ }
+
f-counter {
margin-left: map.get($value, "gap");
}
@@ -231,4 +242,65 @@ in this case it is `f-button`
button:focus {
outline: none;
}
+
+ .options-wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ box-sizing: border-box;
+ cursor: pointer;
+ //
+
+ @each $state, $color in $states {
+ &[state="#{$state}"][category="fill"] {
+ background-color: map.get($color, "background");
+ border: 1px solid map.get($color, "background"); // added to match width of outline category
+ border-left: 1px solid var(--color-border-default) !important;
+ // hover changes background
+ &:hover {
+ background-color: map.get($color, "hover");
+ border: 1px solid map.get($color, "hover");
+ }
+ }
+
+ // outline category states styles, where backgrounds are transparent
+ &[state="#{$state}"][category="outline"] {
+ background-color: transparent;
+ border: 1px solid map.get($color, "background");
+ border-left: 1px solid transparent !important;
+ color: map.get($color, "background");
+ &:hover {
+ border: 1px solid map.get($color, "hover");
+ color: map.get($color, "hover");
+ }
+ }
+ //transparent category with transparent background and border
+ &[state="#{$state}"][category="transparent"],
+ &[state="#{$state}"][category="packed"] {
+ background-color: transparent;
+ border: 1px solid transparent;
+ color: map.get($color, "background");
+ &:hover {
+ border: 1px solid transparent;
+ color: map.get($color, "hover");
+ }
+ }
+ }
+
+ @each $size, $value in $sizes {
+ &[size="#{$size}"] {
+ &[variant="round"] {
+ border-top-right-radius: var(--input-border-radius-round);
+ border-bottom-right-radius: var(--input-border-radius-round);
+ }
+ &[category="packed"] {
+ padding: 0px;
+ }
+ &:not([category="packed"]) {
+ height: map.get($value, "height");
+ padding: map.get($value, "options-padding");
+ }
+ }
+ }
+ }
}
diff --git a/packages/flow-core/src/components/f-button/f-button.ts b/packages/flow-core/src/components/f-button/f-button.ts
index cf0c56723..994f6f331 100644
--- a/packages/flow-core/src/components/f-button/f-button.ts
+++ b/packages/flow-core/src/components/f-button/f-button.ts
@@ -1,4 +1,11 @@
-import { html, PropertyValueMap, PropertyValues, unsafeCSS } from "lit";
+import {
+ html,
+ HTMLTemplateResult,
+ nothing,
+ PropertyValueMap,
+ PropertyValues,
+ unsafeCSS
+} from "lit";
import { property, query, state } from "lit/decorators.js";
import { FRoot } from "../../mixins/components/f-root/f-root";
import eleStyle from "./f-button.scss?inline";
@@ -16,6 +23,9 @@ import { FCounter } from "../f-counter/f-counter";
import { flowElement } from "./../../utils";
import { injectCss } from "@ollion/flow-core-config";
import { ifDefined } from "lit/directives/if-defined.js";
+import { FPopover } from "../f-popover/f-popover";
+import { FDiv } from "../f-div/f-div";
+import { FText } from "../f-text/f-text";
export type FButtonState =
| "primary"
@@ -28,6 +38,9 @@ export type FButtonState =
injectCss("f-button", globalStyle);
+export type FButtonAction = string | (() => HTMLTemplateResult);
+export type FButtonActions = FButtonAction[];
+
/**
* @summary Buttons allow users to perform an action or to initiate a new function.
*/
@@ -40,7 +53,10 @@ export class FButton extends FRoot {
unsafeCSS(eleStyle),
unsafeCSS(globalStyle),
...FIcon.styles,
- ...FCounter.styles
+ ...FCounter.styles,
+ ...FDiv.styles,
+ ...FPopover.styles,
+ ...FText.styles
];
/**
@@ -109,6 +125,18 @@ export class FButton extends FRoot {
@property({ reflect: true, type: Boolean })
disabled?: boolean = false;
+ /**
+ * @attribute actions are used to display if single button can do multiple actions
+ */
+ @property({ reflect: false, type: Array })
+ actions?: FButtonActions = [];
+
+ /**
+ * @attribute to show which action is currently selected
+ */
+ @property({ reflect: true, type: String, attribute: "selected-action" })
+ selectedAction?: FButtonAction;
+
/**
* @attribute Set true if want to wrap content if there is no space in button
*/
@@ -120,6 +148,11 @@ export class FButton extends FRoot {
*/
@query("f-icon")
iconElement!: FIcon;
+ /**
+ * icon element reference
+ */
+ @query("#f-button-actions")
+ buttonActionsPopover?: FPopover;
/**
* counter element reference
@@ -212,6 +245,10 @@ export class FButton extends FRoot {
this.setAttribute("aria-disabled", this.disabled ? "true" : "false");
}
+ get hasActions() {
+ return this.actions && this.actions.length > 0;
+ }
+
render() {
/**
* creating local fill variable out of state prop.
@@ -251,7 +288,7 @@ export class FButton extends FRoot {
.size=${this.iconSize}
clickable
>`
- : "";
+ : nothing;
/**
* create iconRight if available
*/
@@ -288,7 +325,7 @@ export class FButton extends FRoot {
.label=${this.counter}
class=${classMap(counterClasses)}
>`
- : "";
+ : nothing;
/**
* render loading if required
*/
@@ -317,23 +354,106 @@ export class FButton extends FRoot {
* Final html to render
*/
return html`
- ${iconLeft}${this.label}${iconRight}${counter}
- `;
+ part="f-button-wrapper"
+ class=${classMap({
+ "f-button": true,
+ "custom-loader": this.fill ? true : false,
+ "custom-hover": this.fill && this.category === "fill" ? true : false,
+ "has-options": this.hasActions ? true : false
+ })}
+ style=${this.applyStyles()}
+ category=${ifDefined(this.category)}
+ size=${ifDefined(this.size)}
+ state=${ifDefined(this.state)}
+ variant=${ifDefined(this.variant)}
+ ?loading=${this.loading}
+ ?disabled=${this.disabled}
+ data-qa-id=${ifDefined(this.getAttribute("data-qa-element-id")) ?? ""}
+ >
+ ${iconLeft}${this.label}${iconRight}${counter}
+
+ ${this.hasActions
+ ? html`
+
+
+
+
+ ${this.actions!.map((a, ai) => {
+ const border = (() => {
+ if (ai === this.actions!.length - 1) {
+ return "none";
+ }
+ return "small solid secondary bottom";
+ })();
+ return html` this.selectAction(a)}
+ >
+ ${typeof a === "function"
+ ? a()
+ : html`${a}`}
+ ${this.selectedAction === a
+ ? html``
+ : nothing}
+ `;
+ })}
+
+ `
+ : nothing} `;
+ }
+
+ selectAction(action: FButtonAction) {
+ this.selectedAction = action;
+ this.closeButtonActions();
+
+ const event = new CustomEvent<{ action: FButtonAction }>("action", {
+ detail: {
+ action
+ },
+ bubbles: true,
+ composed: true
+ });
+ this.dispatchEvent(event);
+ }
+ handleButtonActions() {
+ if (this.buttonActionsPopover) {
+ this.buttonActionsPopover.target = this;
+ this.buttonActionsPopover.offset = {
+ mainAxis: 4,
+ crossAxis: 0,
+ alignmentAxis: 0
+ };
+ this.buttonActionsPopover.open = true;
+ }
+ }
+
+ closeButtonActions() {
+ if (this.buttonActionsPopover) {
+ this.buttonActionsPopover.open = false;
+ }
}
protected updated(changedProperties: PropertyValues) {
diff --git a/packages/flow-md-editor/CHANGELOG.md b/packages/flow-md-editor/CHANGELOG.md
index 738a7bb02..820e84ff3 100644
--- a/packages/flow-md-editor/CHANGELOG.md
+++ b/packages/flow-md-editor/CHANGELOG.md
@@ -2,6 +2,13 @@
# Change Log
+## [2.1.2] - 2024-07-08
+
+### Patch Changes
+
+- `f-md-editor` stories added.
+- minor css changes when used inside `f-div`.
+
## [2.1.1] - 2024-07-08
### Patch Changes
diff --git a/packages/flow-md-editor/package.json b/packages/flow-md-editor/package.json
index 9a94d38c6..5c0607525 100644
--- a/packages/flow-md-editor/package.json
+++ b/packages/flow-md-editor/package.json
@@ -1,6 +1,6 @@
{
"name": "@ollion/flow-md-editor",
- "version": "2.1.1",
+ "version": "2.1.2",
"description": "Code editor component for flow library",
"module": "dist/flow-md-editor.es.js",
"main": "dist/flow-md-editor.es.js",
diff --git a/packages/flow-md-editor/src/components/f-md-editor/f-md-editor-global.scss b/packages/flow-md-editor/src/components/f-md-editor/f-md-editor-global.scss
index b2fa73397..09c5117b2 100644
--- a/packages/flow-md-editor/src/components/f-md-editor/f-md-editor-global.scss
+++ b/packages/flow-md-editor/src/components/f-md-editor/f-md-editor-global.scss
@@ -18,6 +18,8 @@ f-md-editor {
width: minmax(100%, max-content);
border: 1px solid transparent;
padding: 8px;
+ box-sizing: border-box;
+ height: 100%;
white-space: pre-line;
background-color: var(--color-surface-tertiary);
@@ -164,3 +166,18 @@ f-md-editor {
padding: 0;
}
}
+
+f-div[direction="column"] {
+ > f-md-editor {
+ width: 100%;
+ flex: 1 0 auto;
+ }
+}
+
+f-div[direction="row"] {
+ > f-md-editor {
+ flex: 1 0;
+ max-width: 100%;
+ height: 100%;
+ }
+}
diff --git a/packages/flow-text-editor/.npmignore b/packages/flow-text-editor/.npmignore
new file mode 100644
index 000000000..f245c4cd1
--- /dev/null
+++ b/packages/flow-text-editor/.npmignore
@@ -0,0 +1,8 @@
+*
+!dist/**/*.*
+!shims.d.ts
+!custom-elements.json
+!html.html-data.json
+!src/**/*.*
+!README.md
+!umd/**/*.*
\ No newline at end of file
diff --git a/packages/flow-text-editor/CHANGELOG.md b/packages/flow-text-editor/CHANGELOG.md
new file mode 100644
index 000000000..27a33d6bf
--- /dev/null
+++ b/packages/flow-text-editor/CHANGELOG.md
@@ -0,0 +1,9 @@
+Release Notes
+
+# Change Log
+
+## [0.0.1] - 2024-07-08
+
+### Features
+
+- `f-text-editor` : component added
diff --git a/packages/flow-text-editor/LICENSE b/packages/flow-text-editor/LICENSE
new file mode 100644
index 000000000..3263a06ef
--- /dev/null
+++ b/packages/flow-text-editor/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2022 CloudCover Consultancy Pvt Ltd
+
+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.
\ No newline at end of file
diff --git a/packages/flow-text-editor/README.md b/packages/flow-text-editor/README.md
new file mode 100644
index 000000000..30f008a2e
--- /dev/null
+++ b/packages/flow-text-editor/README.md
@@ -0,0 +1,60 @@
+# Flow Text Editor
+
+The Flow text editor is built on the Flow design framework ([website](https://flow.ollion.com/) / [github](https://github.com/ollionorg/flow-core)) using [Quill](https://github.com/slab/quill?tab=readme-ov-file)
+
+# Installation
+
+### 1️⃣ Install flow code editor dependency
+
+```
+npm i --save @ollion/flow-text-editor
+```
+
+**Note:** after installation, re-start your application.
+
+
+
+### 2️⃣ Import flow-text-editor into your project
+
+Paste the below snippet in your project and add your application startup/runtime code to it.
+
+```javascript
+import "@ollion/flow-core";
+import "@ollion/flow-text-editor";
+```
+
+
+
+### 3️⃣ For a typescript enabled project (optional)
+
+**Note:** After adding, re-start your application. Make sure you are using version >4.5
+
+**For Vue 3:**
+Copy paste below import types in your `main.ts` file.
+
+```Javascript
+import "@ollion/flow-text-editor/dist/types/vue3";
+```
+
+
+For Vue 2
+
+Copy paste below import types in your `main.ts` file.
+
+```Javascript
+import "@ollion/flow-text-editor/dist/types/vue2";
+```
+
+
+
+
+For React
+
+**React**: Include react type in `tsconfig.json` file like below.
+
+```json
+"include": ["src", "./node_modules/@ollion/flow-text-editor/dist/types/react.ts"]
+```
+
+
+
diff --git a/packages/flow-text-editor/compile.sh b/packages/flow-text-editor/compile.sh
new file mode 100644
index 000000000..066339adf
--- /dev/null
+++ b/packages/flow-text-editor/compile.sh
@@ -0,0 +1,11 @@
+
+#!/bin/bash
+
+HERE=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
+
+cd "$HERE"
+
+pnpm run analyze
+
+echo "building library..."
+pnpm vite build --emptyOutDir
diff --git a/packages/flow-text-editor/package.json b/packages/flow-text-editor/package.json
new file mode 100644
index 000000000..eea1f4816
--- /dev/null
+++ b/packages/flow-text-editor/package.json
@@ -0,0 +1,61 @@
+{
+ "name": "@ollion/flow-text-editor",
+ "version": "0.0.1",
+ "description": "Code editor component for flow library",
+ "module": "dist/flow-text-editor.es.js",
+ "main": "dist/flow-text-editor.cjs.js",
+ "types": "dist/src/index.d.ts",
+ "scripts": {
+ "build": "bash ./compile.sh",
+ "build:watch": "concurrently --kill-others \"vite build --emptyOutDir --watch\" \"tsc --watch\"",
+ "analyze": "cem analyze --litelement --globs \"src/**/*.ts\" && wca analyze src --format vscode --outFile html.html-data.json",
+ "analyze:watch": "cem analyze --litelement --globs \"src/**/*.ts\" --watch",
+ "test": "web-test-runner ./src/**/*.test.ts --node-resolve --port 8096"
+ },
+ "keywords": [
+ "web-components",
+ "lit-element",
+ "typescript",
+ "lit"
+ ],
+ "dependencies": {
+ "@ollion/flow-core": "workspace:*",
+ "@ollion/flow-core-config": "workspace:*",
+ "lit": "^3.1.0",
+ "quill": "^2.0.2"
+ },
+ "devDependencies": {
+ "@custom-elements-manifest/analyzer": "^0.5.7",
+ "@open-wc/testing": "^3.1.5",
+ "@types/jest": "29.5.5",
+ "@web/dev-server-esbuild": "^0.4.1",
+ "@web/test-runner": "^0.17.1",
+ "concurrently": "^8.2.1",
+ "esbuild-sass-plugin": "2.2.6",
+ "lit-html": "^3.1.0",
+ "sass": "^1.52.3",
+ "typescript": "^5.2.2",
+ "vite": "^4.4.11",
+ "web-component-analyzer": "^2.0.0-next.4"
+ },
+ "peerDependencies": {
+ "@ollion/flow-core": "^2.0.3",
+ "@ollion/flow-core-config": "^1.1.3"
+ },
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/ollionorg/flow-core.git",
+ "directory": "packages/flow-text-editor"
+ },
+ "publishConfig": {
+ "access": "public",
+ "registry": "https://registry.npmjs.org"
+ },
+ "customElements": "custom-elements.json",
+ "bugs": {
+ "url": "https://github.com/ollionorg/flow-core/issues"
+ },
+ "homepage": "https://github.com/ollionorg/flow-core",
+ "author": "@ollion",
+ "license": "MIT"
+}
diff --git a/packages/flow-text-editor/src/components/f-text-editor/f-text-editor-global.scss b/packages/flow-text-editor/src/components/f-text-editor/f-text-editor-global.scss
new file mode 100644
index 000000000..352eca6d0
--- /dev/null
+++ b/packages/flow-text-editor/src/components/f-text-editor/f-text-editor-global.scss
@@ -0,0 +1,266 @@
+@import "../../../../flow-core/src/mixins/scss/mixins";
+@import "quill/dist/quill.snow.css";
+
+f-text-editor {
+ @include base();
+ display: flex;
+ flex: 1 0 auto;
+ max-width: 100%;
+ max-height: 100%;
+ overflow: auto;
+ border-radius: 4px;
+ flex-direction: column;
+ > .ql-toolbar.ql-snow {
+ font-family: var(--flow-font);
+ border: 1px solid var(--color-input-default);
+ background-color: var(--color-input-default);
+ .ql-picker {
+ color: var(--color-text-default);
+
+ &.ql-expanded .ql-picker-label .ql-stroke {
+ stroke: var(--color-text-default);
+ }
+ .ql-picker-label .ql-stroke {
+ stroke: var(--color-text-default);
+ }
+ &.ql-expanded .ql-picker-options,
+ &.ql-expanded .ql-picker-label {
+ border-color: var(--color-surface-secondary);
+ }
+
+ &.ql-expanded .ql-picker-label {
+ background-color: var(--color-surface-secondary);
+ }
+ }
+ .ql-picker-options {
+ background-color: var(--color-surface-secondary);
+ }
+ }
+
+ > .f-text-editor-root {
+ display: flex;
+ max-width: 100%;
+ max-height: 100%;
+ overflow: auto;
+ flex-direction: column;
+ background-color: var(--color-input-default);
+
+ &.ql-container.ql-snow {
+ border: 1px solid var(--color-input-default);
+ }
+ .ql-editor {
+ padding: 0px 12px 12px 12px;
+ }
+ }
+
+ .ql-snow.ql-toolbar button:hover,
+ .ql-snow .ql-toolbar button:hover,
+ .ql-snow.ql-toolbar button:focus,
+ .ql-snow .ql-toolbar button:focus,
+ .ql-snow.ql-toolbar button.ql-active,
+ .ql-snow .ql-toolbar button.ql-active,
+ .ql-snow.ql-toolbar .ql-picker-label:hover,
+ .ql-snow .ql-toolbar .ql-picker-label:hover,
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active,
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active,
+ .ql-snow.ql-toolbar .ql-picker-item:hover,
+ .ql-snow .ql-toolbar .ql-picker-item:hover,
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected,
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected {
+ color: var(--color-primary-default);
+ }
+ .ql-snow .ql-stroke {
+ stroke: var(--color-text-default);
+ }
+
+ .ql-snow.ql-toolbar button:hover .ql-stroke,
+ .ql-snow .ql-toolbar button:hover .ql-stroke,
+ .ql-snow.ql-toolbar button:focus .ql-stroke,
+ .ql-snow .ql-toolbar button:focus .ql-stroke,
+ .ql-snow.ql-toolbar button.ql-active .ql-stroke,
+ .ql-snow .ql-toolbar button.ql-active .ql-stroke,
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,
+ .ql-snow.ql-toolbar button:hover .ql-stroke-miter,
+ .ql-snow .ql-toolbar button:hover .ql-stroke-miter,
+ .ql-snow.ql-toolbar button:focus .ql-stroke-miter,
+ .ql-snow .ql-toolbar button:focus .ql-stroke-miter,
+ .ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,
+ .ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter {
+ stroke: var(--color-primary-default);
+ }
+
+ .ql-snow .ql-tooltip {
+ background-color: var(--color-surface-secondary);
+ border: 1px solid var(--color-surface-secondary);
+ box-shadow: 0 0 5px var(--color-surface-secondary);
+ color: var(--color-text-default);
+ padding: 12px;
+ border-radius: 4px;
+ }
+ .ql-snow .ql-tooltip input[type="text"] {
+ background-color: var(--color-input-default);
+ padding: 12px;
+ outline: none;
+ height: 28px;
+ border: none;
+ border-radius: 4px;
+ color: var(--color-text-default);
+ width: 250px;
+
+ &:focus {
+ border: 1px solid var(--color-primary-default);
+ }
+ }
+ .ql-snow a {
+ color: var(--color-primary-default);
+ }
+ .ql-editor.ql-blank::before {
+ color: var(--color-text-subtle);
+ font-style: normal;
+ }
+ .ql-snow .ql-fill,
+ .ql-snow .ql-stroke.ql-fill {
+ fill: var(--color-text-default);
+ }
+ .ql-snow.ql-toolbar button:hover .ql-fill,
+ .ql-snow .ql-toolbar button:hover .ql-fill,
+ .ql-snow.ql-toolbar button:focus .ql-fill,
+ .ql-snow .ql-toolbar button:focus .ql-fill,
+ .ql-snow.ql-toolbar button.ql-active .ql-fill,
+ .ql-snow .ql-toolbar button.ql-active .ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,
+ .ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,
+ .ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,
+ .ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,
+ .ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,
+ .ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,
+ .ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,
+ .ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,
+ .ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill {
+ fill: var(--color-primary-default);
+ }
+
+ strong {
+ font-weight: bold;
+ }
+ em {
+ font-style: italic;
+ }
+ u {
+ text-decoration: underline;
+ }
+ s {
+ text-decoration: line-through;
+ }
+ blockquote {
+ border-left: 4px solid var(--color-border-default);
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding-left: 16px;
+ }
+ .ql-snow .ql-editor {
+ h1 {
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 30px;
+ }
+
+ h2 {
+ font-size: 18px;
+ font-weight: bold;
+ line-height: 27px;
+ }
+
+ h3 {
+ font-size: 16px;
+ font-weight: bold;
+ line-height: 24px;
+ }
+ }
+ ol {
+ list-style-type: decimal;
+ li {
+ counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+ counter-increment: list-0;
+ list-style-type: none;
+ &:before {
+ margin-left: -1.5em;
+ margin-right: 0.3em;
+ text-align: right;
+ content: counter(list-0, decimal) ". ";
+ display: inline-block;
+ white-space: nowrap;
+ width: 1.2em;
+ }
+ }
+ }
+ ul {
+ padding-left: 1.5em;
+ margin: 0;
+ padding: 0;
+ counter-reset: list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;
+ li {
+ list-style-type: none;
+ &:before {
+ margin-left: -1.5em;
+ margin-right: 0.3em;
+ text-align: right;
+ content: "\2022";
+ display: inline-block;
+ white-space: nowrap;
+ width: 1.2em;
+ }
+ }
+ }
+ .ql-snow .ql-editor pre.ql-syntax,
+ pre.ql-syntax {
+ background-color: var(--color-surface-secondary);
+ white-space: pre-wrap;
+ margin-bottom: 5px;
+ margin-top: 5px;
+ padding: 5px 10px;
+ }
+}
+
+f-div[direction="column"] {
+ > f-text-editor {
+ width: 100%;
+ flex: 1 0 auto;
+ }
+}
+
+f-div[direction="row"] {
+ > f-text-editor {
+ flex: 1 0;
+ max-width: 100%;
+ height: 100%;
+ }
+}
diff --git a/packages/flow-text-editor/src/components/f-text-editor/f-text-editor.test.ts b/packages/flow-text-editor/src/components/f-text-editor/f-text-editor.test.ts
new file mode 100644
index 000000000..f9b95bbce
--- /dev/null
+++ b/packages/flow-text-editor/src/components/f-text-editor/f-text-editor.test.ts
@@ -0,0 +1,19 @@
+import IconPack from "@ollion/flow-system-icon/dist/types/icon-pack";
+import { expect } from "@open-wc/testing";
+
+// import flow-core elements
+import "@ollion/flow-core";
+
+import { ConfigUtil } from "@ollion/flow-core";
+import { FTextEditor } from "@ollion/flow-text-editor";
+ConfigUtil.setConfig({ iconPack: IconPack });
+
+/**
+ * flow-text-editor is based on Quill so we added our skin and few props. hence for feature testing we don't need more test cases
+ */
+describe("f-text-editor", () => {
+ it("is defined", () => {
+ const el = document.createElement("f-text-editor");
+ expect(el).instanceOf(FTextEditor);
+ });
+});
diff --git a/packages/flow-text-editor/src/components/f-text-editor/f-text-editor.ts b/packages/flow-text-editor/src/components/f-text-editor/f-text-editor.ts
new file mode 100644
index 000000000..9098f86a9
--- /dev/null
+++ b/packages/flow-text-editor/src/components/f-text-editor/f-text-editor.ts
@@ -0,0 +1,138 @@
+import { unsafeCSS, html, PropertyValues, PropertyValueMap } from "lit";
+import { FRoot, flowElement } from "@ollion/flow-core";
+import globalStyle from "./f-text-editor-global.scss?inline";
+import { FTextArea } from "@ollion/flow-core";
+import { property } from "lit/decorators.js";
+import { injectCss } from "@ollion/flow-core-config";
+import { createRef, ref } from "lit-html/directives/ref.js";
+import Quill from "quill";
+import { keyed } from "lit-html/directives/keyed.js";
+import { unsafeHTML } from "lit/directives/unsafe-html.js";
+
+injectCss("f-text-editor", globalStyle);
+
+export type FTextEditorToolbarAction =
+ | "bold"
+ | "italic"
+ | "underline"
+ | "strike"
+ | "blockquote"
+ | "code-block"
+ | "link"
+ | "image"
+ | "video"
+ | "formula"
+ | { header: (1 | 2 | 3 | 4 | 5 | 6 | false)[] | 1 | 2 | 3 | 4 | 5 | 6 }
+ | { list: "ordered" | "bullet" | "check" }
+ | { script: "super" | "sub" }
+ | { indent: "-1" | "+1" }
+ | { direction: "rtl" }
+ | { size: "small" | false | "large" | "huge" }
+ | { color: string[] }
+ | { background: string[] }
+ | { align: ("left" | "center" | "right" | "justify")[] };
+
+export type FTextEditorToolbar = FTextEditorToolbarAction[] | FTextEditorToolbarAction[][];
+@flowElement("f-text-editor")
+export class FTextEditor extends FRoot {
+ /**
+ * To force re-render
+ */
+ key = 0;
+ /**
+ * css loaded from scss file
+ */
+ static styles = [unsafeCSS(globalStyle), ...FTextArea.styles];
+
+ /**
+ * @attribute value to be inserted in text-area.
+ */
+ @property({ reflect: false, type: String })
+ value?: string;
+ /**
+ * @attribute value to be inserted in text-area.
+ */
+ @property({ reflect: true, type: String })
+ placeholder?: string;
+
+ /**
+ * @attribute to make read-only
+ */
+ @property({ reflect: true, type: Boolean, attribute: "read-only" })
+ readOnly?: boolean;
+
+ set ["read-only"](val: boolean) {
+ this.readOnly = val;
+ }
+
+ /**
+ * @attribute toolbar to be displayed on top
+ */
+ @property({ reflect: true, type: String })
+ toolbar?: FTextEditorToolbar = ["bold", "italic", "underline", "strike", "link"];
+
+ editorRoot = createRef();
+
+ quillInstance?: Quill;
+
+ createRenderRoot() {
+ return this;
+ }
+ protected willUpdate(changedProperties: PropertyValueMap | Map): void {
+ super.willUpdate(changedProperties);
+
+ this.key += 1;
+ }
+
+ render() {
+ return keyed(
+ this.key,
+ html` ev.stopPropagation()}
+ class="f-text-editor-root"
+ >
+ ${unsafeHTML(this.value)}
+
`
+ );
+ }
+
+ protected updated(changedProperties: PropertyValues): void {
+ super.updated(changedProperties);
+
+ if (this.editorRoot.value) {
+ this.quillInstance = new Quill(this.editorRoot.value, {
+ theme: "snow",
+ placeholder: this.placeholder,
+ readOnly: this.readOnly,
+ modules: {
+ toolbar: this.toolbar
+ }
+ });
+
+ this.quillInstance.on("editor-change", (eventName, ...args) => {
+ const event = new CustomEvent<{
+ value: string;
+ quillMeta: { eventName: string; args: unknown };
+ }>("input", {
+ detail: {
+ value: this.quillInstance?.root.innerHTML ?? "",
+ quillMeta: { eventName, args }
+ },
+ bubbles: true,
+ composed: true
+ });
+ this.dispatchEvent(event);
+ });
+ }
+ }
+}
+
+/**
+ * Required for typescript
+ */
+declare global {
+ export interface HTMLElementTagNameMap {
+ "f-text-editor": FTextEditor;
+ }
+}
diff --git a/packages/flow-text-editor/src/index.ts b/packages/flow-text-editor/src/index.ts
new file mode 100644
index 000000000..7e616dace
--- /dev/null
+++ b/packages/flow-text-editor/src/index.ts
@@ -0,0 +1 @@
+export * from "./components/f-text-editor/f-text-editor";
diff --git a/packages/flow-text-editor/tsconfig.json b/packages/flow-text-editor/tsconfig.json
new file mode 100644
index 000000000..9b4f19797
--- /dev/null
+++ b/packages/flow-text-editor/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "outDir": "./dist"
+ },
+ "include": ["src/**/*"]
+}
diff --git a/packages/flow-text-editor/vite.config.ts b/packages/flow-text-editor/vite.config.ts
new file mode 100644
index 000000000..7ed62465f
--- /dev/null
+++ b/packages/flow-text-editor/vite.config.ts
@@ -0,0 +1,27 @@
+import { defineConfig } from "vite";
+
+export default defineConfig({
+ build: {
+ // Disabling minification makes it easy to debug during development
+ // And all modern bundlers will consume the library and minify it anyway
+ minify: false,
+ sourcemap: true,
+ lib: {
+ entry: "src/index.ts",
+ name: "flow-text-editor",
+ fileName: format => `flow-text-editor.${format}.js`,
+ formats: ["es", "cjs"]
+ },
+ rollupOptions: {
+ // If we want to publish standalone components we don't externalize lit,
+ // if you are going to use lit in your own project, you can make it a dep instead.
+ // external: /^lit/, <-- comment this line
+ external: ["@ollion/flow-core-config", "@ollion/flow-core", /^lit/],
+ output: {
+ globals: {
+ "@ollion/flow-core": "@ollion/flow-core"
+ }
+ }
+ }
+ }
+});
diff --git a/packages/flow-text-editor/web-test-runner.config.mjs b/packages/flow-text-editor/web-test-runner.config.mjs
new file mode 100644
index 000000000..d410ad4ef
--- /dev/null
+++ b/packages/flow-text-editor/web-test-runner.config.mjs
@@ -0,0 +1,5 @@
+import { esbuildPlugin } from "@web/dev-server-esbuild";
+
+export default {
+ plugins: [esbuildPlugin({ ts: true })]
+};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 89cbd96ef..88cfc3e0a 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -10,7 +10,7 @@ importers:
dependencies:
'@ollion/flow-aws-icon':
specifier: latest
- version: 1.9.1(@ollion/flow-core-config@packages+flow-core-config)
+ version: 1.9.1(@ollion/flow-core-config@1.1.3)
'@ollion/flow-code-editor':
specifier: workspace:*
version: link:packages/flow-code-editor
@@ -25,7 +25,7 @@ importers:
version: link:packages/flow-form-builder
'@ollion/flow-gcp-icon':
specifier: latest
- version: 1.8.1(@ollion/flow-core-config@packages+flow-core-config)
+ version: 1.8.1(@ollion/flow-core-config@1.1.3)
'@ollion/flow-lineage':
specifier: workspace:*
version: link:packages/flow-lineage
@@ -37,13 +37,16 @@ importers:
version: link:packages/flow-md-editor
'@ollion/flow-product-icon':
specifier: 1.14.0
- version: 1.14.0(@ollion/flow-core-config@packages+flow-core-config)
+ version: 1.14.0(@ollion/flow-core-config@1.1.3)
'@ollion/flow-system-icon':
specifier: latest
- version: 1.16.1(@ollion/flow-core-config@packages+flow-core-config)
+ version: 1.16.1(@ollion/flow-core-config@1.1.3)
'@ollion/flow-table':
specifier: workspace:*
version: link:packages/flow-table
+ '@ollion/flow-text-editor':
+ specifier: workspace:*
+ version: link:packages/flow-text-editor
d3:
specifier: ^7.6.1
version: 7.8.5
@@ -74,7 +77,7 @@ importers:
version: 7.6.7
'@storybook/addon-essentials':
specifier: ^7.5.3
- version: 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ version: 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/addon-links':
specifier: ^7.5.3
version: 7.6.7(react@18.2.0)
@@ -86,13 +89,13 @@ importers:
version: 7.6.7
'@storybook/blocks':
specifier: ^7.5.3
- version: 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ version: 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/web-components':
specifier: ^7.5.3
- version: 7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)
+ version: 7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/web-components-vite':
specifier: ^7.5.3
- version: 7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1)
+ version: 7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7))
'@types/d3':
specifier: 7.4.3
version: 7.4.3
@@ -107,7 +110,7 @@ importers:
version: 3.0.0
'@typescript-eslint/eslint-plugin':
specifier: ^6.7.5
- version: 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3)
+ version: 6.18.1(@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)
'@typescript-eslint/parser':
specifier: ^6.7.5
version: 6.18.1(eslint@8.56.0)(typescript@5.3.3)
@@ -128,13 +131,13 @@ importers:
version: 8.0.3
lint-staged:
specifier: ^14.0.1
- version: 14.0.1
+ version: 14.0.1(enquirer@2.4.1)
lit-html:
specifier: ^3.1.0
version: 3.1.1
loki:
specifier: ^0.32.0
- version: 0.32.0
+ version: 0.32.0(@types/react@18.2.47)
prettier:
specifier: ^3.0.3
version: 3.0.3
@@ -155,7 +158,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
packages/custom-elements-manifest-to-types:
dependencies:
@@ -180,10 +183,10 @@ importers:
version: 0.19.11
jest:
specifier: ^29.7.0
- version: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2)
+ version: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
ts-jest:
specifier: ^29.1.1
- version: 29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3)
+ version: 29.1.1(@babel/core@7.23.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.7))(esbuild@0.19.11)(jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)))(typescript@5.3.3)
ts-node:
specifier: ^10.8.2
version: 10.9.2(@types/node@18.19.6)(typescript@5.3.3)
@@ -238,7 +241,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
web-component-analyzer:
specifier: ^2.0.0-next.4
version: 2.0.0
@@ -332,7 +335,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
vue:
specifier: 2.6.14
version: 2.6.14
@@ -351,7 +354,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
packages/flow-dashboard:
dependencies:
@@ -412,7 +415,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
web-component-analyzer:
specifier: ^2.0.0-next.4
version: 2.0.0
@@ -470,7 +473,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
web-component-analyzer:
specifier: ^2.0.0-next.4
version: 2.0.0
@@ -525,7 +528,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
vue:
specifier: 2.6.14
version: 2.6.14
@@ -586,7 +589,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
web-component-analyzer:
specifier: ^2.0.0-next.4
version: 2.0.0
@@ -641,7 +644,7 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
web-component-analyzer:
specifier: ^2.0.0-next.4
version: 2.0.0
@@ -690,7 +693,59 @@ importers:
version: 5.3.3
vite:
specifier: ^4.4.11
- version: 4.5.1(sass@1.69.7)
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
+ web-component-analyzer:
+ specifier: ^2.0.0-next.4
+ version: 2.0.0
+
+ packages/flow-text-editor:
+ dependencies:
+ '@ollion/flow-core':
+ specifier: workspace:*
+ version: link:../flow-core
+ '@ollion/flow-core-config':
+ specifier: workspace:*
+ version: link:../flow-core-config
+ lit:
+ specifier: ^3.1.0
+ version: 3.1.1
+ quill:
+ specifier: ^2.0.2
+ version: 2.0.2
+ devDependencies:
+ '@custom-elements-manifest/analyzer':
+ specifier: ^0.5.7
+ version: 0.5.7
+ '@open-wc/testing':
+ specifier: ^3.1.5
+ version: 3.2.2
+ '@types/jest':
+ specifier: 29.5.5
+ version: 29.5.5
+ '@web/dev-server-esbuild':
+ specifier: ^0.4.1
+ version: 0.4.4
+ '@web/test-runner':
+ specifier: ^0.17.1
+ version: 0.17.3(typescript@5.3.3)
+ concurrently:
+ specifier: ^8.2.1
+ version: 8.2.2
+ esbuild-sass-plugin:
+ specifier: 2.2.6
+ version: 2.2.6
+ lit-html:
+ specifier: ^3.1.0
+ version: 3.1.1
+ sass:
+ specifier: ^1.52.3
+ version: 1.69.7
+ typescript:
+ specifier: ^5.2.2
+ version: 5.3.3
+ vite:
+ specifier: ^4.4.11
+ version: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
web-component-analyzer:
specifier: ^2.0.0-next.4
version: 2.0.0
@@ -2125,6 +2180,9 @@ packages:
peerDependencies:
'@ollion/flow-core-config': '*'
+ '@ollion/flow-core-config@1.1.3':
+ resolution: {integrity: sha512-Im5UNwO+/KHkD+gAMvE1OicpLmTbof3qnxJj1vHSay+7MfzAbeuZH5YaTK7cChJ6ocBaR99vS4XGKrBs10/z6Q==}
+
'@ollion/flow-gcp-icon@1.8.1':
resolution: {integrity: sha512-JAdA6ffgyrQ4HDyXZRfcmsV7iZRKViY9JqHLU0C67ntOtnm7L62AVQywzPkjeSgZhIeyp5F0WVuWvAhKSyehHw==}
peerDependencies:
@@ -4710,6 +4768,9 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-diff@1.3.0:
+ resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
+
fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
@@ -5705,9 +5766,15 @@ packages:
lodash.camelcase@4.3.0:
resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
+ lodash.clonedeep@4.5.0:
+ resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
+
lodash.debounce@4.0.8:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
+ lodash.isequal@4.5.0:
+ resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==}
+
lodash.memoize@4.1.2:
resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==}
@@ -6256,6 +6323,9 @@ packages:
pako@0.2.9:
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
+ parchment@3.0.0:
+ resolution: {integrity: sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==}
+
parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -6503,6 +6573,14 @@ packages:
resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
engines: {node: '>=8'}
+ quill-delta@5.1.0:
+ resolution: {integrity: sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==}
+ engines: {node: '>= 12.0.0'}
+
+ quill@2.0.2:
+ resolution: {integrity: sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==}
+ engines: {npm: '>=8.2.3'}
+
raf@3.4.1:
resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==}
@@ -9048,7 +9126,7 @@ snapshots:
'@floating-ui/core': 1.5.3
'@floating-ui/utils': 0.2.1
- '@floating-ui/react-dom@2.0.5(react-dom@18.2.0)(react@18.2.0)':
+ '@floating-ui/react-dom@2.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@floating-ui/dom': 1.5.4
react: 18.2.0
@@ -9104,7 +9182,7 @@ snapshots:
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@29.7.0(ts-node@10.9.2)':
+ '@jest/core@29.7.0(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))':
dependencies:
'@jest/console': 29.7.0
'@jest/reporters': 29.7.0
@@ -9118,7 +9196,7 @@ snapshots:
exit: 0.1.2
graceful-fs: 4.2.11
jest-changed-files: 29.7.0
- jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2)
+ jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
jest-haste-map: 29.7.0
jest-message-util: 29.7.0
jest-regex-util: 29.6.3
@@ -9332,7 +9410,7 @@ snapshots:
dependencies:
'@loki/browser': 0.32.0
- '@loki/runner@0.32.0':
+ '@loki/runner@0.32.0(@types/react@18.2.47)':
dependencies:
'@loki/core': 0.32.0
'@loki/diff-graphics-magick': 0.32.0
@@ -9349,7 +9427,7 @@ snapshots:
cosmiconfig: 7.1.0
fs-extra: 9.1.0
import-jsx: 4.0.1
- ink: 3.2.0(react@17.0.2)
+ ink: 3.2.0(@types/react@18.2.47)(react@17.0.2)
minimist: 1.2.8
ramda: 0.27.2
react: 17.0.2
@@ -9480,21 +9558,25 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.16.0
- '@ollion/flow-aws-icon@1.9.1(@ollion/flow-core-config@packages+flow-core-config)':
+ '@ollion/flow-aws-icon@1.9.1(@ollion/flow-core-config@1.1.3)':
+ dependencies:
+ '@ollion/flow-core-config': 1.1.3
+
+ '@ollion/flow-core-config@1.1.3':
dependencies:
- '@ollion/flow-core-config': link:packages/flow-core-config
+ rxjs: 7.8.1
- '@ollion/flow-gcp-icon@1.8.1(@ollion/flow-core-config@packages+flow-core-config)':
+ '@ollion/flow-gcp-icon@1.8.1(@ollion/flow-core-config@1.1.3)':
dependencies:
- '@ollion/flow-core-config': link:packages/flow-core-config
+ '@ollion/flow-core-config': 1.1.3
- '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@packages+flow-core-config)':
+ '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@1.1.3)':
dependencies:
- '@ollion/flow-core-config': link:packages/flow-core-config
+ '@ollion/flow-core-config': 1.1.3
- '@ollion/flow-system-icon@1.16.1(@ollion/flow-core-config@packages+flow-core-config)':
+ '@ollion/flow-system-icon@1.16.1(@ollion/flow-core-config@1.1.3)':
dependencies:
- '@ollion/flow-core-config': link:packages/flow-core-config
+ '@ollion/flow-core-config': 1.1.3
'@ollion/prettier-config@2.1.0(prettier@3.0.3)':
dependencies:
@@ -9545,9 +9627,10 @@ snapshots:
progress: 2.0.3
proxy-agent: 6.3.0
tar-fs: 3.0.4
- typescript: 5.3.3
unbzip2-stream: 1.4.3
yargs: 17.7.1
+ optionalDependencies:
+ typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -9559,234 +9642,288 @@ snapshots:
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-arrow@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-arrow@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-collection@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-collection@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-compose-refs@1.0.1(react@18.2.0)':
+ '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-context@1.0.1(react@18.2.0)':
+ '@radix-ui/react-context@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-direction@1.0.1(react@18.2.0)':
+ '@radix-ui/react-direction@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-dismissable-layer@1.0.4(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-dismissable-layer@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-escape-keydown': 1.0.3(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-focus-guards@1.0.1(react@18.2.0)':
+ '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-focus-scope@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-focus-scope@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-id@1.0.1(react@18.2.0)':
+ '@radix-ui/react-id@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-popper@1.1.2(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-popper@1.1.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@floating-ui/react-dom': 2.0.5(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-arrow': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-rect': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-size': 1.0.1(react@18.2.0)
+ '@floating-ui/react-dom': 2.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-arrow': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.47)(react@18.2.0)
'@radix-ui/rect': 1.0.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-portal@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-portal@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-primitive@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-primitive@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-slot': 1.0.2(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-roving-focus@1.0.4(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-roving-focus@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0)
+ '@radix-ui/react-collection': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-select@1.2.2(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-select@1.2.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
'@radix-ui/number': 1.0.1
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-collection': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0)
- '@radix-ui/react-context': 1.0.1(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(react@18.2.0)
- '@radix-ui/react-dismissable-layer': 1.0.4(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-focus-guards': 1.0.1(react@18.2.0)
- '@radix-ui/react-focus-scope': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-id': 1.0.1(react@18.2.0)
- '@radix-ui/react-popper': 1.1.2(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-portal': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-slot': 1.0.2(react@18.2.0)
- '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0)
- '@radix-ui/react-use-previous': 1.0.1(react@18.2.0)
- '@radix-ui/react-visually-hidden': 1.0.3(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-collection': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-dismissable-layer': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-focus-scope': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-popper': 1.1.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-portal': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
aria-hidden: 1.2.3
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- react-remove-scroll: 2.5.5(react@18.2.0)
+ react-remove-scroll: 2.5.5(@types/react@18.2.47)(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-separator@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-separator@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-slot@1.0.2(react@18.2.0)':
+ '@radix-ui/react-slot@1.0.2(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-toggle-group@1.0.4(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-toggle-group@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-context': 1.0.1(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-roving-focus': 1.0.4(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-toggle': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-toggle': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-toggle@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-toggle@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-toolbar@1.0.4(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-toolbar@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
'@radix-ui/primitive': 1.0.1
- '@radix-ui/react-context': 1.0.1(react@18.2.0)
- '@radix-ui/react-direction': 1.0.1(react@18.2.0)
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-roving-focus': 1.0.4(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-separator': 1.0.3(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-toggle-group': 1.0.4(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-separator': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-toggle-group': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-use-callback-ref@1.0.1(react@18.2.0)':
+ '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-use-controllable-state@1.0.1(react@18.2.0)':
+ '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-use-escape-keydown@1.0.3(react@18.2.0)':
+ '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-use-layout-effect@1.0.1(react@18.2.0)':
+ '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-use-previous@1.0.1(react@18.2.0)':
+ '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-use-rect@1.0.1(react@18.2.0)':
+ '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
'@radix-ui/rect': 1.0.1
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-use-size@1.0.1(react@18.2.0)':
+ '@radix-ui/react-use-size@1.0.1(@types/react@18.2.47)(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0)
react: 18.2.0
+ optionalDependencies:
+ '@types/react': 18.2.47
- '@radix-ui/react-visually-hidden@1.0.3(react-dom@18.2.0)(react@18.2.0)':
+ '@radix-ui/react-visually-hidden@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@babel/runtime': 7.23.8
- '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
'@radix-ui/rect@1.0.1':
dependencies:
@@ -9810,6 +9947,7 @@ snapshots:
is-builtin-module: 3.2.1
is-module: 1.0.0
resolve: 1.22.8
+ optionalDependencies:
rollup: 3.29.4
'@rollup/pluginutils@3.1.0(rollup@2.79.1)':
@@ -9824,6 +9962,7 @@ snapshots:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
+ optionalDependencies:
rollup: 3.29.4
'@sideway/address@4.1.4':
@@ -9864,9 +10003,9 @@ snapshots:
memoizerific: 1.11.3
ts-dedent: 2.2.0
- '@storybook/addon-controls@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/addon-controls@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
- '@storybook/blocks': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/blocks': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
lodash: 4.17.21
ts-dedent: 2.2.0
transitivePeerDependencies:
@@ -9877,13 +10016,13 @@ snapshots:
- react-dom
- supports-color
- '@storybook/addon-docs@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/addon-docs@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@jest/transform': 29.7.0
'@mdx-js/react': 2.3.0(react@18.2.0)
- '@storybook/blocks': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/blocks': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/client-logger': 7.6.7
- '@storybook/components': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/components': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/csf-plugin': 7.6.7
'@storybook/csf-tools': 7.6.7
'@storybook/global': 5.0.0
@@ -9891,8 +10030,8 @@ snapshots:
'@storybook/node-logger': 7.6.7
'@storybook/postinstall': 7.6.7
'@storybook/preview-api': 7.6.7
- '@storybook/react-dom-shim': 7.6.7(react-dom@18.2.0)(react@18.2.0)
- '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/react-dom-shim': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/types': 7.6.7
fs-extra: 11.2.0
react: 18.2.0
@@ -9906,19 +10045,19 @@ snapshots:
- encoding
- supports-color
- '@storybook/addon-essentials@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/addon-essentials@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@storybook/addon-actions': 7.6.7
'@storybook/addon-backgrounds': 7.6.7
- '@storybook/addon-controls': 7.6.7(react-dom@18.2.0)(react@18.2.0)
- '@storybook/addon-docs': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/addon-controls': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@storybook/addon-docs': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/addon-highlight': 7.6.7
'@storybook/addon-measure': 7.6.7
'@storybook/addon-outline': 7.6.7
'@storybook/addon-toolbars': 7.6.7
'@storybook/addon-viewport': 7.6.7
'@storybook/core-common': 7.6.7
- '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/manager-api': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/node-logger': 7.6.7
'@storybook/preview-api': 7.6.7
react: 18.2.0
@@ -9942,8 +10081,9 @@ snapshots:
dependencies:
'@storybook/csf': 0.1.2
'@storybook/global': 5.0.0
- react: 18.2.0
ts-dedent: 2.2.0
+ optionalDependencies:
+ react: 18.2.0
'@storybook/addon-mdx-gfm@7.6.7':
dependencies:
@@ -9975,18 +10115,18 @@ snapshots:
dependencies:
memoizerific: 1.11.3
- '@storybook/blocks@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/blocks@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@storybook/channels': 7.6.7
'@storybook/client-logger': 7.6.7
- '@storybook/components': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/components': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/core-events': 7.6.7
'@storybook/csf': 0.1.2
'@storybook/docs-tools': 7.6.7
'@storybook/global': 5.0.0
- '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/manager-api': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/preview-api': 7.6.7
- '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/types': 7.6.7
'@types/lodash': 4.14.202
color-convert: 2.0.1
@@ -9996,7 +10136,7 @@ snapshots:
memoizerific: 1.11.3
polished: 4.2.2
react: 18.2.0
- react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0)
+ react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
react-dom: 18.2.0(react@18.2.0)
telejson: 7.2.0
tocbot: 4.25.0
@@ -10030,7 +10170,7 @@ snapshots:
- encoding
- supports-color
- '@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1)':
+ '@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7))':
dependencies:
'@storybook/channels': 7.6.7
'@storybook/client-logger': 7.6.7
@@ -10048,8 +10188,9 @@ snapshots:
fs-extra: 11.2.0
magic-string: 0.30.5
rollup: 3.29.4
+ vite: 4.5.1(@types/node@18.19.6)(sass@1.69.7)
+ optionalDependencies:
typescript: 5.3.3
- vite: 4.5.1(sass@1.69.7)
transitivePeerDependencies:
- encoding
- supports-color
@@ -10093,7 +10234,7 @@ snapshots:
get-port: 5.1.1
giget: 1.2.1
globby: 11.1.0
- jscodeshift: 0.15.1(@babel/preset-env@7.23.8)
+ jscodeshift: 0.15.1(@babel/preset-env@7.23.8(@babel/core@7.23.7))
leven: 3.1.0
ora: 5.4.1
prettier: 2.8.8
@@ -10128,26 +10269,26 @@ snapshots:
'@types/cross-spawn': 6.0.6
cross-spawn: 7.0.3
globby: 11.1.0
- jscodeshift: 0.15.1(@babel/preset-env@7.23.8)
+ jscodeshift: 0.15.1(@babel/preset-env@7.23.8(@babel/core@7.23.7))
lodash: 4.17.21
prettier: 2.8.8
recast: 0.23.4
transitivePeerDependencies:
- supports-color
- '@storybook/components@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/components@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
- '@radix-ui/react-select': 1.2.2(react-dom@18.2.0)(react@18.2.0)
- '@radix-ui/react-toolbar': 1.0.4(react-dom@18.2.0)(react@18.2.0)
+ '@radix-ui/react-select': 1.2.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
+ '@radix-ui/react-toolbar': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/client-logger': 7.6.7
'@storybook/csf': 0.1.2
'@storybook/global': 5.0.0
- '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/types': 7.6.7
memoizerific: 1.11.3
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0)
+ use-resize-observer: 9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
util-deprecate: 1.0.2
transitivePeerDependencies:
- '@types/react'
@@ -10286,7 +10427,7 @@ snapshots:
'@storybook/global@5.0.0': {}
- '@storybook/manager-api@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/manager-api@7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@storybook/channels': 7.6.7
'@storybook/client-logger': 7.6.7
@@ -10294,7 +10435,7 @@ snapshots:
'@storybook/csf': 0.1.2
'@storybook/global': 5.0.0
'@storybook/router': 7.6.7
- '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/types': 7.6.7
dequal: 2.0.3
lodash: 4.17.21
@@ -10333,7 +10474,7 @@ snapshots:
'@storybook/preview@7.6.7': {}
- '@storybook/react-dom-shim@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/react-dom-shim@7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@@ -10366,7 +10507,7 @@ snapshots:
- encoding
- supports-color
- '@storybook/theming@7.6.7(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/theming@7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0)
'@storybook/client-logger': 7.6.7
@@ -10382,12 +10523,12 @@ snapshots:
'@types/express': 4.17.21
file-system-cache: 2.3.0
- '@storybook/web-components-vite@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1)':
+ '@storybook/web-components-vite@7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7))':
dependencies:
- '@storybook/builder-vite': 7.6.7(typescript@5.3.3)(vite@4.5.1)
+ '@storybook/builder-vite': 7.6.7(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7))
'@storybook/core-server': 7.6.7
'@storybook/node-logger': 7.6.7
- '@storybook/web-components': 7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/web-components': 7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
magic-string: 0.30.5
transitivePeerDependencies:
- '@preact/preset-vite'
@@ -10402,13 +10543,13 @@ snapshots:
- vite
- vite-plugin-glimmerx
- '@storybook/web-components@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)':
+ '@storybook/web-components@7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)':
dependencies:
'@storybook/client-logger': 7.6.7
'@storybook/core-client': 7.6.7
'@storybook/docs-tools': 7.6.7
'@storybook/global': 5.0.0
- '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0)
+ '@storybook/manager-api': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)
'@storybook/preview-api': 7.6.7
'@storybook/types': 7.6.7
lit: 3.1.1
@@ -10825,7 +10966,7 @@ snapshots:
'@types/yoga-layout@1.9.2': {}
- '@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3)':
+ '@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)':
dependencies:
'@eslint-community/regexpp': 4.10.0
'@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3)
@@ -10840,6 +10981,7 @@ snapshots:
natural-compare: 1.4.0
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -10852,6 +10994,7 @@ snapshots:
'@typescript-eslint/visitor-keys': 6.18.1
debug: 4.3.4
eslint: 8.56.0
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -10873,6 +11016,7 @@ snapshots:
debug: 4.3.4
eslint: 8.56.0
ts-api-utils: 1.0.3(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -10890,6 +11034,7 @@ snapshots:
is-glob: 4.0.3
semver: 7.5.4
tsutils: 3.21.0(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -10904,6 +11049,7 @@ snapshots:
minimatch: 9.0.3
semver: 7.5.4
ts-api-utils: 1.0.3(typescript@5.3.3)
+ optionalDependencies:
typescript: 5.3.3
transitivePeerDependencies:
- supports-color
@@ -12140,13 +12286,13 @@ snapshots:
path-type: 4.0.0
yaml: 1.10.2
- create-jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2):
+ create-jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2)
+ jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -13020,6 +13166,8 @@ snapshots:
fast-deep-equal@3.1.3: {}
+ fast-diff@1.3.0: {}
+
fast-fifo@1.3.2: {}
fast-glob@3.3.2:
@@ -13129,7 +13277,7 @@ snapshots:
flow-parser@0.226.0: {}
follow-redirects@1.15.4(debug@4.3.4):
- dependencies:
+ optionalDependencies:
debug: 4.3.4
for-each@0.3.3:
@@ -13507,7 +13655,7 @@ snapshots:
inherits@2.0.4: {}
- ink@3.2.0(react@17.0.2):
+ ink@3.2.0(@types/react@18.2.47)(react@17.0.2):
dependencies:
ansi-escapes: 4.3.2
auto-bind: 4.0.0
@@ -13533,6 +13681,8 @@ snapshots:
wrap-ansi: 6.2.0
ws: 7.5.9
yoga-layout-prebuilt: 1.10.0
+ optionalDependencies:
+ '@types/react': 18.2.47
transitivePeerDependencies:
- bufferutil
- utf-8-validate
@@ -13793,16 +13943,16 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@29.7.0(@types/node@18.19.6)(ts-node@10.9.2):
+ jest-cli@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2)
+ '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2)
+ create-jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
exit: 0.1.2
import-local: 3.1.0
- jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2)
+ jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -13812,12 +13962,11 @@ snapshots:
- supports-color
- ts-node
- jest-config@29.7.0(@types/node@18.19.6)(ts-node@10.9.2):
+ jest-config@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)):
dependencies:
'@babel/core': 7.23.7
'@jest/test-sequencer': 29.7.0
'@jest/types': 29.6.3
- '@types/node': 18.19.6
babel-jest: 29.7.0(@babel/core@7.23.7)
chalk: 4.1.2
ci-info: 3.9.0
@@ -13837,6 +13986,8 @@ snapshots:
pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
+ optionalDependencies:
+ '@types/node': 18.19.6
ts-node: 10.9.2(@types/node@18.19.6)(typescript@5.3.3)
transitivePeerDependencies:
- babel-plugin-macros
@@ -13919,7 +14070,7 @@ snapshots:
jest-util: 29.7.0
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
- dependencies:
+ optionalDependencies:
jest-resolve: 29.7.0
jest-regex-util@29.6.3: {}
@@ -14057,12 +14208,12 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2):
+ jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)):
dependencies:
- '@jest/core': 29.7.0(ts-node@10.9.2)
+ '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
'@jest/types': 29.6.3
import-local: 3.1.0
- jest-cli: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2)
+ jest-cli: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -14090,7 +14241,7 @@ snapshots:
dependencies:
argparse: 2.0.1
- jscodeshift@0.15.1(@babel/preset-env@7.23.8):
+ jscodeshift@0.15.1(@babel/preset-env@7.23.8(@babel/core@7.23.7)):
dependencies:
'@babel/core': 7.23.7
'@babel/parser': 7.23.6
@@ -14099,7 +14250,6 @@ snapshots:
'@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.7)
'@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7)
'@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7)
- '@babel/preset-env': 7.23.8(@babel/core@7.23.7)
'@babel/preset-flow': 7.23.3(@babel/core@7.23.7)
'@babel/preset-typescript': 7.23.3(@babel/core@7.23.7)
'@babel/register': 7.23.7(@babel/core@7.23.7)
@@ -14113,6 +14263,8 @@ snapshots:
recast: 0.23.4
temp: 0.8.4
write-file-atomic: 2.4.3
+ optionalDependencies:
+ '@babel/preset-env': 7.23.8(@babel/core@7.23.7)
transitivePeerDependencies:
- supports-color
@@ -14244,14 +14396,14 @@ snapshots:
lines-and-columns@1.2.4: {}
- lint-staged@14.0.1:
+ lint-staged@14.0.1(enquirer@2.4.1):
dependencies:
chalk: 5.3.0
commander: 11.0.0
debug: 4.3.4
execa: 7.2.0
lilconfig: 2.1.0
- listr2: 6.6.1
+ listr2: 6.6.1(enquirer@2.4.1)
micromatch: 4.0.5
pidtree: 0.6.0
string-argv: 0.3.2
@@ -14260,7 +14412,7 @@ snapshots:
- enquirer
- supports-color
- listr2@6.6.1:
+ listr2@6.6.1(enquirer@2.4.1):
dependencies:
cli-truncate: 3.1.0
colorette: 2.0.20
@@ -14268,6 +14420,8 @@ snapshots:
log-update: 5.0.1
rfdc: 1.3.0
wrap-ansi: 8.1.0
+ optionalDependencies:
+ enquirer: 2.4.1
lit-element@4.0.3:
dependencies:
@@ -14311,8 +14465,12 @@ snapshots:
lodash.camelcase@4.3.0: {}
+ lodash.clonedeep@4.5.0: {}
+
lodash.debounce@4.0.8: {}
+ lodash.isequal@4.5.0: {}
+
lodash.memoize@4.1.2: {}
lodash.merge@4.6.2: {}
@@ -14341,12 +14499,12 @@ snapshots:
strip-ansi: 7.1.0
wrap-ansi: 8.1.0
- loki@0.32.0:
+ loki@0.32.0(@types/react@18.2.47):
dependencies:
'@loki/integration-react': 0.32.0
'@loki/integration-react-native': 0.32.0
'@loki/integration-vue': 0.32.0
- '@loki/runner': 0.32.0
+ '@loki/runner': 0.32.0(@types/react@18.2.47)
'@loki/target-chrome-app': 0.32.0
'@loki/target-chrome-docker': 0.32.0
'@loki/target-native-android-emulator': 0.32.0
@@ -14999,6 +15157,8 @@ snapshots:
pako@0.2.9: {}
+ parchment@3.0.0: {}
+
parent-module@1.0.1:
dependencies:
callsites: 3.1.0
@@ -15224,8 +15384,9 @@ snapshots:
cross-fetch: 4.0.0
debug: 4.3.4
devtools-protocol: 0.0.1147663
- typescript: 5.3.3
ws: 8.13.0
+ optionalDependencies:
+ typescript: 5.3.3
transitivePeerDependencies:
- bufferutil
- encoding
@@ -15250,6 +15411,19 @@ snapshots:
quick-lru@4.0.1: {}
+ quill-delta@5.1.0:
+ dependencies:
+ fast-diff: 1.3.0
+ lodash.clonedeep: 4.5.0
+ lodash.isequal: 4.5.0
+
+ quill@2.0.2:
+ dependencies:
+ eventemitter3: 5.0.1
+ lodash-es: 4.17.21
+ parchment: 3.0.0
+ quill-delta: 5.1.0
+
raf@3.4.1:
dependencies:
performance-now: 2.1.0
@@ -15275,7 +15449,7 @@ snapshots:
iconv-lite: 0.4.24
unpipe: 1.0.0
- react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0):
+ react-colorful@5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
dependencies:
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
@@ -15303,27 +15477,33 @@ snapshots:
react: 17.0.2
scheduler: 0.20.2
- react-remove-scroll-bar@2.3.4(react@18.2.0):
+ react-remove-scroll-bar@2.3.4(@types/react@18.2.47)(react@18.2.0):
dependencies:
react: 18.2.0
- react-style-singleton: 2.2.1(react@18.2.0)
+ react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.2.0)
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.2.47
- react-remove-scroll@2.5.5(react@18.2.0):
+ react-remove-scroll@2.5.5(@types/react@18.2.47)(react@18.2.0):
dependencies:
react: 18.2.0
- react-remove-scroll-bar: 2.3.4(react@18.2.0)
- react-style-singleton: 2.2.1(react@18.2.0)
+ react-remove-scroll-bar: 2.3.4(@types/react@18.2.47)(react@18.2.0)
+ react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.2.0)
tslib: 2.6.2
- use-callback-ref: 1.3.1(react@18.2.0)
- use-sidecar: 1.1.2(react@18.2.0)
+ use-callback-ref: 1.3.1(@types/react@18.2.47)(react@18.2.0)
+ use-sidecar: 1.1.2(@types/react@18.2.47)(react@18.2.0)
+ optionalDependencies:
+ '@types/react': 18.2.47
- react-style-singleton@2.2.1(react@18.2.0):
+ react-style-singleton@2.2.1(@types/react@18.2.47)(react@18.2.0):
dependencies:
get-nonce: 1.0.1
invariant: 2.2.4
react: 18.2.0
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.2.47
react@17.0.2:
dependencies:
@@ -16013,13 +16193,11 @@ snapshots:
ts-dedent@2.2.0: {}
- ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3):
+ ts-jest@29.1.1(@babel/core@7.23.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.7))(esbuild@0.19.11)(jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)))(typescript@5.3.3):
dependencies:
- '@babel/core': 7.23.7
bs-logger: 0.2.6
- esbuild: 0.19.11
fast-json-stable-stringify: 2.1.0
- jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2)
+ jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))
jest-util: 29.7.0
json5: 2.2.3
lodash.memoize: 4.1.2
@@ -16027,6 +16205,11 @@ snapshots:
semver: 7.5.4
typescript: 5.3.3
yargs-parser: 21.1.1
+ optionalDependencies:
+ '@babel/core': 7.23.7
+ '@jest/types': 29.6.3
+ babel-jest: 29.7.0(@babel/core@7.23.7)
+ esbuild: 0.19.11
ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3):
dependencies:
@@ -16247,22 +16430,26 @@ snapshots:
punycode: 1.3.2
querystring: 0.2.0
- use-callback-ref@1.3.1(react@18.2.0):
+ use-callback-ref@1.3.1(@types/react@18.2.47)(react@18.2.0):
dependencies:
react: 18.2.0
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.2.47
- use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0):
+ use-resize-observer@9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0):
dependencies:
'@juggle/resize-observer': 3.4.0
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
- use-sidecar@1.1.2(react@18.2.0):
+ use-sidecar@1.1.2(@types/react@18.2.47)(react@18.2.0):
dependencies:
detect-node-es: 1.1.0
react: 18.2.0
tslib: 2.6.2
+ optionalDependencies:
+ '@types/react': 18.2.47
util-deprecate@1.0.2: {}
@@ -16331,14 +16518,15 @@ snapshots:
unist-util-stringify-position: 3.0.3
vfile-message: 3.1.4
- vite@4.5.1(sass@1.69.7):
+ vite@4.5.1(@types/node@18.19.6)(sass@1.69.7):
dependencies:
esbuild: 0.18.20
postcss: 8.4.33
rollup: 3.29.4
- sass: 1.69.7
optionalDependencies:
+ '@types/node': 18.19.6
fsevents: 2.3.3
+ sass: 1.69.7
vue@2.6.14: {}
diff --git a/stories/flow-core/f-button.stories.js b/stories/flow-core/f-button.stories.ts
similarity index 68%
rename from stories/flow-core/f-button.stories.js
rename to stories/flow-core/f-button.stories.ts
index 095a1270d..1f8cb1f3b 100644
--- a/stories/flow-core/f-button.stories.js
+++ b/stories/flow-core/f-button.stories.ts
@@ -2,6 +2,7 @@ import { html } from "lit-html";
import fButtonAnatomy from "../svg/i-fbutton-anatomy.js";
import { unsafeSVG } from "lit-html/directives/unsafe-svg.js";
import { createRef, ref } from "lit/directives/ref.js";
+import type { FButton } from "@ollion/flow-core";
export default {
title: "@ollion/flow-core/f-button",
@@ -14,10 +15,10 @@ export default {
};
export const Playground = {
- render: args => {
- const fieldRef = createRef();
+ render: (args: Record) => {
+ const fieldRef = createRef();
- const handleClick = event => {
+ const handleClick = (event: Event) => {
console.log(event);
};
@@ -27,6 +28,12 @@ export const Playground = {
}
}, 2000);
+ const handleAction = (event: CustomEvent) => {
+ if (fieldRef.value) {
+ fieldRef.value.label = event.detail.action;
+ }
+ };
+
return html`
`;
},
@@ -99,7 +109,12 @@ export const Playground = {
counter: {
control: "text"
},
-
+ actions: {
+ control: "object"
+ },
+ ["selected-action"]: {
+ control: "text"
+ },
loading: {
control: "boolean"
},
@@ -122,6 +137,8 @@ export const Playground = {
["icon-left"]: undefined,
["icon-right"]: undefined,
counter: undefined,
+ actions: ["Merge", "Squash and merge", "Rebase and merge"],
+ ["selected-action"]: "Merge",
loading: false,
disabled: false,
["label-wrap"]: false
@@ -134,7 +151,7 @@ export const Anatomy = {
};
export const Variant = {
- render: args =>
+ render: () =>
html`
@@ -145,7 +162,7 @@ export const Variant = {
};
export const Category = {
- render: args =>
+ render: () =>
html`
@@ -157,7 +174,7 @@ export const Category = {
};
export const Size = {
- render: args =>
+ render: () =>
html`
@@ -169,7 +186,7 @@ export const Size = {
};
export const State = {
- render: args =>
+ render: () =>
html`
@@ -212,7 +229,7 @@ export const State = {
};
export const Label = {
- render: args =>
+ render: () =>
html`
`,
@@ -221,7 +238,7 @@ export const Label = {
};
export const IconLeft = {
- render: args =>
+ render: () =>
html`
`,
@@ -230,7 +247,7 @@ export const IconLeft = {
};
export const IconRight = {
- render: args =>
+ render: () =>
html`
@@ -240,7 +257,7 @@ export const IconRight = {
};
export const Counter = {
- render: args =>
+ render: () =>
html`
@@ -250,30 +267,119 @@ export const Counter = {
name: "counter"
};
+export const Actions = {
+ render: () => {
+ const actions = ["Merge", "Squash and merge", "Rebase and merge"];
+
+ const mergeTemplate = () =>
+ html`
+
+
+ Merge
+
+
+ In hac habitasse platea dictumst. Nunc gravida lacus in nulla euismod, eget varius enim
+ mattis.
+
+ `;
+ const sqAndMergeTemplate = () =>
+ html`
+
+
+ Squash and merge
+
+
+ In hac habitasse platea dictumst. Nunc gravida lacus in nulla euismod, eget varius enim
+ mattis.
+
+ `;
+ const rbAndMergeTemplate = () =>
+ html`
+
+
+ Rebase and merge
+
+
+ In hac habitasse platea dictumst. Nunc gravida lacus in nulla euismod, eget varius enim
+ mattis.
+
+ `;
+ const templateActions = [mergeTemplate, sqAndMergeTemplate, rbAndMergeTemplate];
+ return html`
+
+
+ `;
+ },
+ name: "actions"
+};
+
+export const SelectedAction = {
+ render: () => {
+ const actions = ["Merge", "Squash and merge", "Rebase and merge"];
+
+ return html`
+
+ `;
+ },
+ name: "selected-action"
+};
+
+export const Action = {
+ render: () => {
+ const actions = ["Merge", "Squash and merge", "Rebase and merge"];
+ const fieldRef = createRef();
+ const handleAction = (event: CustomEvent) => {
+ if (fieldRef.value) {
+ fieldRef.value.label = event.detail.action;
+ }
+ };
+ return html`
+ 'action' event emitted when action is selected, In following example we are updating label
+ when action is selected.
+
+ `;
+ },
+ name: "@action"
+};
+
export const Flags = {
- render: args =>
+ render: () =>
html`
Loading
-
+
-
+
-
+
Disabled
-
+
{
- const handleInput = function (ev) {
- console.log(ev);
- };
-
- return html`
-
- `;
- },
-
- name: "Playground",
-
- argTypes: {
- value: {
- control: "text"
- },
-
- mode: {
- control: "radio",
- options: ["edit", "view"]
- }
- },
-
- args: {
- value: sampleMd,
- mode: "view"
- }
-};
diff --git a/stories/flow-md-editor/f-md-editor.stories.ts b/stories/flow-md-editor/f-md-editor.stories.ts
new file mode 100644
index 000000000..652cba338
--- /dev/null
+++ b/stories/flow-md-editor/f-md-editor.stories.ts
@@ -0,0 +1,116 @@
+import { html } from "lit-html";
+import sampleMd from "./sample-md";
+import { createRef, ref } from "lit-html/directives/ref.js";
+import { FMDEditor } from "@ollion/flow-md-editor";
+
+export default {
+ title: "@ollion/flow-md-editor/f-md-editor",
+
+ parameters: {
+ controls: {
+ hideNoControlsWarning: true
+ }
+ }
+};
+
+export const Playground = {
+ render: (args: Record) => {
+ const mdRef = createRef();
+ const handleInput = function (ev: CustomEvent) {
+ console.log(ev.detail.value);
+ };
+
+ return html`
+
+ `;
+ },
+
+ name: "Playground",
+
+ argTypes: {
+ value: {
+ control: "text"
+ },
+
+ mode: {
+ control: "radio",
+ options: ["edit", "view"]
+ }
+ },
+
+ args: {
+ value: sampleMd,
+ mode: "view"
+ }
+};
+
+export const Value = {
+ render: () => {
+ return html`
+ 'value' will display inside editor
+
+ `;
+ },
+
+ name: "value"
+};
+
+export const Mode = {
+ render: () => {
+ const editValue = `## This is edit mode`;
+ const viewValue = `## This is view mode`;
+ return html`
+
+
+
+ `;
+ },
+
+ name: "mode"
+};
+
+export const InputEvent = {
+ render: () => {
+ const preRef = createRef();
+ const handleInput = (ev: CustomEvent) => {
+ if (preRef.value) {
+ preRef.value.textContent = JSON.stringify(ev.detail, null, 4);
+ }
+ };
+ return html`
+
+
+
+ It will emit 'input' event whenver there are any modification in editor
+
+
+
+
+
+
+
+ 'event.detail' will display here
+
+
+
+ `;
+ },
+
+ name: "@input"
+};
diff --git a/stories/flow-text-editor/About.mdx b/stories/flow-text-editor/About.mdx
new file mode 100644
index 000000000..56c31f12b
--- /dev/null
+++ b/stories/flow-text-editor/About.mdx
@@ -0,0 +1,6 @@
+import { Meta } from "@storybook/addon-docs/blocks";
+import README from "./../../packages/flow-text-editor/README.md?raw";
+
+
+
+
diff --git a/stories/flow-text-editor/f-text-editor.mdx b/stories/flow-text-editor/f-text-editor.mdx
new file mode 100644
index 000000000..bd595f2fb
--- /dev/null
+++ b/stories/flow-text-editor/f-text-editor.mdx
@@ -0,0 +1,30 @@
+import { Meta, Story, Canvas, ArgsTable } from "@storybook/blocks";
+import { html } from "lit-html";
+import fDividerAnatomy from "../svg/i-fdivider-anatomy.js";
+import { unsafeSVG } from "lit-html/directives/unsafe-svg.js";
+
+import * as FTextEditorStories from "./f-text-editor.stories";
+
+
+
+# f-text-editor
+
+
+
+
+
+## Overview
+
+
+
+f-text-editor used to edit and view rich text content.
+
+
+
+### [Playground](/story/ollion-flow-text-editor-components-f-text-editor--playground)
+
+
+
+
diff --git a/stories/flow-text-editor/f-text-editor.stories.ts b/stories/flow-text-editor/f-text-editor.stories.ts
new file mode 100644
index 000000000..f823d443d
--- /dev/null
+++ b/stories/flow-text-editor/f-text-editor.stories.ts
@@ -0,0 +1,150 @@
+import { html } from "lit-html";
+import { createRef, ref } from "lit-html/directives/ref.js";
+
+export default {
+ title: "@ollion/flow-text-editor/f-text-editor",
+
+ parameters: {
+ controls: {
+ hideNoControlsWarning: true
+ }
+ }
+};
+
+export const Playground = {
+ render: (args: Record) => {
+ const handleInput = function (ev: CustomEvent) {
+ console.log(ev);
+ };
+
+ return html`
+
+ `;
+ },
+
+ name: "Playground",
+
+ argTypes: {
+ value: {
+ control: "text"
+ },
+ placeholder: {
+ control: "text"
+ }
+ },
+
+ args: {
+ value: `Hello World!
`,
+ placeholder: `Enter rich text here...`
+ }
+};
+
+export const Value = {
+ render: () => {
+ return html`
+ 'value' will display inside editor
+ This is value"}>
+ `;
+ },
+
+ name: "value"
+};
+
+export const Placeholder = {
+ render: () => {
+ return html`
+ 'placeholder' will display whenever there is no content
+
+ `;
+ },
+
+ name: "placeholder"
+};
+
+export const ReadOnly = {
+ render: () => {
+ return html`
+ If 'read-only' is set then you can't edit
+ You can't edit this value"}
+ >
+ `;
+ },
+
+ name: "read-only"
+};
+
+export const ToolBar = {
+ render: () => {
+ const toolbarOptions = [
+ ["bold", "italic", "underline", "strike"], // toggled buttons
+ ["blockquote", "code-block"],
+ ["link", "image", "video", "formula"],
+
+ [{ header: 1 }, { header: 2 }], // custom button values
+ [{ list: "ordered" }, { list: "bullet" }, { list: "check" }],
+ [{ script: "sub" }, { script: "super" }], // superscript/subscript
+ [{ indent: "-1" }, { indent: "+1" }], // outdent/indent
+ [{ direction: "rtl" }], // text direction
+
+ [{ size: ["small", false, "large", "huge"] }], // custom dropdown
+ [{ header: [1, 2, 3, 4, 5, 6, false] }],
+
+ [{ color: [] }, { background: [] }], // dropdown with defaults from theme
+ [{ font: [] }],
+ [{ align: [] }],
+
+ ["clean"] // remove formatting button
+ ];
+ return html`
+
+ 'toolbar' is used customize toolbar actions
+
+
+ ${JSON.stringify(toolbarOptions, null, 4)}`}
+ >
+
+ `;
+ },
+
+ name: "tooltbar"
+};
+
+export const InputEvent = {
+ render: () => {
+ const preRef = createRef();
+ const handleInput = (ev: CustomEvent) => {
+ if (preRef.value) {
+ preRef.value.textContent = JSON.stringify(ev.detail, null, 4);
+ }
+ };
+ return html`
+
+
+
+ It will emit 'input' event whenver there are any modification in editor
+
+
+ This is value`}>
+
+
+
+
+ 'event.detail' will display here
+
+
+
+ `;
+ },
+
+ name: "@input"
+};
diff --git a/stories/flow-text-editor/release-notes.mdx b/stories/flow-text-editor/release-notes.mdx
new file mode 100644
index 000000000..861c0fb41
--- /dev/null
+++ b/stories/flow-text-editor/release-notes.mdx
@@ -0,0 +1,5 @@
+import { Meta, Markdown } from "@storybook/addon-docs/blocks";
+import Changelog from "../../packages/flow-text-editor/CHANGELOG.md?raw";
+
+
+{Changelog}
diff --git a/tsconfig.json b/tsconfig.json
index ae807553e..c0e805dc5 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -32,6 +32,9 @@
},
{
"path": "./packages/flow-md-editor"
+ },
+ {
+ "path": "./packages/flow-text-editor"
}
]
}