mirror of
https://github.com/penpot/penpot.git
synced 2026-02-26 14:23:40 +00:00
Merge remote-tracking branch 'origin/staging-render' into develop
This commit is contained in:
@@ -115,21 +115,25 @@
|
||||
(defn get-frames
|
||||
"Retrieves all frame objects as vector"
|
||||
([objects] (get-frames objects nil))
|
||||
([objects {:keys [skip-components? skip-copies?]
|
||||
([objects {:keys [skip-components? skip-copies? ignore-index?]
|
||||
:or {skip-components? false
|
||||
skip-copies? false}}]
|
||||
(->> (or (-> objects meta ::index-frames)
|
||||
(let [lookup (d/getf objects)
|
||||
xform (comp (remove #(= uuid/zero %))
|
||||
(keep lookup)
|
||||
(filter cfh/frame-shape?))]
|
||||
(->> (keys objects)
|
||||
(sequence xform))))
|
||||
(remove #(or (and ^boolean skip-components?
|
||||
^boolean (ctk/instance-head? %))
|
||||
(and ^boolean skip-copies?
|
||||
(and ^boolean (ctk/instance-head? %)
|
||||
(not ^boolean (ctk/main-instance? %)))))))))
|
||||
skip-copies? false
|
||||
ignore-index? false}}]
|
||||
(let [frame-index
|
||||
(if (and (not ignore-index?) (-> objects meta ::index-frames))
|
||||
(-> objects meta ::index-frames)
|
||||
(let [lookup (d/getf objects)
|
||||
xform (comp (remove #(= uuid/zero %))
|
||||
(keep lookup)
|
||||
(filter cfh/frame-shape?))]
|
||||
(->> (keys objects)
|
||||
(sequence xform))))]
|
||||
(->> frame-index
|
||||
(remove #(or (and ^boolean skip-components?
|
||||
^boolean (ctk/instance-head? %))
|
||||
(and ^boolean skip-copies?
|
||||
(and ^boolean (ctk/instance-head? %)
|
||||
(not ^boolean (ctk/main-instance? %))))))))))
|
||||
|
||||
(defn get-frames-ids
|
||||
"Retrieves all frame ids as vector"
|
||||
|
||||
@@ -242,7 +242,7 @@
|
||||
[{:keys [objects zoom selected focus is-show-artboard-names
|
||||
on-frame-enter on-frame-leave on-frame-select]}]
|
||||
(let [selected (or selected #{})
|
||||
shapes (ctt/get-frames objects {:skip-copies? true})
|
||||
shapes (ctt/get-frames objects {:skip-copies? true :ignore-index? true})
|
||||
shapes (if (dbg/enabled? :shape-titles)
|
||||
(into (set shapes)
|
||||
(map (d/getf objects))
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
[rumext.v2 :as mf])
|
||||
(:import goog.events.EventType))
|
||||
|
||||
(def caret-blink-interval-ms 250)
|
||||
|
||||
(defn- sync-wasm-text-editor-content!
|
||||
"Sync WASM text editor content back to the shape via the standard
|
||||
commit pipeline. Called after every text-modifying input."
|
||||
@@ -54,18 +56,17 @@
|
||||
(.focus node))
|
||||
js/undefined))
|
||||
|
||||
;; Animation loop for cursor blink
|
||||
(mf/use-effect
|
||||
(fn []
|
||||
(let [raf-id (atom nil)
|
||||
animate (fn animate []
|
||||
(when (text-editor/text-editor-is-active?)
|
||||
(wasm.api/request-render "cursor-blink")
|
||||
(reset! raf-id (js/requestAnimationFrame animate))))]
|
||||
(animate)
|
||||
(let [timeout-id (atom nil)
|
||||
schedule-blink (fn schedule-blink []
|
||||
(when (text-editor/text-editor-is-active?)
|
||||
(wasm.api/request-render "cursor-blink"))
|
||||
(reset! timeout-id (js/setTimeout schedule-blink caret-blink-interval-ms)))]
|
||||
(schedule-blink)
|
||||
(fn []
|
||||
(when @raf-id
|
||||
(js/cancelAnimationFrame @raf-id))))))
|
||||
(when @timeout-id
|
||||
(js/clearTimeout @timeout-id))))))
|
||||
|
||||
;; Document-level keydown handler for control keys
|
||||
(mf/use-effect
|
||||
|
||||
@@ -1958,6 +1958,8 @@ export class SelectionController extends EventTarget {
|
||||
this.startOffset === this.endOffset &&
|
||||
this.endOffset === endNode.nodeValue?.length
|
||||
) {
|
||||
const paragraph = this.startParagraph;
|
||||
setParagraphStyles(paragraph, newStyles);
|
||||
const newTextSpan = createVoidTextSpan(newStyles);
|
||||
this.endTextSpan.after(newTextSpan);
|
||||
this.setSelection(newTextSpan.firstChild, 0, newTextSpan.firstChild, 0);
|
||||
|
||||
Reference in New Issue
Block a user