@juo/blocks 1.4.5 → 1.5.0

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.
@@ -4,7 +4,7 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
4
4
  import { signal, effect, createBlockInstance } from "@juo/blocks";
5
5
  import { reportBlockWarning, reportBlockError } from "./observability.js";
6
6
  import { d, v as subscribeContext, T as ThemeStateContext, E, y as withWrapper, x as n, b as backfillInstanceDefaults, p as isStubDefinition, q as onRegisterBlock } from "./theme-state-D3w_B6gQ.js";
7
- import "./juo-workflow-ZGS5rbZi.js";
7
+ import "./juo-workflow-BcW9QouV.js";
8
8
  class Block extends HTMLElement {
9
9
  constructor() {
10
10
  super();
@@ -269,7 +269,16 @@ function createEditorBridge() {
269
269
  if (!blockWrapper && isEditorUI) {
270
270
  return;
271
271
  }
272
+ if (blockWrapper && isWorkflowPreview) {
273
+ const inOverlay = blockWrapper.closest('juo-extension-root[surface="overlay"]') !== null;
274
+ if (!inOverlay) {
275
+ return;
276
+ }
277
+ }
272
278
  const clickedBlockId = (blockWrapper == null ? void 0 : blockWrapper.getAttribute("data-block-id")) || null;
279
+ if (isWorkflowPreview && !clickedBlockId) {
280
+ return;
281
+ }
273
282
  if (clickedBlockId && clickedBlockId === selectedBlockId.value) {
274
283
  return;
275
284
  }
@@ -397,6 +406,14 @@ function createEditorBridge() {
397
406
  });
398
407
  }
399
408
  const isEditorMode = window.parent !== window;
409
+ const isWorkflowPreview = (() => {
410
+ try {
411
+ const params = new URLSearchParams(window.location.search);
412
+ return params.get("workflow-mode") === "true";
413
+ } catch {
414
+ return false;
415
+ }
416
+ })();
400
417
  let ghostScrollStyleEl = null;
401
418
  let ghostScrollObserver = null;
402
419
  let suppressScrollReport = false;
package/dist/core.js CHANGED
@@ -3,7 +3,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { c as createContext, d, w, r as registerBlock, E, u } from "./theme-state-D3w_B6gQ.js";
5
5
  import { B, C, a, D, S, T, b, e, f, g, h, i, j, k, l, m, n, o, p, q, s, t, v, x, y } from "./theme-state-D3w_B6gQ.js";
6
- import { T as T2, W, c, a as a2, b as b2, g as g2, h as h2 } from "./juo-workflow-ZGS5rbZi.js";
6
+ import { T as T2, W, c, a as a2, b as b2, g as g2, h as h2 } from "./juo-workflow-BcW9QouV.js";
7
7
  import { reportBlockWarning, reportBlockError } from "./observability.js";
8
8
  function createState() {
9
9
  const discountCode = d(null);
@@ -1067,14 +1067,14 @@ const MOCK_FLOWS = {
1067
1067
  ]
1068
1068
  },
1069
1069
  {
1070
- stepId: "step-offer-skip",
1071
- actionType: "offer_skip",
1070
+ stepId: "step-offer-delay",
1071
+ actionType: "offer_delay",
1072
1072
  actionConfig: {
1073
- headline: "Skip next delivery?",
1074
- description: "You can skip your next delivery and resume later."
1073
+ headline: "Delay next delivery?",
1074
+ description: "You can delay your next delivery and resume later."
1075
1075
  },
1076
1076
  availableResponses: [
1077
- { type: "accepted", label: "Skip next delivery" },
1077
+ { type: "accepted", label: "Delay next delivery" },
1078
1078
  { type: "declined", label: "No thanks" }
1079
1079
  ]
1080
1080
  },
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/editor/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAGd,MAAM,YAAY,CAAC;AAWpB,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,UAAU,CACzB,MAAM,GAAG,OAAO,EAChB,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,QAAQ,CAAC,SAAS;IAC1E,KAAK,EAAE,MAAM,CAAC,CAAC;CAChB,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,oBAAoB,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,QAAQ,CAAC,SAAS;IAC5E,OAAO,EAAE,MAAM,CAAC,CAAC;CAClB,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,KAAK;QACxD,WAAW,EAAE,MAAM,IAAI,CAAC;KACzB,CAAC;IACF,mBAAmB,CAAC,QAAQ,GAAG,OAAO,EACpC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CACR,MAAM,EAAE,UAAU,CAChB,kBAAkB,CAAC,QAAQ,CAAC,EAC5B,oBAAoB,CAAC,QAAQ,CAAC,CAC/B,GAAG,IAAI,KACL,IAAI,GACR;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAC/B,iBAAiB,EAAE,CACjB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,MAAM,KACP,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACzC,gBAAgB,EAAE,CAChB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,KAAK,EAAE,KACZ,IAAI,CAAC;IACV,2BAA2B,EAAE,CAC3B,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpC,mBAAmB,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAoajD"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/editor/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAGd,MAAM,YAAY,CAAC;AAWpB,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,MAAM,WAAW,UAAU,CACzB,MAAM,GAAG,OAAO,EAChB,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAElC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,QAAQ,CAAC,SAAS;IAC1E,KAAK,EAAE,MAAM,CAAC,CAAC;CAChB,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,MAAM,oBAAoB,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,QAAQ,CAAC,SAAS;IAC5E,OAAO,EAAE,MAAM,CAAC,CAAC;CAClB,GACG,CAAC,GACD,KAAK,CAAC;AAEV,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,KAAK;QACxD,WAAW,EAAE,MAAM,IAAI,CAAC;KACzB,CAAC;IACF,mBAAmB,CAAC,QAAQ,GAAG,OAAO,EACpC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CACR,MAAM,EAAE,UAAU,CAChB,kBAAkB,CAAC,QAAQ,CAAC,EAC5B,oBAAoB,CAAC,QAAQ,CAAC,CAC/B,GAAG,IAAI,KACL,IAAI,GACR;QAAE,WAAW,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAC/B,iBAAiB,EAAE,CACjB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,MAAM,KACP,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACzC,gBAAgB,EAAE,CAChB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,KAAK,EAAE,KACZ,IAAI,CAAC;IACV,2BAA2B,EAAE,CAC3B,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpC,mBAAmB,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAgcjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/editor/components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAgJ9C,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,uBAAuB,CAA0C;IAEzE,MAAM,KAAK,kBAAkB,aAE5B;;IASD,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IA0ErB,iBAAiB;IAWjB,oBAAoB;IAUpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,SAAS;IAWjB,QAAQ,CAAC,KAAK,EAAE,aAAa;IAQ7B,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;CAmD1B;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,YAAY,CAAC;KAC1C;CACF"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/editor/components.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AA6O9C,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,uBAAuB,CAA0C;IAEzE,MAAM,KAAK,kBAAkB,aAE5B;;IASD,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IAiFrB,iBAAiB;IA+BjB,oBAAoB;IAUpB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,QAAQ;IAahB,OAAO,CAAC,SAAS;IAWjB,QAAQ,CAAC,KAAK,EAAE,aAAa;IAQ7B,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;CAmD1B;AAMD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,0BAA0B,EAAE,YAAY,CAAC;KAC1C;CACF"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=components.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.test.d.ts","sourceRoot":"","sources":["../../src/editor/components.test.ts"],"names":[],"mappings":"AAEA,OAAO,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/editor/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,aAAa,EAGnB,MAAM,aAAa,CAAC;AAQrB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAiD7B;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAC7D,OAAO,CAAC,MAAM,IAAI,CAAC,CAiCrB"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/editor/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,aAAa,EAGnB,MAAM,aAAa,CAAC;AAQrB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAoD7B;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE;IAAE,aAAa,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GAC7D,OAAO,CAAC,MAAM,IAAI,CAAC,CA+CrB"}
package/dist/editor.js CHANGED
@@ -1,9 +1,9 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { getDefinedBlocks, onRegisterBlock } from "@juo/blocks";
5
- import { a as createEditorBridge, f as createRemoveBlockMessage, g as createRegisterBlocksMessage, h as createRegisterRoutesMessage } from "./bridge-B8cVa2-2.js";
6
- import { i, b, j, k, l, m, n, c, o, p, q, r, s, e, t, u, v, w, d, x, y, z, A } from "./bridge-B8cVa2-2.js";
4
+ import { onRegisterBlock, getDefinedBlocks } from "@juo/blocks";
5
+ import { a as createEditorBridge, f as createRemoveBlockMessage, g as createRegisterBlocksMessage, h as createRegisterRoutesMessage } from "./bridge-BUMnj_Y5.js";
6
+ import { i, b, j, k, l, m, n, c, o, p, q, r, s, e, t, u, v, w, d, x, y, z, A } from "./bridge-BUMnj_Y5.js";
7
7
  import { g as createBlockInstanceFromObject, n as indexOverrides } from "./theme-state-D3w_B6gQ.js";
8
8
  function createEditorHandler(options) {
9
9
  const { themeState, onBlockSelection } = options;
@@ -293,32 +293,126 @@ function createEditorHandler(options) {
293
293
  }
294
294
  const styles = `
295
295
  <style>
296
+ :host {
297
+ display: block;
298
+ position: relative;
299
+ }
300
+
296
301
  .block-wrapper {
297
302
  position: relative;
298
- padding: 12px;
299
- background-color: white;
300
- border: 1px solid #B5B5B5;
301
- border-radius: 8px;
302
303
  box-sizing: border-box;
303
304
  }
304
305
 
305
- .block-wrapper:hover,
306
- .block-wrapper.active {
307
- border-color: #000000;
306
+ :host(:hover:not(.active)) .block-wrapper {
307
+ outline: 1px dashed #060606;
308
+ /* 4px gap between the block content and the dashed outline so the
309
+ * outline reads as a hover affordance rather than a touching border.
310
+ * Outline doesn't participate in layout, so this stays layout-neutral. */
311
+ outline-offset: 4px;
308
312
  }
309
313
 
310
- .block-wrapper__name {
314
+ /*
315
+ * Stacking model for the active state (no negative z-index, no isolation):
316
+ * - .block-wrapper__chrome z-index: 100 → visual frame above neighbours
317
+ * and any in-block UI that
318
+ * creates its own stacking
319
+ * context (overlays, sticky
320
+ * headers, etc.)
321
+ * - .block-wrapper__slot-host z-index: 101 → block content above chrome bg
322
+ * so blocks without their own
323
+ * background stay visible
324
+ * - .block-wrapper__name z-index: 102 → title bar above everything,
325
+ * always clickable
326
+ *
327
+ * IMPORTANT: every z-index here is scoped to :host(.active). Otherwise
328
+ * inactive sibling wrappers' slot-host (z-index: 101) would create
329
+ * stacking contexts at root level and paint *above* the active wrapper's
330
+ * chrome (z-index: 100), hiding it. Scoping ensures only the active
331
+ * wrapper participates in this stacking layer.
332
+ * Neighbouring wrappers stay at default (auto / 0) and naturally sit below.
333
+ */
334
+
335
+ /*
336
+ * Active-mode chrome — a card frame that visually wraps the block
337
+ * (white bg, gray border, drop shadow, padding around the block, and
338
+ * room at the top for the title bar). Drawn as a position:absolute
339
+ * overlay extending beyond the wrapper bounds so adjacent blocks are
340
+ * never pushed (it overlays them with the shadow effect instead).
341
+ */
342
+ .block-wrapper__chrome {
343
+ display: none;
344
+ position: absolute;
345
+ /* Top extends 44px above the block to fit a 12px / 20px / 12px stack:
346
+ * 12px gap, 20px title bar, 12px gap to the block. Sides + bottom keep
347
+ * the original 12px gap around the block. */
348
+ top: -44px;
349
+ left: -12px;
350
+ right: -12px;
351
+ bottom: -12px;
352
+ background: #ffffff;
353
+ border: 0.5px solid #b5b5b5;
354
+ border-radius: 6px;
355
+ box-shadow: 0 0 14px 0 rgba(0, 0, 0, 0.10);
356
+ /* No pointer-events: none here — otherwise clicks on the chrome's
357
+ * overflow padding (the 12px ring around the block and the 44px
358
+ * title-bar strip above it) would fall through to whatever's behind:
359
+ * a sibling wrapper (re-targeting selection) or empty body
360
+ * (deselecting the current block). Block content still receives
361
+ * clicks because slot-host (z-index: 101) paints above the chrome
362
+ * (z-index: 100), and the title bar wins via its own z-index: 102. */
363
+ }
364
+
365
+ :host(.active) .block-wrapper__chrome {
366
+ display: block;
367
+ z-index: 100;
368
+ }
369
+
370
+ /*
371
+ * Wraps the slotted block content. Stays as a plain in-flow div when
372
+ * inactive (no stacking context). Only when the host is .active do we
373
+ * promote it to z-index: 101 so block content paints above the chrome's
374
+ * white fill. Without this scoping, every inactive neighbour's slot-host
375
+ * would also be at z-index: 101 and would cover the active chrome.
376
+ */
377
+ :host(.active) .block-wrapper__slot-host {
311
378
  position: relative;
312
- display: flex;
313
- justify-content: space-between;
379
+ z-index: 101;
380
+ }
381
+
382
+ /*
383
+ * Title bar lives in the top region of the chrome with symmetric 12px
384
+ * padding from every chrome edge it touches and from the block:
385
+ * - top: -32 → 12px below chrome's top edge (-44),
386
+ * 12px above the block (height: 20 → bottom at -12)
387
+ * - left/right: 0 → 12px inside chrome's -12 left/right edges,
388
+ * visually flush with the block's horizontal edges
389
+ */
390
+ .block-wrapper__name {
391
+ position: absolute;
392
+ top: -32px;
393
+ left: 0;
394
+ right: 0;
395
+ display: none;
314
396
  align-items: center;
315
- gap: 6.82px;
316
- margin-bottom: 12px;
397
+ gap: 7px;
317
398
  font-size: 12px;
318
399
  font-weight: 500;
319
- color: #8A8A8A;
400
+ color: #8a8a8a;
320
401
  line-height: 100%;
321
- height: 15px
402
+ height: 20px;
403
+ box-sizing: border-box;
404
+ white-space: nowrap;
405
+ pointer-events: auto;
406
+ }
407
+
408
+ :host(.active) .block-wrapper__name {
409
+ display: flex;
410
+ z-index: 102;
411
+ }
412
+
413
+ .block-wrapper__icon {
414
+ display: inline-flex;
415
+ align-items: center;
322
416
  }
323
417
 
324
418
  .block-wrapper__actions {
@@ -326,7 +420,7 @@ const styles = `
326
420
  align-items: center;
327
421
  justify-content: flex-end;
328
422
  height: 100%;
329
- flex-grow: 1;
423
+ margin-left: auto;
330
424
  }
331
425
 
332
426
  .block-wrapper__actions button {
@@ -347,7 +441,6 @@ const styles = `
347
441
  color: #8A8A8A;
348
442
  }
349
443
 
350
-
351
444
  .block-wrapper__menu {
352
445
  display: none;
353
446
  position: absolute;
@@ -451,6 +544,8 @@ class BlockWrapper extends HTMLElement {
451
544
  setupTemplate() {
452
545
  const wrapper = document.createElement("div");
453
546
  wrapper.className = "block-wrapper";
547
+ const chrome = document.createElement("div");
548
+ chrome.className = "block-wrapper__chrome";
454
549
  const nameDiv = document.createElement("div");
455
550
  nameDiv.className = "block-wrapper__name";
456
551
  const iconContainer = document.createElement("div");
@@ -493,9 +588,13 @@ class BlockWrapper extends HTMLElement {
493
588
  nameDiv.appendChild(nameSpan);
494
589
  nameDiv.appendChild(actionsDiv);
495
590
  nameDiv.appendChild(menuEl);
591
+ wrapper.appendChild(chrome);
496
592
  wrapper.appendChild(nameDiv);
593
+ const slotHost = document.createElement("div");
594
+ slotHost.className = "block-wrapper__slot-host";
497
595
  const slot = document.createElement("slot");
498
- wrapper.appendChild(slot);
596
+ slotHost.appendChild(slot);
597
+ wrapper.appendChild(slotHost);
499
598
  this.shadowRoot.appendChild(wrapper);
500
599
  this.nameElement = nameSpan;
501
600
  this.menuElement = menuEl;
@@ -509,10 +608,25 @@ class BlockWrapper extends HTMLElement {
509
608
  connectedCallback() {
510
609
  const isInOverlay = this.closest('juo-extension-root[surface="overlay"]') !== null;
511
610
  if (isInOverlay) {
512
- const actions = this.shadowRoot.querySelector(
513
- ".block-wrapper__actions"
611
+ const name = this.shadowRoot.querySelector(
612
+ ".block-wrapper__name"
613
+ );
614
+ if (name) name.style.visibility = "hidden";
615
+ const deleteBtn = this.shadowRoot.querySelector(
616
+ ".block-wrapper__menu-item--danger"
514
617
  );
515
- if (actions) actions.style.visibility = "hidden";
618
+ if (deleteBtn) deleteBtn.style.display = "none";
619
+ }
620
+ const isWorkflowPreview = (() => {
621
+ try {
622
+ const params = new URLSearchParams(window.location.search);
623
+ return params.get("workflow-mode") === "true";
624
+ } catch {
625
+ return false;
626
+ }
627
+ })();
628
+ if (isWorkflowPreview && !isInOverlay) {
629
+ this.style.pointerEvents = "none";
516
630
  }
517
631
  }
518
632
  disconnectedCallback() {
@@ -553,14 +667,11 @@ class BlockWrapper extends HTMLElement {
553
667
  }
554
668
  }
555
669
  updateActiveState(isActive) {
556
- const wrapper = this.shadowRoot.querySelector(
557
- ".block-wrapper"
558
- );
559
- if (!wrapper) return;
560
670
  if (isActive) {
561
- wrapper.classList.add("active");
671
+ this.classList.add("active");
562
672
  } else {
563
- wrapper.classList.remove("active");
673
+ this.classList.remove("active");
674
+ this.closeMenu();
564
675
  }
565
676
  }
566
677
  /**
@@ -651,8 +762,12 @@ async function serializeBlock(block) {
651
762
  locales
652
763
  };
653
764
  }
765
+ const EDITOR_BODY_TOP_PADDING_PX = 32;
654
766
  async function setupEditorMode(deps) {
655
767
  const { routerService, themeState } = deps;
768
+ const padStyle = document.createElement("style");
769
+ padStyle.textContent = `body { padding-top: ${EDITOR_BODY_TOP_PADDING_PX}px; }`;
770
+ document.head.appendChild(padStyle);
656
771
  const editor = createEditorBridge();
657
772
  const handler = createEditorHandler({
658
773
  themeState
@@ -663,10 +778,7 @@ async function setupEditorMode(deps) {
663
778
  const routes = Object.fromEntries(
664
779
  routerService.getPages().map((p2) => [p2.path, { block: p2.block, title: p2.title }])
665
780
  );
666
- const blocks = await Promise.all(getDefinedBlocks().map(serializeBlock));
667
- editor.sendMessage(createRegisterBlocksMessage({ blocks }));
668
- editor.sendMessage(createRegisterRoutesMessage({ routes }));
669
- onRegisterBlock((_, block) => {
781
+ const unsubscribeRegister = onRegisterBlock((_, block) => {
670
782
  void serializeBlock(block).then(
671
783
  (serialized) => editor.sendMessage(
672
784
  createRegisterBlocksMessage({
@@ -675,7 +787,12 @@ async function setupEditorMode(deps) {
675
787
  )
676
788
  );
677
789
  });
790
+ const blocks = await Promise.all(getDefinedBlocks().map(serializeBlock));
791
+ editor.sendMessage(createRegisterBlocksMessage({ blocks }));
792
+ editor.sendMessage(createRegisterRoutesMessage({ routes }));
678
793
  return () => {
794
+ padStyle.remove();
795
+ unsubscribeRegister();
679
796
  unsubscribe();
680
797
  editor.destroy();
681
798
  };
@@ -74,6 +74,8 @@ export interface WorkflowState {
74
74
  /** Persisted completion metadata: outcome and the End node reached. */
75
75
  completionData: WorkflowCompletionData | null;
76
76
  dryRun: boolean | null;
77
+ /** Label of the first poll response submitted in this flow run. */
78
+ firstPollReason: string | null;
77
79
  }
78
80
  /** Available steps metadata (for rendering and editor) */
79
81
  export interface WorkflowStepInfo {
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowService.d.ts","sourceRoot":"","sources":["../../src/flows/WorkflowService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkflowService.d.ts","sourceRoot":"","sources":["../../src/flows/WorkflowService.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { c as createContext, d, E, m as getDefinedBlocks, e as createBlockInstance, w, r as registerBlock, k as defineBlock, v as subscribeContext } from "./theme-state-D3w_B6gQ.js";
5
- import { a as createEditorBridge, e as createSelectBlockMessage } from "./bridge-B8cVa2-2.js";
5
+ import { a as createEditorBridge, e as createSelectBlockMessage } from "./bridge-BUMnj_Y5.js";
6
6
  const TranslationContext = createContext("translation");
7
7
  function toStringRecord(input) {
8
8
  if (input == null) return {};
@@ -131,7 +131,8 @@ function createWorkflowService(deps) {
131
131
  invalidatedResources: [],
132
132
  outcome: null,
133
133
  completionData: null,
134
- dryRun: null
134
+ dryRun: null,
135
+ firstPollReason: null
135
136
  });
136
137
  const _backendInteractionId = d(null);
137
138
  const _registeredRootBlocks = /* @__PURE__ */ new Set();
@@ -239,7 +240,8 @@ function createWorkflowService(deps) {
239
240
  result: null,
240
241
  invalidatedResources: [],
241
242
  outcome: null,
242
- completionData: null
243
+ completionData: null,
244
+ firstPollReason: null
243
245
  });
244
246
  }
245
247
  }
@@ -376,7 +378,8 @@ function createWorkflowService(deps) {
376
378
  error: null,
377
379
  flowParams: context,
378
380
  flowType,
379
- dryRun: isDryRun
381
+ dryRun: isDryRun,
382
+ firstPollReason: null
380
383
  });
381
384
  try {
382
385
  const data = await api.start(
@@ -423,6 +426,12 @@ function createWorkflowService(deps) {
423
426
  responseData,
424
427
  runVersion ?? void 0
425
428
  );
429
+ if (_state.value.firstPollReason == null && currentInteraction2.actionType === "poll") {
430
+ const reason = responseData == null ? void 0 : responseData.reason;
431
+ if (typeof reason === "string" && reason.length > 0) {
432
+ updateState({ firstPollReason: reason });
433
+ }
434
+ }
426
435
  handleFlowResponse(data);
427
436
  } catch (error) {
428
437
  handleError(error);
@@ -474,7 +483,8 @@ function createWorkflowService(deps) {
474
483
  flowParams: null,
475
484
  invalidatedResources: [],
476
485
  outcome: null,
477
- completionData: null
486
+ completionData: null,
487
+ firstPollReason: null
478
488
  });
479
489
  },
480
490
  async refresh() {
package/dist/preact.js CHANGED
@@ -6,7 +6,7 @@ import { useState, useRef, useEffect, useContext as useContext$1, useMemo } from
6
6
  import { g as getSignalValue, s as setSignalValue, w as wrapContext, c as createSlotChildren } from "./block-VhmfGB3N.js";
7
7
  import { t } from "./block-VhmfGB3N.js";
8
8
  import { createContext, h, render } from "preact";
9
- import { a as createEditorBridge } from "./bridge-B8cVa2-2.js";
9
+ import { a as createEditorBridge } from "./bridge-BUMnj_Y5.js";
10
10
  function toState(signal) {
11
11
  const [value, setValue] = useState(() => getSignalValue(signal));
12
12
  const disposeRef = useRef(null);
package/dist/react.js CHANGED
@@ -6,7 +6,7 @@ import React, { useSyncExternalStore, createContext, useState, useContext as use
6
6
  import { g as getSignalValue, s as setSignalValue, w as wrapContext, c as createSlotChildren } from "./block-VhmfGB3N.js";
7
7
  import { t } from "./block-VhmfGB3N.js";
8
8
  import { createRoot } from "react-dom/client";
9
- import { a as createEditorBridge } from "./bridge-B8cVa2-2.js";
9
+ import { a as createEditorBridge } from "./bridge-BUMnj_Y5.js";
10
10
  function toState(signal) {
11
11
  const subscribe = (callback) => {
12
12
  const dispose = effect(() => {
package/dist/vue.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { customRef, toValue, watchEffect, defineComponent, ref, getCurrentInstance, onMounted, provide, h, renderSlot, inject, computed, useHost, defineCustomElement, triggerRef, render, shallowRef } from "vue";
2
2
  import { effect, signal, injectContext, provideContext, createCeRenderer } from "@juo/blocks";
3
- import { c as createRegisterBlockTranslationKeysMessage, a as createEditorBridge } from "./bridge-B8cVa2-2.js";
3
+ import { c as createRegisterBlockTranslationKeysMessage, a as createEditorBridge } from "./bridge-BUMnj_Y5.js";
4
4
  const signalsMap = /* @__PURE__ */ new WeakMap();
5
5
  function toSignal(ref2) {
6
6
  if (!signalsMap.has(ref2)) {
@@ -2,9 +2,9 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { o as injectContext, E, z as ContextRoot } from "./theme-state-D3w_B6gQ.js";
5
- import { E as ExtensionRoot, B as Block } from "./ExtensionRoot-CoDMQ-Gw.js";
6
- import { a as createEditorBridge, b as createFocusInlineTextMessage, d as createUpdateBlockTranslationMessage } from "./bridge-B8cVa2-2.js";
7
- import { T as TranslationContext } from "./juo-workflow-ZGS5rbZi.js";
5
+ import { E as ExtensionRoot, B as Block } from "./ExtensionRoot-BjAZAQ-b.js";
6
+ import { a as createEditorBridge, b as createFocusInlineTextMessage, d as createUpdateBlockTranslationMessage } from "./bridge-BUMnj_Y5.js";
7
+ import { T as TranslationContext } from "./juo-workflow-BcW9QouV.js";
8
8
  const _InlineText = class _InlineText extends HTMLElement {
9
9
  constructor() {
10
10
  super();
@@ -2,8 +2,8 @@ var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
  import { o as injectContext, E, z as ContextRoot } from "./theme-state-D3w_B6gQ.js";
5
- import { E as ExtensionRoot, B as Block } from "./ExtensionRoot-CoDMQ-Gw.js";
6
- import { T as TranslationContext } from "./juo-workflow-ZGS5rbZi.js";
5
+ import { E as ExtensionRoot, B as Block } from "./ExtensionRoot-BjAZAQ-b.js";
6
+ import { T as TranslationContext } from "./juo-workflow-BcW9QouV.js";
7
7
  class InlineText extends HTMLElement {
8
8
  constructor() {
9
9
  super(...arguments);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@juo/blocks",
3
3
  "private": false,
4
- "version": "1.4.5",
4
+ "version": "1.5.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"