@baasix/lexical 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +281 -0
- package/dist/DateTimeComponent-4MX2IKXK.css +45 -0
- package/dist/DateTimeComponent-4MX2IKXK.css.map +1 -0
- package/dist/DateTimeComponent-7V5RW3AE.js +2928 -0
- package/dist/DateTimeComponent-7V5RW3AE.js.map +1 -0
- package/dist/EquationComponent-3IW3ONJD.js +159 -0
- package/dist/EquationComponent-3IW3ONJD.js.map +1 -0
- package/dist/EquationComponent-C2C6477P.css +28 -0
- package/dist/EquationComponent-C2C6477P.css.map +1 -0
- package/dist/ExcalidrawComponent-GZYLHNOY.js +267 -0
- package/dist/ExcalidrawComponent-GZYLHNOY.js.map +1 -0
- package/dist/ExcalidrawComponent-U6BD7DUB.css +152 -0
- package/dist/ExcalidrawComponent-U6BD7DUB.css.map +1 -0
- package/dist/ImageComponent-IYUGOT6O.css +73 -0
- package/dist/ImageComponent-IYUGOT6O.css.map +1 -0
- package/dist/ImageComponent-TTUYUG3M.js +429 -0
- package/dist/ImageComponent-TTUYUG3M.js.map +1 -0
- package/dist/PollComponent-CWI5UJF5.css +187 -0
- package/dist/PollComponent-CWI5UJF5.css.map +1 -0
- package/dist/PollComponent-KLJZSW5O.js +199 -0
- package/dist/PollComponent-KLJZSW5O.js.map +1 -0
- package/dist/StickyComponent-MZSTQF47.css +774 -0
- package/dist/StickyComponent-MZSTQF47.css.map +1 -0
- package/dist/StickyComponent-ZED6LNTX.js +233 -0
- package/dist/StickyComponent-ZED6LNTX.js.map +1 -0
- package/dist/chunk-35UCX4ZT.js +168 -0
- package/dist/chunk-35UCX4ZT.js.map +1 -0
- package/dist/chunk-44LUNGL3.js +16608 -0
- package/dist/chunk-44LUNGL3.js.map +1 -0
- package/dist/chunk-BHROZTZU.js +42 -0
- package/dist/chunk-BHROZTZU.js.map +1 -0
- package/dist/chunk-FJ6COZ4H.js +275 -0
- package/dist/chunk-FJ6COZ4H.js.map +1 -0
- package/dist/chunk-GSFNU3JE.js +211 -0
- package/dist/chunk-GSFNU3JE.js.map +1 -0
- package/dist/chunk-I43VQAHW.js +918 -0
- package/dist/chunk-I43VQAHW.js.map +1 -0
- package/dist/chunk-N22RKA5D.js +402 -0
- package/dist/chunk-N22RKA5D.js.map +1 -0
- package/dist/chunk-OIMMC5C3.js +134 -0
- package/dist/chunk-OIMMC5C3.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-TVF6V3BJ.js +41 -0
- package/dist/chunk-TVF6V3BJ.js.map +1 -0
- package/dist/chunk-XTKVR2JI.js +225 -0
- package/dist/chunk-XTKVR2JI.js.map +1 -0
- package/dist/emoji-list-MUV74SND.js +8 -0
- package/dist/emoji-list-MUV74SND.js.map +1 -0
- package/dist/index.css +4234 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +16050 -0
- package/dist/index.js.map +1 -0
- package/dist/landscape-RJWVK6ET.jpg +0 -0
- package/dist/yellow-flower-R72KOP74.jpg +0 -0
- package/package.json +76 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/nodes/StickyNode.css","../src/themes/StickyEditorTheme.css","../src/themes/PlaygroundEditorTheme.css","../src/ui/ContentEditable.css"],"sourcesContent":["/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\r\n.StickyNode__contentEditable {\r\n min-height: 20px;\r\n border: 0;\r\n resize: none;\r\n cursor: text;\r\n font-size: 24px;\r\n caret-color: rgb(5, 5, 5);\r\n display: block;\r\n position: relative;\r\n outline: 0;\r\n padding: 10px;\r\n user-select: text;\r\n white-space: pre-wrap;\r\n word-wrap: break-word;\r\n}\r\n.StickyNode__placeholder {\r\n font-size: 24px;\r\n color: #999;\r\n overflow: hidden;\r\n position: absolute;\r\n text-overflow: ellipsis;\r\n top: 30px;\r\n left: 20px;\r\n width: 120px;\r\n user-select: none;\r\n white-space: nowrap;\r\n display: inline-block;\r\n pointer-events: none;\r\n}\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\r\n\r\n.StickyEditorTheme__paragraph {\r\n margin: 0;\r\n position: 'relative';\r\n}\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\r\n:root {\r\n --lexical-indent-base-value: 40px;\r\n}\r\n.PlaygroundEditorTheme__paragraph {\r\n margin: 0;\r\n position: relative;\r\n}\r\n.PlaygroundEditorTheme__quote {\r\n margin: 0;\r\n margin-left: 20px;\r\n margin-bottom: 10px;\r\n font-size: 15px;\r\n color: rgb(101, 103, 107);\r\n border-left-color: rgb(206, 208, 212);\r\n border-left-width: 4px;\r\n border-left-style: solid;\r\n padding-left: 16px;\r\n}\r\n.PlaygroundEditorTheme__h1 {\r\n font-size: 24px;\r\n color: rgb(5, 5, 5);\r\n font-weight: 400;\r\n margin: 0;\r\n}\r\n.PlaygroundEditorTheme__h2 {\r\n font-size: 15px;\r\n color: rgb(101, 103, 107);\r\n font-weight: 700;\r\n margin: 0;\r\n text-transform: uppercase;\r\n}\r\n.PlaygroundEditorTheme__h3 {\r\n font-size: 12px;\r\n margin: 0;\r\n text-transform: uppercase;\r\n}\r\n.PlaygroundEditorTheme__textBold {\r\n font-weight: bold;\r\n}\r\n.PlaygroundEditorTheme__paragraph mark {\r\n background-color: unset;\r\n}\r\n.PlaygroundEditorTheme__textHighlight {\r\n background: rgba(255, 212, 0, 0.14);\r\n border-bottom: 2px solid rgba(255, 212, 0, 0.3);\r\n}\r\n.PlaygroundEditorTheme__textItalic {\r\n font-style: italic;\r\n}\r\n.PlaygroundEditorTheme__textUnderline {\r\n text-decoration: underline;\r\n}\r\n\r\n.PlaygroundEditorTheme__textStrikethrough {\r\n text-decoration: line-through;\r\n}\r\n\r\n.PlaygroundEditorTheme__textUnderlineStrikethrough {\r\n text-decoration: underline line-through;\r\n}\r\n\r\n.PlaygroundEditorTheme__tabNode {\r\n position: relative;\r\n text-decoration: none;\r\n}\r\n\r\n.PlaygroundEditorTheme__tabNode.PlaygroundEditorTheme__textUnderline::after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 0.15em;\r\n border-bottom: 0.1em solid currentColor;\r\n}\r\n\r\n.PlaygroundEditorTheme__tabNode.PlaygroundEditorTheme__textStrikethrough::before {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0.69em;\r\n border-top: 0.1em solid currentColor;\r\n}\r\n\r\n.PlaygroundEditorTheme__tabNode.PlaygroundEditorTheme__textUnderlineStrikethrough::before,\r\n.PlaygroundEditorTheme__tabNode.PlaygroundEditorTheme__textUnderlineStrikethrough::after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n}\r\n\r\n.PlaygroundEditorTheme__tabNode.PlaygroundEditorTheme__textUnderlineStrikethrough::before {\r\n top: 0.69em;\r\n border-top: 0.1em solid currentColor;\r\n}\r\n\r\n.PlaygroundEditorTheme__tabNode.PlaygroundEditorTheme__textUnderlineStrikethrough::after {\r\n bottom: 0.05em;\r\n border-bottom: 0.1em solid currentColor;\r\n}\r\n\r\n.PlaygroundEditorTheme__textSubscript {\r\n font-size: 0.8em;\r\n vertical-align: sub !important;\r\n}\r\n.PlaygroundEditorTheme__textSuperscript {\r\n font-size: 0.8em;\r\n vertical-align: super;\r\n}\r\n.PlaygroundEditorTheme__textCode {\r\n background-color: rgb(240, 242, 245);\r\n padding: 1px 0.25rem;\r\n font-family: Menlo, Consolas, Monaco, monospace;\r\n font-size: 94%;\r\n}\r\n.PlaygroundEditorTheme__textLowercase {\r\n text-transform: lowercase;\r\n}\r\n.PlaygroundEditorTheme__textUppercase {\r\n text-transform: uppercase;\r\n}\r\n.PlaygroundEditorTheme__textCapitalize {\r\n text-transform: capitalize;\r\n}\r\n.PlaygroundEditorTheme__hashtag {\r\n background-color: rgba(88, 144, 255, 0.15);\r\n border-bottom: 1px solid rgba(88, 144, 255, 0.3);\r\n}\r\n.PlaygroundEditorTheme__link {\r\n color: rgb(33, 111, 219);\r\n text-decoration: none;\r\n}\r\n.PlaygroundEditorTheme__link:hover {\r\n text-decoration: underline;\r\n cursor: pointer;\r\n}\r\n.PlaygroundEditorTheme__blockCursor {\r\n display: block;\r\n pointer-events: none;\r\n position: absolute;\r\n}\r\n.PlaygroundEditorTheme__blockCursor:after {\r\n content: '';\r\n display: block;\r\n position: absolute;\r\n top: -2px;\r\n width: 20px;\r\n border-top: 1px solid black;\r\n animation: CursorBlink 1.1s steps(2, start) infinite;\r\n}\r\n@keyframes CursorBlink {\r\n to {\r\n visibility: hidden;\r\n }\r\n}\r\n.PlaygroundEditorTheme__code {\r\n background-color: rgb(240, 242, 245);\r\n font-family: Menlo, Consolas, Monaco, monospace;\r\n display: block;\r\n line-height: 1.53;\r\n font-size: 13px;\r\n padding-top: 8px;\r\n margin: 0;\r\n margin-top: 8px;\r\n margin-bottom: 8px;\r\n overflow-x: auto;\r\n position: relative;\r\n tab-size: 2;\r\n white-space: pre;\r\n max-width: 100%;\r\n box-sizing: border-box;\r\n}\r\n.PlaygroundEditorTheme__code:before {\r\n content: attr(data-gutter);\r\n position: sticky;\r\n background-color: #eee;\r\n left: 0;\r\n float: left;\r\n top: 0;\r\n z-index: 3;\r\n min-height: 100%;\r\n border-right: 1px solid #ccc;\r\n padding: 8px;\r\n color: #777;\r\n white-space: pre-wrap;\r\n text-align: right;\r\n min-width: 25px;\r\n margin-right: 10px;\r\n margin-top: -8px;\r\n padding: 8px;\r\n}\r\n.PlaygroundEditorTheme__tableScrollableWrapper {\r\n overflow-x: auto;\r\n margin: 0px 0px 5px 0px;\r\n}\r\n.PlaygroundEditorTheme__tableScrollRight {\r\n box-shadow: inset -10px 0 10px rgba(0, 0, 0, 0.15);\r\n}\r\n.PlaygroundEditorTheme__tableScrollLeft {\r\n box-shadow: inset 10px 0 10px rgba(0, 0, 0, 0.15);\r\n}\r\n.PlaygroundEditorTheme__tableScrollMiddle {\r\n box-shadow:\r\n inset 10px 0 10px rgba(0, 0, 0, 0.15),\r\n inset -10px 0 10px rgba(0, 0, 0, 0.15);\r\n}\r\n.PlaygroundEditorTheme__tableScrollableWrapper > .PlaygroundEditorTheme__table {\r\n /* Remove the table's vertical margin and put it on the wrapper */\r\n margin-top: 0;\r\n margin-bottom: 0;\r\n}\r\n.PlaygroundEditorTheme__tableAlignmentCenter {\r\n margin-left: auto;\r\n margin-right: auto;\r\n}\r\n.PlaygroundEditorTheme__tableAlignmentRight {\r\n margin-left: auto;\r\n}\r\n.PlaygroundEditorTheme__table {\r\n border-collapse: collapse;\r\n border-spacing: 0;\r\n overflow-y: scroll;\r\n overflow-x: scroll;\r\n table-layout: fixed;\r\n width: fit-content;\r\n margin-top: 25px;\r\n margin-bottom: 30px;\r\n}\r\n.PlaygroundEditorTheme__tableScrollableWrapper.PlaygroundEditorTheme__tableFrozenRow {\r\n /* position:sticky needs overflow:clip or visible\r\n https://github.com/w3c/csswg-drafts/issues/865#issuecomment-350585274 */\r\n overflow-x: clip;\r\n}\r\n.PlaygroundEditorTheme__tableFrozenRow tr:nth-of-type(1) > td {\r\n overflow: clip;\r\n background-color: #ffffff;\r\n position: sticky;\r\n z-index: 2;\r\n top: 44px;\r\n}\r\n.PlaygroundEditorTheme__tableFrozenRow tr:nth-of-type(1) > th {\r\n overflow: clip;\r\n background-color: #f2f3f5;\r\n position: sticky;\r\n z-index: 2;\r\n top: 44px;\r\n}\r\n.PlaygroundEditorTheme__tableFrozenRow tr:nth-of-type(1) > th:after,\r\n.PlaygroundEditorTheme__tableFrozenRow tr:nth-of-type(1) > td:after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n bottom: 0;\r\n width: 100%;\r\n border-bottom: 1px solid #bbb;\r\n}\r\n.PlaygroundEditorTheme__tableFrozenColumn tr > td:first-child {\r\n background-color: #ffffff;\r\n position: sticky;\r\n z-index: 2;\r\n left: 0;\r\n}\r\n.PlaygroundEditorTheme__tableFrozenColumn tr > th:first-child {\r\n background-color: #f2f3f5;\r\n position: sticky;\r\n z-index: 2;\r\n left: 0;\r\n}\r\n.PlaygroundEditorTheme__tableFrozenColumn tr > :first-child::after {\r\n content: '';\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n right: 0;\r\n height: 100%;\r\n border-right: 1px solid #bbb;\r\n}\r\n.PlaygroundEditorTheme__tableRowStriping tr:nth-child(even),\r\n.PlaygroundEditorTheme__tableFrozenColumn\r\n .PlaygroundEditorTheme__table.PlaygroundEditorTheme__tableRowStriping\r\n tr:nth-child(even)\r\n > td:first-child {\r\n background-color: #f2f5fb;\r\n}\r\n.PlaygroundEditorTheme__tableSelection *::selection {\r\n background-color: transparent;\r\n}\r\n.PlaygroundEditorTheme__tableSelected {\r\n outline: 2px solid rgb(60, 132, 244);\r\n}\r\n.PlaygroundEditorTheme__tableCell {\r\n border: 1px solid #bbb;\r\n width: 75px;\r\n vertical-align: top;\r\n text-align: start;\r\n padding: 6px 8px;\r\n position: relative;\r\n outline: none;\r\n overflow: auto;\r\n}\r\n/*\r\n A firefox workaround to allow scrolling of overflowing table cell\r\n ref: https://bugzilla.mozilla.org/show_bug.cgi?id=1904159\r\n*/\r\n.PlaygroundEditorTheme__tableCell > * {\r\n overflow: inherit;\r\n}\r\n.PlaygroundEditorTheme__tableCellResizer {\r\n position: absolute;\r\n right: -4px;\r\n height: 100%;\r\n width: 8px;\r\n cursor: ew-resize;\r\n z-index: 10;\r\n top: 0;\r\n}\r\n.PlaygroundEditorTheme__tableCellHeader {\r\n background-color: #f2f3f5;\r\n text-align: start;\r\n}\r\n.PlaygroundEditorTheme__tableCellSelected {\r\n caret-color: transparent;\r\n}\r\n.PlaygroundEditorTheme__tableCellSelected::after {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n top: 0;\r\n background-color: highlight;\r\n mix-blend-mode: multiply;\r\n content: '';\r\n pointer-events: none;\r\n}\r\n.PlaygroundEditorTheme__tableAddColumns {\r\n position: absolute;\r\n background-color: #eee;\r\n height: 100%;\r\n animation: table-controls 0.2s ease;\r\n border: 0;\r\n cursor: pointer;\r\n}\r\n.PlaygroundEditorTheme__tableAddColumns:after {\r\n background-image: url(../images/icons/plus.svg);\r\n background-size: contain;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n display: block;\r\n content: ' ';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n opacity: 0.4;\r\n}\r\n.PlaygroundEditorTheme__tableAddColumns:hover,\r\n.PlaygroundEditorTheme__tableAddRows:hover {\r\n background-color: #c9dbf0;\r\n}\r\n.PlaygroundEditorTheme__tableAddRows {\r\n position: absolute;\r\n width: calc(100% - 25px);\r\n background-color: #eee;\r\n animation: table-controls 0.2s ease;\r\n border: 0;\r\n cursor: pointer;\r\n}\r\n.PlaygroundEditorTheme__tableAddRows:after {\r\n background-image: url(../images/icons/plus.svg);\r\n background-size: contain;\r\n background-position: center;\r\n background-repeat: no-repeat;\r\n display: block;\r\n content: ' ';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n opacity: 0.4;\r\n}\r\n@keyframes table-controls {\r\n 0% {\r\n opacity: 0;\r\n }\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n.PlaygroundEditorTheme__tableCellResizeRuler {\r\n display: block;\r\n position: absolute;\r\n width: 1px;\r\n background-color: rgb(60, 132, 244);\r\n height: 100%;\r\n top: 0;\r\n}\r\n.PlaygroundEditorTheme__tableCellActionButtonContainer {\r\n display: block;\r\n right: 5px;\r\n top: 6px;\r\n position: absolute;\r\n z-index: 4;\r\n width: 20px;\r\n height: 20px;\r\n}\r\n.PlaygroundEditorTheme__tableCellActionButton {\r\n background-color: #eee;\r\n display: block;\r\n border: 0;\r\n border-radius: 20px;\r\n width: 20px;\r\n height: 20px;\r\n color: #222;\r\n cursor: pointer;\r\n}\r\n.PlaygroundEditorTheme__tableCellActionButton:hover {\r\n background-color: #ddd;\r\n}\r\n.PlaygroundEditorTheme__characterLimit {\r\n display: inline;\r\n background-color: #ffbbbb !important;\r\n}\r\n.PlaygroundEditorTheme__ol1 {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: decimal;\r\n list-style-position: outside;\r\n}\r\n.PlaygroundEditorTheme__ol2 {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: upper-alpha;\r\n list-style-position: outside;\r\n}\r\n.PlaygroundEditorTheme__ol3 {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: lower-alpha;\r\n list-style-position: outside;\r\n}\r\n.PlaygroundEditorTheme__ol4 {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: upper-roman;\r\n list-style-position: outside;\r\n}\r\n.PlaygroundEditorTheme__ol5 {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: lower-roman;\r\n list-style-position: outside;\r\n}\r\n.PlaygroundEditorTheme__ul {\r\n padding: 0;\r\n margin: 0;\r\n list-style-type: disc;\r\n list-style-position: outside;\r\n}\r\n.PlaygroundEditorTheme__listItem {\r\n margin: 0 32px;\r\n font-family: var(--listitem-marker-font-family);\r\n font-size: var(--listitem-marker-font-size);\r\n background-color: var(--listitem-marker-background-color);\r\n}\r\n.PlaygroundEditorTheme__listItem::marker {\r\n color: var(--listitem-marker-color);\r\n background-color: var(--listitem-marker-background-color);\r\n font-family: var(--listitem-marker-font-family);\r\n font-size: var(--listitem-marker-font-size);\r\n}\r\n.PlaygroundEditorTheme__listItemChecked,\r\n.PlaygroundEditorTheme__listItemUnchecked {\r\n position: relative;\r\n margin-left: 0.5em;\r\n margin-right: 0.5em;\r\n padding-left: 1.5em;\r\n padding-right: 1.5em;\r\n list-style-type: none;\r\n outline: none;\r\n display: block;\r\n min-height: 1.5em;\r\n}\r\n.PlaygroundEditorTheme__listItemChecked > *,\r\n.PlaygroundEditorTheme__listItemUnchecked > * {\r\n margin-left: 0.01em;\r\n}\r\n.PlaygroundEditorTheme__listItemUnchecked:before,\r\n.PlaygroundEditorTheme__listItemChecked:before {\r\n content: '\\200B';\r\n width: 0.9em;\r\n height: 0.9em;\r\n top: 50%;\r\n left: 0;\r\n cursor: pointer;\r\n display: block;\r\n background-size: cover;\r\n position: absolute;\r\n transform: translateY(-50%);\r\n}\r\n.PlaygroundEditorTheme__listItemChecked {\r\n text-decoration: line-through;\r\n}\r\n.PlaygroundEditorTheme__listItemUnchecked:focus:before,\r\n.PlaygroundEditorTheme__listItemChecked:focus:before {\r\n box-shadow: 0 0 0 2px #a6cdfe;\r\n border-radius: 2px;\r\n}\r\n.PlaygroundEditorTheme__listItemUnchecked:before {\r\n border: 1px solid #999;\r\n border-radius: 2px;\r\n}\r\n.PlaygroundEditorTheme__listItemChecked:before {\r\n border: 1px solid rgb(61, 135, 245);\r\n border-radius: 2px;\r\n background-color: #3d87f5;\r\n background-repeat: no-repeat;\r\n}\r\n.PlaygroundEditorTheme__listItemChecked:after {\r\n content: '';\r\n cursor: pointer;\r\n border-color: #fff;\r\n border-style: solid;\r\n position: absolute;\r\n display: block;\r\n top: 45%;\r\n width: 0.2em;\r\n left: 0.35em;\r\n height: 0.4em;\r\n transform: translateY(-50%) rotate(45deg);\r\n border-width: 0 0.1em 0.1em 0;\r\n}\r\n.PlaygroundEditorTheme__nestedListItem {\r\n list-style-type: none;\r\n}\r\n.PlaygroundEditorTheme__nestedListItem:before,\r\n.PlaygroundEditorTheme__nestedListItem:after {\r\n display: none;\r\n}\r\n.PlaygroundEditorTheme__tokenComment {\r\n color: slategray;\r\n}\r\n.PlaygroundEditorTheme__tokenDeleted {\r\n border-image: linear-gradient(to right, #ffcecb 50%, #ffebe9 50%) fill 0/0/0\r\n 100vw;\r\n}\r\n.PlaygroundEditorTheme__tokenInserted {\r\n border-image: linear-gradient(to right, #aceebb 50%, #dafbe1 50%) fill 0/0/0\r\n 100vw;\r\n}\r\n.PlaygroundEditorTheme__tokenUnchanged {\r\n border-image: linear-gradient(to right, #ddd 50%, #f0f2f5 50%) fill 0/0/0\r\n 100vw;\r\n}\r\n.PlaygroundEditorTheme__tokenPunctuation {\r\n color: #999;\r\n}\r\n.PlaygroundEditorTheme__tokenProperty {\r\n color: #905;\r\n}\r\n.PlaygroundEditorTheme__tokenSelector {\r\n color: #690;\r\n}\r\n.PlaygroundEditorTheme__tokenOperator {\r\n color: #9a6e3a;\r\n}\r\n.PlaygroundEditorTheme__tokenAttr {\r\n color: #07a;\r\n}\r\n.PlaygroundEditorTheme__tokenVariable {\r\n color: #e90;\r\n}\r\n.PlaygroundEditorTheme__tokenFunction {\r\n color: #dd4a68;\r\n}\r\n.PlaygroundEditorTheme__mark {\r\n background: rgba(255, 212, 0, 0.14);\r\n border-bottom: 2px solid rgba(255, 212, 0, 0.3);\r\n padding-bottom: 2px;\r\n}\r\n.PlaygroundEditorTheme__markOverlap {\r\n background: rgba(255, 212, 0, 0.3);\r\n border-bottom: 2px solid rgba(255, 212, 0, 0.7);\r\n}\r\n.PlaygroundEditorTheme__mark.selected {\r\n background: rgba(255, 212, 0, 0.5);\r\n border-bottom: 2px solid rgba(255, 212, 0, 1);\r\n}\r\n.PlaygroundEditorTheme__markOverlap.selected {\r\n background: rgba(255, 212, 0, 0.7);\r\n border-bottom: 2px solid rgba(255, 212, 0, 0.7);\r\n}\r\n.PlaygroundEditorTheme__embedBlock {\r\n user-select: none;\r\n}\r\n.PlaygroundEditorTheme__embedBlockFocus {\r\n outline: 2px solid rgb(60, 132, 244);\r\n}\r\n.PlaygroundEditorTheme__layoutContainer {\r\n display: grid;\r\n gap: 10px;\r\n margin: 10px 0;\r\n}\r\n.PlaygroundEditorTheme__layoutItem {\r\n border: 1px dashed #ddd;\r\n padding: 8px 16px;\r\n min-width: 0;\r\n max-width: 100%;\r\n}\r\n.PlaygroundEditorTheme__autocomplete {\r\n color: #ccc;\r\n}\r\n.PlaygroundEditorTheme__hr {\r\n padding: 2px 2px;\r\n border: none;\r\n margin: 1em 0;\r\n cursor: pointer;\r\n}\r\n.PlaygroundEditorTheme__hr:after {\r\n content: '';\r\n display: block;\r\n height: 2px;\r\n background-color: #ccc;\r\n line-height: 2px;\r\n}\r\n.PlaygroundEditorTheme__hr.PlaygroundEditorTheme__hrSelected {\r\n outline: 2px solid rgb(60, 132, 244);\r\n user-select: none;\r\n}\r\n\r\n.PlaygroundEditorTheme__specialText {\r\n background-color: yellow;\r\n font-weight: bold;\r\n}\r\n\r\n.PlaygroundEditorTheme__contextMenu {\r\n outline: 0;\r\n background: #fff;\r\n border: 1px solid #ddd;\r\n box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.3);\r\n border-radius: 8px;\r\n}\r\n.PlaygroundEditorTheme__contextMenu button:first-child {\r\n border-radius: 8px 8px 0px 0px;\r\n}\r\n.PlaygroundEditorTheme__contextMenu button:last-child {\r\n border-radius: 0px 0px 8px 8px;\r\n}\r\n.PlaygroundEditorTheme__contextMenuItem {\r\n width: 100%;\r\n display: block;\r\n}\r\n.PlaygroundEditorTheme__contextMenuItem {\r\n display: flex;\r\n justify-content: left;\r\n width: 100%;\r\n background-color: #fff;\r\n color: #050505;\r\n border: 0;\r\n border-radius: 0px;\r\n font-size: 15px;\r\n text-align: left;\r\n line-height: 20px;\r\n padding: 8px;\r\n padding-right: 14px;\r\n outline: 0;\r\n cursor: pointer;\r\n}\r\n.PlaygroundEditorTheme__contextMenuItem.open {\r\n background: #ddd;\r\n}\r\n.PlaygroundEditorTheme__contextMenuItem:focus,\r\n.PlaygroundEditorTheme__contextMenuItem:not([disabled]):active {\r\n background: #eee;\r\n}\r\n.PlaygroundEditorTheme__contextMenuItem:disabled {\r\n background: #fff;\r\n color: #aaa;\r\n cursor: not-allowed;\r\n}\r\n.PlaygroundEditorTheme__contextMenuItemIcon {\r\n width: 20px;\r\n margin-right: 8px;\r\n background-repeat: no-repeat;\r\n background-size: contain;\r\n}\r\n\r\n/* ===== Custom overrides for app integration ===== */\r\n\r\n/* Force editor content area to always be light regardless of app dark mode */\r\n.editor-shell .ContentEditable__root {\r\n background: #fff !important;\r\n color: #000 !important;\r\n}\r\n\r\n/* Ensure editor UI elements appear above Radix Sheet overlays (z-index ~50).\r\n These elements are portaled to document.body by Lexical. */\r\n.floating-text-format-popup,\r\n.link-editor,\r\n.typeahead-popover,\r\n.emoji-menu,\r\n.mentions-menu,\r\n.auto-embed-menu,\r\n.component-picker-menu,\r\n.dropdown,\r\n.color-picker-wrapper,\r\n.Modal__overlay {\r\n z-index: 10000 !important;\r\n}\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n *\r\n */\r\n.ContentEditable__root {\r\n border: 0;\r\n font-size: 15px;\r\n display: block;\r\n position: relative;\r\n outline: 0;\r\n padding: 8px 46px 40px;\r\n min-height: 150px;\r\n}\r\n@media (max-width: 1025px) {\r\n .ContentEditable__root {\r\n padding-left: 8px;\r\n padding-right: 8px;\r\n }\r\n}\r\n\r\n.ContentEditable__placeholder {\r\n font-size: 15px;\r\n color: #999;\r\n overflow: hidden;\r\n position: absolute;\r\n text-overflow: ellipsis;\r\n top: 8px;\r\n left: 46px;\r\n right: 28px;\r\n user-select: none;\r\n white-space: nowrap;\r\n display: inline-block;\r\n pointer-events: none;\r\n}\r\n@media (max-width: 1025px) {\r\n .ContentEditable__placeholder {\r\n left: 8px;\r\n right: 8px;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import {
|
|
2
|
+
$isStickyNode,
|
|
3
|
+
PlaygroundEditorTheme_default
|
|
4
|
+
} from "./chunk-XTKVR2JI.js";
|
|
5
|
+
import {
|
|
6
|
+
LexicalContentEditable,
|
|
7
|
+
useSharedHistoryContext
|
|
8
|
+
} from "./chunk-BHROZTZU.js";
|
|
9
|
+
import "./chunk-PZ5AY32C.js";
|
|
10
|
+
|
|
11
|
+
// src/nodes/StickyComponent.tsx
|
|
12
|
+
import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
|
|
13
|
+
import { LexicalErrorBoundary } from "@lexical/react/LexicalErrorBoundary";
|
|
14
|
+
import { HistoryPlugin } from "@lexical/react/LexicalHistoryPlugin";
|
|
15
|
+
import { LexicalNestedComposer } from "@lexical/react/LexicalNestedComposer";
|
|
16
|
+
import { PlainTextPlugin } from "@lexical/react/LexicalPlainTextPlugin";
|
|
17
|
+
import { calculateZoomLevel } from "@lexical/utils";
|
|
18
|
+
import { $getNodeByKey } from "lexical";
|
|
19
|
+
import { useEffect, useLayoutEffect, useRef } from "react";
|
|
20
|
+
|
|
21
|
+
// src/themes/StickyEditorTheme.ts
|
|
22
|
+
var theme = {
|
|
23
|
+
...PlaygroundEditorTheme_default,
|
|
24
|
+
paragraph: "StickyEditorTheme__paragraph"
|
|
25
|
+
};
|
|
26
|
+
var StickyEditorTheme_default = theme;
|
|
27
|
+
|
|
28
|
+
// src/nodes/StickyComponent.tsx
|
|
29
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
30
|
+
function positionSticky(stickyElem, positioning) {
|
|
31
|
+
const style = stickyElem.style;
|
|
32
|
+
const rootElementRect = positioning.rootElementRect;
|
|
33
|
+
const rectLeft = rootElementRect !== null ? rootElementRect.left : 0;
|
|
34
|
+
const rectTop = rootElementRect !== null ? rootElementRect.top : 0;
|
|
35
|
+
style.top = rectTop + positioning.y + "px";
|
|
36
|
+
style.left = rectLeft + positioning.x + "px";
|
|
37
|
+
}
|
|
38
|
+
function StickyComponent({
|
|
39
|
+
x,
|
|
40
|
+
y,
|
|
41
|
+
nodeKey,
|
|
42
|
+
color,
|
|
43
|
+
caption
|
|
44
|
+
}) {
|
|
45
|
+
const [editor] = useLexicalComposerContext();
|
|
46
|
+
const stickyContainerRef = useRef(null);
|
|
47
|
+
const positioningRef = useRef({
|
|
48
|
+
isDragging: false,
|
|
49
|
+
offsetX: 0,
|
|
50
|
+
offsetY: 0,
|
|
51
|
+
rootElementRect: null,
|
|
52
|
+
x: 0,
|
|
53
|
+
y: 0
|
|
54
|
+
});
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
const position = positioningRef.current;
|
|
57
|
+
position.x = x;
|
|
58
|
+
position.y = y;
|
|
59
|
+
const stickyContainer = stickyContainerRef.current;
|
|
60
|
+
if (stickyContainer !== null) {
|
|
61
|
+
positionSticky(stickyContainer, position);
|
|
62
|
+
}
|
|
63
|
+
}, [x, y]);
|
|
64
|
+
useLayoutEffect(() => {
|
|
65
|
+
const position = positioningRef.current;
|
|
66
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
67
|
+
for (let i = 0; i < entries.length; i++) {
|
|
68
|
+
const entry = entries[i];
|
|
69
|
+
const { target } = entry;
|
|
70
|
+
position.rootElementRect = target.getBoundingClientRect();
|
|
71
|
+
const stickyContainer = stickyContainerRef.current;
|
|
72
|
+
if (stickyContainer !== null) {
|
|
73
|
+
positionSticky(stickyContainer, position);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
const removeRootListener = editor.registerRootListener(
|
|
78
|
+
(nextRootElem, prevRootElem) => {
|
|
79
|
+
if (prevRootElem !== null) {
|
|
80
|
+
resizeObserver.unobserve(prevRootElem);
|
|
81
|
+
}
|
|
82
|
+
if (nextRootElem !== null) {
|
|
83
|
+
resizeObserver.observe(nextRootElem);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
);
|
|
87
|
+
const handleWindowResize = () => {
|
|
88
|
+
const rootElement = editor.getRootElement();
|
|
89
|
+
const stickyContainer = stickyContainerRef.current;
|
|
90
|
+
if (rootElement !== null && stickyContainer !== null) {
|
|
91
|
+
position.rootElementRect = rootElement.getBoundingClientRect();
|
|
92
|
+
positionSticky(stickyContainer, position);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
window.addEventListener("resize", handleWindowResize);
|
|
96
|
+
return () => {
|
|
97
|
+
window.removeEventListener("resize", handleWindowResize);
|
|
98
|
+
removeRootListener();
|
|
99
|
+
};
|
|
100
|
+
}, [editor]);
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
const stickyContainer = stickyContainerRef.current;
|
|
103
|
+
if (stickyContainer !== null) {
|
|
104
|
+
setTimeout(() => {
|
|
105
|
+
stickyContainer.style.setProperty(
|
|
106
|
+
"transition",
|
|
107
|
+
"top 0.3s ease 0s, left 0.3s ease 0s"
|
|
108
|
+
);
|
|
109
|
+
}, 500);
|
|
110
|
+
}
|
|
111
|
+
}, []);
|
|
112
|
+
const handlePointerMove = (event) => {
|
|
113
|
+
const stickyContainer = stickyContainerRef.current;
|
|
114
|
+
const positioning = positioningRef.current;
|
|
115
|
+
const rootElementRect = positioning.rootElementRect;
|
|
116
|
+
const zoom = calculateZoomLevel(stickyContainer);
|
|
117
|
+
if (stickyContainer !== null && positioning.isDragging && rootElementRect !== null) {
|
|
118
|
+
positioning.x = event.pageX / zoom - positioning.offsetX - rootElementRect.left;
|
|
119
|
+
positioning.y = event.pageY / zoom - positioning.offsetY - rootElementRect.top;
|
|
120
|
+
positionSticky(stickyContainer, positioning);
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
const handlePointerUp = (event) => {
|
|
124
|
+
const stickyContainer = stickyContainerRef.current;
|
|
125
|
+
const positioning = positioningRef.current;
|
|
126
|
+
if (stickyContainer !== null) {
|
|
127
|
+
positioning.isDragging = false;
|
|
128
|
+
stickyContainer.classList.remove("dragging");
|
|
129
|
+
editor.update(() => {
|
|
130
|
+
const node = $getNodeByKey(nodeKey);
|
|
131
|
+
if ($isStickyNode(node)) {
|
|
132
|
+
node.setPosition(positioning.x, positioning.y);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
document.removeEventListener("pointermove", handlePointerMove);
|
|
137
|
+
document.removeEventListener("pointerup", handlePointerUp);
|
|
138
|
+
};
|
|
139
|
+
const handleDelete = () => {
|
|
140
|
+
editor.update(() => {
|
|
141
|
+
const node = $getNodeByKey(nodeKey);
|
|
142
|
+
if ($isStickyNode(node)) {
|
|
143
|
+
node.remove();
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
const handleColorChange = () => {
|
|
148
|
+
editor.update(() => {
|
|
149
|
+
const node = $getNodeByKey(nodeKey);
|
|
150
|
+
if ($isStickyNode(node)) {
|
|
151
|
+
node.toggleColor();
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
const { historyState } = useSharedHistoryContext();
|
|
156
|
+
return /* @__PURE__ */ jsx("div", { ref: stickyContainerRef, className: "sticky-note-container", children: /* @__PURE__ */ jsxs(
|
|
157
|
+
"div",
|
|
158
|
+
{
|
|
159
|
+
className: `sticky-note ${color}`,
|
|
160
|
+
onPointerDown: (event) => {
|
|
161
|
+
const stickyContainer = stickyContainerRef.current;
|
|
162
|
+
if (stickyContainer == null || event.button === 2 || event.target !== stickyContainer.firstChild) {
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
const stickContainer = stickyContainer;
|
|
166
|
+
const positioning = positioningRef.current;
|
|
167
|
+
if (stickContainer !== null) {
|
|
168
|
+
const { top, left } = stickContainer.getBoundingClientRect();
|
|
169
|
+
const zoom = calculateZoomLevel(stickContainer);
|
|
170
|
+
positioning.offsetX = event.clientX / zoom - left;
|
|
171
|
+
positioning.offsetY = event.clientY / zoom - top;
|
|
172
|
+
positioning.isDragging = true;
|
|
173
|
+
stickContainer.classList.add("dragging");
|
|
174
|
+
document.addEventListener("pointermove", handlePointerMove);
|
|
175
|
+
document.addEventListener("pointerup", handlePointerUp);
|
|
176
|
+
event.preventDefault();
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
children: [
|
|
180
|
+
/* @__PURE__ */ jsx(
|
|
181
|
+
"button",
|
|
182
|
+
{
|
|
183
|
+
type: "button",
|
|
184
|
+
onClick: handleDelete,
|
|
185
|
+
className: "delete",
|
|
186
|
+
"aria-label": "Delete sticky note",
|
|
187
|
+
title: "Delete",
|
|
188
|
+
children: "X"
|
|
189
|
+
}
|
|
190
|
+
),
|
|
191
|
+
/* @__PURE__ */ jsx(
|
|
192
|
+
"button",
|
|
193
|
+
{
|
|
194
|
+
type: "button",
|
|
195
|
+
onClick: handleColorChange,
|
|
196
|
+
className: "color",
|
|
197
|
+
"aria-label": "Change sticky note color",
|
|
198
|
+
title: "Color",
|
|
199
|
+
children: /* @__PURE__ */ jsx("i", { className: "bucket" })
|
|
200
|
+
}
|
|
201
|
+
),
|
|
202
|
+
/* @__PURE__ */ jsxs(
|
|
203
|
+
LexicalNestedComposer,
|
|
204
|
+
{
|
|
205
|
+
initialEditor: caption,
|
|
206
|
+
initialTheme: StickyEditorTheme_default,
|
|
207
|
+
children: [
|
|
208
|
+
/* @__PURE__ */ jsx(HistoryPlugin, { externalHistoryState: historyState }),
|
|
209
|
+
/* @__PURE__ */ jsx(
|
|
210
|
+
PlainTextPlugin,
|
|
211
|
+
{
|
|
212
|
+
contentEditable: /* @__PURE__ */ jsx(
|
|
213
|
+
LexicalContentEditable,
|
|
214
|
+
{
|
|
215
|
+
placeholder: "What's up?",
|
|
216
|
+
placeholderClassName: "StickyNode__placeholder",
|
|
217
|
+
className: "StickyNode__contentEditable"
|
|
218
|
+
}
|
|
219
|
+
),
|
|
220
|
+
ErrorBoundary: LexicalErrorBoundary
|
|
221
|
+
}
|
|
222
|
+
)
|
|
223
|
+
]
|
|
224
|
+
}
|
|
225
|
+
)
|
|
226
|
+
]
|
|
227
|
+
}
|
|
228
|
+
) });
|
|
229
|
+
}
|
|
230
|
+
export {
|
|
231
|
+
StickyComponent as default
|
|
232
|
+
};
|
|
233
|
+
//# sourceMappingURL=StickyComponent-ZED6LNTX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/nodes/StickyComponent.tsx","../src/themes/StickyEditorTheme.ts"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type {LexicalEditor, NodeKey} from 'lexical';\nimport type {JSX} from 'react';\n\nimport './StickyNode.css';\n\nimport {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';\nimport {LexicalErrorBoundary} from '@lexical/react/LexicalErrorBoundary';\nimport {HistoryPlugin} from '@lexical/react/LexicalHistoryPlugin';\nimport {LexicalNestedComposer} from '@lexical/react/LexicalNestedComposer';\nimport {PlainTextPlugin} from '@lexical/react/LexicalPlainTextPlugin';\nimport {calculateZoomLevel} from '@lexical/utils';\nimport {$getNodeByKey} from 'lexical';\nimport * as React from 'react';\nimport {useEffect, useLayoutEffect, useRef} from 'react';\n\nimport {useSharedHistoryContext} from '../context/SharedHistoryContext';\nimport StickyEditorTheme from '../themes/StickyEditorTheme';\nimport ContentEditable from '../ui/ContentEditable';\nimport {$isStickyNode} from './StickyNode';\n\ntype Positioning = {\n isDragging: boolean;\n offsetX: number;\n offsetY: number;\n rootElementRect: null | ClientRect;\n x: number;\n y: number;\n};\n\nfunction positionSticky(\n stickyElem: HTMLElement,\n positioning: Positioning,\n): void {\n const style = stickyElem.style;\n const rootElementRect = positioning.rootElementRect;\n const rectLeft = rootElementRect !== null ? rootElementRect.left : 0;\n const rectTop = rootElementRect !== null ? rootElementRect.top : 0;\n style.top = rectTop + positioning.y + 'px';\n style.left = rectLeft + positioning.x + 'px';\n}\n\nexport default function StickyComponent({\n x,\n y,\n nodeKey,\n color,\n caption,\n}: {\n caption: LexicalEditor;\n color: 'pink' | 'yellow';\n nodeKey: NodeKey;\n x: number;\n y: number;\n}): JSX.Element {\n const [editor] = useLexicalComposerContext();\n const stickyContainerRef = useRef<null | HTMLDivElement>(null);\n const positioningRef = useRef<Positioning>({\n isDragging: false,\n offsetX: 0,\n offsetY: 0,\n rootElementRect: null,\n x: 0,\n y: 0,\n });\n useEffect(() => {\n const position = positioningRef.current;\n position.x = x;\n position.y = y;\n\n const stickyContainer = stickyContainerRef.current;\n if (stickyContainer !== null) {\n positionSticky(stickyContainer, position);\n }\n }, [x, y]);\n\n useLayoutEffect(() => {\n const position = positioningRef.current;\n const resizeObserver = new ResizeObserver((entries) => {\n for (let i = 0; i < entries.length; i++) {\n const entry = entries[i];\n const {target} = entry;\n position.rootElementRect = target.getBoundingClientRect();\n const stickyContainer = stickyContainerRef.current;\n if (stickyContainer !== null) {\n positionSticky(stickyContainer, position);\n }\n }\n });\n\n const removeRootListener = editor.registerRootListener(\n (nextRootElem, prevRootElem) => {\n if (prevRootElem !== null) {\n resizeObserver.unobserve(prevRootElem);\n }\n if (nextRootElem !== null) {\n resizeObserver.observe(nextRootElem);\n }\n },\n );\n\n const handleWindowResize = () => {\n const rootElement = editor.getRootElement();\n const stickyContainer = stickyContainerRef.current;\n if (rootElement !== null && stickyContainer !== null) {\n position.rootElementRect = rootElement.getBoundingClientRect();\n positionSticky(stickyContainer, position);\n }\n };\n\n window.addEventListener('resize', handleWindowResize);\n\n return () => {\n window.removeEventListener('resize', handleWindowResize);\n removeRootListener();\n };\n }, [editor]);\n\n useEffect(() => {\n const stickyContainer = stickyContainerRef.current;\n if (stickyContainer !== null) {\n // Delay adding transition so we don't trigger the\n // transition on load of the sticky.\n setTimeout(() => {\n stickyContainer.style.setProperty(\n 'transition',\n 'top 0.3s ease 0s, left 0.3s ease 0s',\n );\n }, 500);\n }\n }, []);\n\n const handlePointerMove = (event: PointerEvent) => {\n const stickyContainer = stickyContainerRef.current;\n const positioning = positioningRef.current;\n const rootElementRect = positioning.rootElementRect;\n const zoom = calculateZoomLevel(stickyContainer);\n if (\n stickyContainer !== null &&\n positioning.isDragging &&\n rootElementRect !== null\n ) {\n positioning.x =\n event.pageX / zoom - positioning.offsetX - rootElementRect.left;\n positioning.y =\n event.pageY / zoom - positioning.offsetY - rootElementRect.top;\n positionSticky(stickyContainer, positioning);\n }\n };\n\n const handlePointerUp = (event: PointerEvent) => {\n const stickyContainer = stickyContainerRef.current;\n const positioning = positioningRef.current;\n if (stickyContainer !== null) {\n positioning.isDragging = false;\n stickyContainer.classList.remove('dragging');\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isStickyNode(node)) {\n node.setPosition(positioning.x, positioning.y);\n }\n });\n }\n document.removeEventListener('pointermove', handlePointerMove);\n document.removeEventListener('pointerup', handlePointerUp);\n };\n\n const handleDelete = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isStickyNode(node)) {\n node.remove();\n }\n });\n };\n\n const handleColorChange = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isStickyNode(node)) {\n node.toggleColor();\n }\n });\n };\n\n const {historyState} = useSharedHistoryContext();\n\n return (\n <div ref={stickyContainerRef} className=\"sticky-note-container\">\n <div\n className={`sticky-note ${color}`}\n onPointerDown={(event) => {\n const stickyContainer = stickyContainerRef.current;\n if (\n stickyContainer == null ||\n event.button === 2 ||\n event.target !== stickyContainer.firstChild\n ) {\n // Right click or click on editor should not work\n return;\n }\n const stickContainer = stickyContainer;\n const positioning = positioningRef.current;\n if (stickContainer !== null) {\n const {top, left} = stickContainer.getBoundingClientRect();\n const zoom = calculateZoomLevel(stickContainer);\n positioning.offsetX = event.clientX / zoom - left;\n positioning.offsetY = event.clientY / zoom - top;\n positioning.isDragging = true;\n stickContainer.classList.add('dragging');\n document.addEventListener('pointermove', handlePointerMove);\n document.addEventListener('pointerup', handlePointerUp);\n event.preventDefault();\n }\n }}>\n <button type=\"button\"\n onClick={handleDelete}\n className=\"delete\"\n aria-label=\"Delete sticky note\"\n title=\"Delete\">\n X\n </button>\n <button type=\"button\"\n onClick={handleColorChange}\n className=\"color\"\n aria-label=\"Change sticky note color\"\n title=\"Color\">\n <i className=\"bucket\" />\n </button>\n <LexicalNestedComposer\n initialEditor={caption}\n initialTheme={StickyEditorTheme}>\n <HistoryPlugin externalHistoryState={historyState} />\n <PlainTextPlugin\n contentEditable={\n <ContentEditable\n placeholder=\"What's up?\"\n placeholderClassName=\"StickyNode__placeholder\"\n className=\"StickyNode__contentEditable\"\n />\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n </div>\n </div>\n );\n}\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {EditorThemeClasses} from 'lexical';\r\n\r\nimport './StickyEditorTheme.css';\r\n\r\nimport baseTheme from './PlaygroundEditorTheme';\r\n\r\nconst theme: EditorThemeClasses = {\r\n ...baseTheme,\r\n paragraph: 'StickyEditorTheme__paragraph',\r\n};\r\n\r\nexport default theme;\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
// src/nodes/PollNode.tsx
|
|
2
|
+
import {
|
|
3
|
+
$getState,
|
|
4
|
+
$setState,
|
|
5
|
+
buildImportMap,
|
|
6
|
+
createState,
|
|
7
|
+
DecoratorNode
|
|
8
|
+
} from "lexical";
|
|
9
|
+
import * as React from "react";
|
|
10
|
+
import { jsx } from "react/jsx-runtime";
|
|
11
|
+
var PollComponent = React.lazy(() => import("./PollComponent-KLJZSW5O.js"));
|
|
12
|
+
function createUID() {
|
|
13
|
+
return Math.random().toString(36).replace(/[^a-z]+/g, "").substring(0, 5);
|
|
14
|
+
}
|
|
15
|
+
function createPollOption(text = "") {
|
|
16
|
+
return {
|
|
17
|
+
text,
|
|
18
|
+
uid: createUID(),
|
|
19
|
+
votes: []
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function cloneOption(option, text, votes) {
|
|
23
|
+
return {
|
|
24
|
+
text,
|
|
25
|
+
uid: option.uid,
|
|
26
|
+
votes: votes || Array.from(option.votes)
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function $convertPollElement(domNode) {
|
|
30
|
+
const question = domNode.getAttribute("data-lexical-poll-question");
|
|
31
|
+
const options = domNode.getAttribute("data-lexical-poll-options");
|
|
32
|
+
if (question !== null && options !== null) {
|
|
33
|
+
const node = $createPollNode(question, JSON.parse(options));
|
|
34
|
+
return { node };
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
function parseOptions(json) {
|
|
39
|
+
const options = [];
|
|
40
|
+
if (Array.isArray(json)) {
|
|
41
|
+
for (const row of json) {
|
|
42
|
+
if (row && typeof row.text === "string" && typeof row.uid === "string" && Array.isArray(row.votes) && row.votes.every((v) => typeof v === "string")) {
|
|
43
|
+
options.push(row);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return options;
|
|
48
|
+
}
|
|
49
|
+
var questionState = createState("question", {
|
|
50
|
+
parse: (v) => typeof v === "string" ? v : ""
|
|
51
|
+
});
|
|
52
|
+
var optionsState = createState("options", {
|
|
53
|
+
isEqual: (a, b) => a.length === b.length && JSON.stringify(a) === JSON.stringify(b),
|
|
54
|
+
parse: parseOptions
|
|
55
|
+
});
|
|
56
|
+
var PollNode = class extends DecoratorNode {
|
|
57
|
+
$config() {
|
|
58
|
+
return this.config("poll", {
|
|
59
|
+
extends: DecoratorNode,
|
|
60
|
+
importDOM: buildImportMap({
|
|
61
|
+
span: (domNode) => domNode.getAttribute("data-lexical-poll-question") !== null ? {
|
|
62
|
+
conversion: $convertPollElement,
|
|
63
|
+
priority: 2
|
|
64
|
+
} : null
|
|
65
|
+
}),
|
|
66
|
+
stateConfigs: [
|
|
67
|
+
{ flat: true, stateConfig: questionState },
|
|
68
|
+
{ flat: true, stateConfig: optionsState }
|
|
69
|
+
]
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
getQuestion() {
|
|
73
|
+
return $getState(this, questionState);
|
|
74
|
+
}
|
|
75
|
+
setQuestion(valueOrUpdater) {
|
|
76
|
+
return $setState(this, questionState, valueOrUpdater);
|
|
77
|
+
}
|
|
78
|
+
getOptions() {
|
|
79
|
+
return $getState(this, optionsState);
|
|
80
|
+
}
|
|
81
|
+
setOptions(valueOrUpdater) {
|
|
82
|
+
return $setState(this, optionsState, valueOrUpdater);
|
|
83
|
+
}
|
|
84
|
+
addOption(option) {
|
|
85
|
+
return this.setOptions((options) => [...options, option]);
|
|
86
|
+
}
|
|
87
|
+
deleteOption(option) {
|
|
88
|
+
return this.setOptions((prevOptions) => {
|
|
89
|
+
const index = prevOptions.indexOf(option);
|
|
90
|
+
if (index === -1) {
|
|
91
|
+
return prevOptions;
|
|
92
|
+
}
|
|
93
|
+
const options = Array.from(prevOptions);
|
|
94
|
+
options.splice(index, 1);
|
|
95
|
+
return options;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
setOptionText(option, text) {
|
|
99
|
+
return this.setOptions((prevOptions) => {
|
|
100
|
+
const clonedOption = cloneOption(option, text);
|
|
101
|
+
const options = Array.from(prevOptions);
|
|
102
|
+
const index = options.indexOf(option);
|
|
103
|
+
options[index] = clonedOption;
|
|
104
|
+
return options;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
toggleVote(option, username) {
|
|
108
|
+
return this.setOptions((prevOptions) => {
|
|
109
|
+
const index = prevOptions.indexOf(option);
|
|
110
|
+
if (index === -1) {
|
|
111
|
+
return prevOptions;
|
|
112
|
+
}
|
|
113
|
+
const votes = option.votes;
|
|
114
|
+
const votesClone = Array.from(votes);
|
|
115
|
+
const voteIndex = votes.indexOf(username);
|
|
116
|
+
if (voteIndex === -1) {
|
|
117
|
+
votesClone.push(username);
|
|
118
|
+
} else {
|
|
119
|
+
votesClone.splice(voteIndex, 1);
|
|
120
|
+
}
|
|
121
|
+
const clonedOption = cloneOption(option, option.text, votesClone);
|
|
122
|
+
const options = Array.from(prevOptions);
|
|
123
|
+
options[index] = clonedOption;
|
|
124
|
+
return options;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
exportDOM() {
|
|
128
|
+
const element = document.createElement("span");
|
|
129
|
+
element.setAttribute("data-lexical-poll-question", this.getQuestion());
|
|
130
|
+
element.setAttribute(
|
|
131
|
+
"data-lexical-poll-options",
|
|
132
|
+
JSON.stringify(this.getOptions())
|
|
133
|
+
);
|
|
134
|
+
return { element };
|
|
135
|
+
}
|
|
136
|
+
createDOM() {
|
|
137
|
+
const elem = document.createElement("span");
|
|
138
|
+
elem.style.display = "inline-block";
|
|
139
|
+
return elem;
|
|
140
|
+
}
|
|
141
|
+
updateDOM() {
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
decorate() {
|
|
145
|
+
return /* @__PURE__ */ jsx(
|
|
146
|
+
PollComponent,
|
|
147
|
+
{
|
|
148
|
+
question: this.getQuestion(),
|
|
149
|
+
options: this.getOptions(),
|
|
150
|
+
nodeKey: this.__key
|
|
151
|
+
}
|
|
152
|
+
);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
function $createPollNode(question, options) {
|
|
156
|
+
return new PollNode().setQuestion(question).setOptions(options);
|
|
157
|
+
}
|
|
158
|
+
function $isPollNode(node) {
|
|
159
|
+
return node instanceof PollNode;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export {
|
|
163
|
+
createPollOption,
|
|
164
|
+
PollNode,
|
|
165
|
+
$createPollNode,
|
|
166
|
+
$isPollNode
|
|
167
|
+
};
|
|
168
|
+
//# sourceMappingURL=chunk-35UCX4ZT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/nodes/PollNode.tsx"],"sourcesContent":["/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {JSX} from 'react';\r\n\r\nimport {\r\n $getState,\r\n $setState,\r\n buildImportMap,\r\n createState,\r\n DecoratorNode,\r\n DOMConversionOutput,\r\n DOMExportOutput,\r\n LexicalNode,\r\n SerializedLexicalNode,\r\n Spread,\r\n StateConfigValue,\r\n type StateValueOrUpdater,\r\n} from 'lexical';\r\nimport * as React from 'react';\r\n\r\nexport type Options = ReadonlyArray<Option>;\r\n\r\nexport type Option = Readonly<{\r\n text: string;\r\n uid: string;\r\n votes: Array<string>;\r\n}>;\r\n\r\nconst PollComponent = React.lazy(() => import('./PollComponent'));\r\n\r\nfunction createUID(): string {\r\n return Math.random()\r\n .toString(36)\r\n .replace(/[^a-z]+/g, '')\r\n .substring(0, 5);\r\n}\r\n\r\nexport function createPollOption(text = ''): Option {\r\n return {\r\n text,\r\n uid: createUID(),\r\n votes: [],\r\n };\r\n}\r\n\r\nfunction cloneOption(\r\n option: Option,\r\n text: string,\r\n votes?: Array<string>,\r\n): Option {\r\n return {\r\n text,\r\n uid: option.uid,\r\n votes: votes || Array.from(option.votes),\r\n };\r\n}\r\n\r\nexport type SerializedPollNode = Spread<\r\n {\r\n question: string;\r\n options: Options;\r\n },\r\n SerializedLexicalNode\r\n>;\r\n\r\nfunction $convertPollElement(\r\n domNode: HTMLSpanElement,\r\n): DOMConversionOutput | null {\r\n const question = domNode.getAttribute('data-lexical-poll-question');\r\n const options = domNode.getAttribute('data-lexical-poll-options');\r\n if (question !== null && options !== null) {\r\n const node = $createPollNode(question, JSON.parse(options));\r\n return {node};\r\n }\r\n return null;\r\n}\r\n\r\nfunction parseOptions(json: unknown): Options {\r\n const options = [];\r\n if (Array.isArray(json)) {\r\n for (const row of json) {\r\n if (\r\n row &&\r\n typeof row.text === 'string' &&\r\n typeof row.uid === 'string' &&\r\n Array.isArray(row.votes) &&\r\n row.votes.every((v: unknown) => typeof v === 'string')\r\n ) {\r\n options.push(row);\r\n }\r\n }\r\n }\r\n return options;\r\n}\r\n\r\nconst questionState = createState('question', {\r\n parse: (v) => (typeof v === 'string' ? v : ''),\r\n});\r\nconst optionsState = createState('options', {\r\n isEqual: (a, b) =>\r\n a.length === b.length && JSON.stringify(a) === JSON.stringify(b),\r\n parse: parseOptions,\r\n});\r\n\r\nexport class PollNode extends DecoratorNode<JSX.Element> {\r\n $config() {\r\n return this.config('poll', {\r\n extends: DecoratorNode,\r\n importDOM: buildImportMap({\r\n span: (domNode) =>\r\n domNode.getAttribute('data-lexical-poll-question') !== null\r\n ? {\r\n conversion: $convertPollElement,\r\n priority: 2,\r\n }\r\n : null,\r\n }),\r\n stateConfigs: [\r\n {flat: true, stateConfig: questionState},\r\n {flat: true, stateConfig: optionsState},\r\n ],\r\n });\r\n }\r\n\r\n getQuestion(): StateConfigValue<typeof questionState> {\r\n return $getState(this, questionState);\r\n }\r\n setQuestion(valueOrUpdater: StateValueOrUpdater<typeof questionState>): this {\r\n return $setState(this, questionState, valueOrUpdater);\r\n }\r\n getOptions(): StateConfigValue<typeof optionsState> {\r\n return $getState(this, optionsState);\r\n }\r\n setOptions(valueOrUpdater: StateValueOrUpdater<typeof optionsState>): this {\r\n return $setState(this, optionsState, valueOrUpdater);\r\n }\r\n\r\n addOption(option: Option): this {\r\n return this.setOptions((options) => [...options, option]);\r\n }\r\n\r\n deleteOption(option: Option): this {\r\n return this.setOptions((prevOptions) => {\r\n const index = prevOptions.indexOf(option);\r\n if (index === -1) {\r\n return prevOptions;\r\n }\r\n const options = Array.from(prevOptions);\r\n options.splice(index, 1);\r\n return options;\r\n });\r\n }\r\n\r\n setOptionText(option: Option, text: string): this {\r\n return this.setOptions((prevOptions) => {\r\n const clonedOption = cloneOption(option, text);\r\n const options = Array.from(prevOptions);\r\n const index = options.indexOf(option);\r\n options[index] = clonedOption;\r\n return options;\r\n });\r\n }\r\n\r\n toggleVote(option: Option, username: string): this {\r\n return this.setOptions((prevOptions) => {\r\n const index = prevOptions.indexOf(option);\r\n if (index === -1) {\r\n return prevOptions;\r\n }\r\n const votes = option.votes;\r\n const votesClone = Array.from(votes);\r\n const voteIndex = votes.indexOf(username);\r\n if (voteIndex === -1) {\r\n votesClone.push(username);\r\n } else {\r\n votesClone.splice(voteIndex, 1);\r\n }\r\n const clonedOption = cloneOption(option, option.text, votesClone);\r\n const options = Array.from(prevOptions);\r\n options[index] = clonedOption;\r\n return options;\r\n });\r\n }\r\n\r\n exportDOM(): DOMExportOutput {\r\n const element = document.createElement('span');\r\n element.setAttribute('data-lexical-poll-question', this.getQuestion());\r\n element.setAttribute(\r\n 'data-lexical-poll-options',\r\n JSON.stringify(this.getOptions()),\r\n );\r\n return {element};\r\n }\r\n\r\n createDOM(): HTMLElement {\r\n const elem = document.createElement('span');\r\n elem.style.display = 'inline-block';\r\n return elem;\r\n }\r\n\r\n updateDOM(): false {\r\n return false;\r\n }\r\n\r\n decorate(): JSX.Element {\r\n return (\r\n <PollComponent\r\n question={this.getQuestion()}\r\n options={this.getOptions()}\r\n nodeKey={this.__key}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport function $createPollNode(question: string, options: Options): PollNode {\r\n return new PollNode().setQuestion(question).setOptions(options);\r\n}\r\n\r\nexport function $isPollNode(\r\n node: LexicalNode | null | undefined,\r\n): node is PollNode {\r\n return node instanceof PollNode;\r\n}\r\n"],"mappings":"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","names":[]}
|