@pitcher/canvas-ui 2026.1.9-133201-beta → 2026.1.9-145245-beta

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/canvas-ui.css CHANGED
@@ -925,25 +925,25 @@ button[data-v-da2357d4]:focus {
925
925
  }.c-users-groups-access-manage__select[data-v-fe2300a1] {
926
926
  width: 180px;
927
927
  }
928
- .panel-title[data-v-aa03fa77] {
929
- color: var(--6fe3245a);
928
+ .panel-title[data-v-05db071e] {
929
+ color: var(--7e857d3a);
930
930
  letter-spacing: 0.15px;
931
931
  }
932
- .base[data-v-aa03fa77] {
933
- background-color: var(--6fdae5fe);
932
+ .base[data-v-05db071e] {
933
+ background-color: var(--7e7d3ede);
934
934
  }
935
- .selection-panel-list-item[data-v-aa03fa77] {
936
- background: var(--85f799be);
935
+ .selection-panel-list-item[data-v-05db071e] {
936
+ background: var(--e1e1c7fe);
937
937
  }
938
- .selection-panel-list-handle[data-v-aa03fa77] {
939
- color: var(--85f799c4);
938
+ .selection-panel-list-handle[data-v-05db071e] {
939
+ color: var(--e1e1c804);
940
940
  }
941
- .title[data-v-aa03fa77] {
942
- color: var(--6fe3245a);
941
+ .title[data-v-05db071e] {
942
+ color: var(--7e857d3a);
943
943
  letter-spacing: 0.4px;
944
944
  }
945
- .description[data-v-aa03fa77] {
946
- color: var(--85f799c4);
945
+ .description[data-v-05db071e] {
946
+ color: var(--e1e1c804);
947
947
  }
948
948
  .content-selector__section-title[data-v-2e7377ec] {
949
949
  font-size: 18px;
@@ -958,7 +958,7 @@ button[data-v-da2357d4]:focus {
958
958
  background-color: var(--49a7913e);
959
959
  }
960
960
 
961
- [data-v-1287b675] .dynamic-value-tree-select__trigger {
961
+ [data-v-ba7b39ff] .dynamic-value-tree-select__trigger {
962
962
  margin-right: -16px;
963
963
  }
964
964
  .ai-preview-container[data-v-2a9cccf6] {
@@ -1604,65 +1604,65 @@ to {
1604
1604
  object-fit: var(--1d3ef4cb);
1605
1605
  height: 100%;
1606
1606
  }
1607
- .canvas-text[data-v-b2424519] p {
1607
+ .canvas-text[data-v-73a884c3] p {
1608
1608
  margin-bottom: 20px;
1609
1609
  }
1610
- [data-v-b2424519] .ProseMirror:focus {
1610
+ [data-v-73a884c3] .ProseMirror:focus {
1611
1611
  outline: none;
1612
1612
  }
1613
- .cb-text-component[data-v-b2424519] p,
1614
- .c-text__rich-text-editor[data-v-b2424519] p,
1615
- .cb-text-component[data-v-b2424519] ol,
1616
- .c-text__rich-text-editor[data-v-b2424519] ol,
1617
- .cb-text-component[data-v-b2424519] ul,
1618
- .c-text__rich-text-editor[data-v-b2424519] ul {
1613
+ .cb-text-component[data-v-73a884c3] p,
1614
+ .c-text__rich-text-editor[data-v-73a884c3] p,
1615
+ .cb-text-component[data-v-73a884c3] ol,
1616
+ .c-text__rich-text-editor[data-v-73a884c3] ol,
1617
+ .cb-text-component[data-v-73a884c3] ul,
1618
+ .c-text__rich-text-editor[data-v-73a884c3] ul {
1619
1619
  margin: 0 0 1em 0;
1620
1620
  min-height: 1.6em;
1621
1621
  }
1622
- .cb-text-component[data-v-b2424519] ol,
1623
- .c-text__rich-text-editor[data-v-b2424519] ol,
1624
- .cb-text-component[data-v-b2424519] ul,
1625
- .c-text__rich-text-editor[data-v-b2424519] ul {
1622
+ .cb-text-component[data-v-73a884c3] ol,
1623
+ .c-text__rich-text-editor[data-v-73a884c3] ol,
1624
+ .cb-text-component[data-v-73a884c3] ul,
1625
+ .c-text__rich-text-editor[data-v-73a884c3] ul {
1626
1626
  padding: 0 0 0 1em;
1627
1627
  }
1628
- .cb-text-component[data-v-b2424519] p:last-of-type,
1629
- .c-text__rich-text-editor[data-v-b2424519] p:last-of-type,
1630
- .cb-text-component[data-v-b2424519] ol:last-of-type,
1631
- .c-text__rich-text-editor[data-v-b2424519] ol:last-of-type,
1632
- .cb-text-component[data-v-b2424519] ul:last-of-type,
1633
- .c-text__rich-text-editor[data-v-b2424519] ul:last-of-type {
1628
+ .cb-text-component[data-v-73a884c3] p:last-of-type,
1629
+ .c-text__rich-text-editor[data-v-73a884c3] p:last-of-type,
1630
+ .cb-text-component[data-v-73a884c3] ol:last-of-type,
1631
+ .c-text__rich-text-editor[data-v-73a884c3] ol:last-of-type,
1632
+ .cb-text-component[data-v-73a884c3] ul:last-of-type,
1633
+ .c-text__rich-text-editor[data-v-73a884c3] ul:last-of-type {
1634
1634
  margin-bottom: 0em;
1635
1635
  }
1636
- .cb-text-component[data-v-b2424519] p:last-of-type + ol,
1637
- .c-text__rich-text-editor[data-v-b2424519] p:last-of-type + ol,
1638
- .cb-text-component[data-v-b2424519] p:last-of-type + ul,
1639
- .c-text__rich-text-editor[data-v-b2424519] p:last-of-type + ul,
1640
- .cb-text-component[data-v-b2424519] ol:last-of-type + p,
1641
- .c-text__rich-text-editor[data-v-b2424519] ol:last-of-type + p,
1642
- .cb-text-component[data-v-b2424519] ol:last-of-type + ul,
1643
- .c-text__rich-text-editor[data-v-b2424519] ol:last-of-type + ul,
1644
- .cb-text-component[data-v-b2424519] ul:last-of-type + p,
1645
- .c-text__rich-text-editor[data-v-b2424519] ul:last-of-type + p,
1646
- .cb-text-component[data-v-b2424519] ul:last-of-type + ol,
1647
- .c-text__rich-text-editor[data-v-b2424519] ul:last-of-type + ol {
1636
+ .cb-text-component[data-v-73a884c3] p:last-of-type + ol,
1637
+ .c-text__rich-text-editor[data-v-73a884c3] p:last-of-type + ol,
1638
+ .cb-text-component[data-v-73a884c3] p:last-of-type + ul,
1639
+ .c-text__rich-text-editor[data-v-73a884c3] p:last-of-type + ul,
1640
+ .cb-text-component[data-v-73a884c3] ol:last-of-type + p,
1641
+ .c-text__rich-text-editor[data-v-73a884c3] ol:last-of-type + p,
1642
+ .cb-text-component[data-v-73a884c3] ol:last-of-type + ul,
1643
+ .c-text__rich-text-editor[data-v-73a884c3] ol:last-of-type + ul,
1644
+ .cb-text-component[data-v-73a884c3] ul:last-of-type + p,
1645
+ .c-text__rich-text-editor[data-v-73a884c3] ul:last-of-type + p,
1646
+ .cb-text-component[data-v-73a884c3] ul:last-of-type + ol,
1647
+ .c-text__rich-text-editor[data-v-73a884c3] ul:last-of-type + ol {
1648
1648
  margin-top: 1em;
1649
1649
  }
1650
- .cb-text-component[data-v-b2424519] ol > li ol,
1651
- .c-text__rich-text-editor[data-v-b2424519] ol > li ol,
1652
- .cb-text-component[data-v-b2424519] ol > li ul,
1653
- .c-text__rich-text-editor[data-v-b2424519] ol > li ul,
1654
- .cb-text-component[data-v-b2424519] ul > li ol,
1655
- .c-text__rich-text-editor[data-v-b2424519] ul > li ol,
1656
- .cb-text-component[data-v-b2424519] ul > li ul,
1657
- .c-text__rich-text-editor[data-v-b2424519] ul > li ul {
1650
+ .cb-text-component[data-v-73a884c3] ol > li ol,
1651
+ .c-text__rich-text-editor[data-v-73a884c3] ol > li ol,
1652
+ .cb-text-component[data-v-73a884c3] ol > li ul,
1653
+ .c-text__rich-text-editor[data-v-73a884c3] ol > li ul,
1654
+ .cb-text-component[data-v-73a884c3] ul > li ol,
1655
+ .c-text__rich-text-editor[data-v-73a884c3] ul > li ol,
1656
+ .cb-text-component[data-v-73a884c3] ul > li ul,
1657
+ .c-text__rich-text-editor[data-v-73a884c3] ul > li ul {
1658
1658
  margin-top: 0 !important;
1659
1659
  }
1660
1660
 
1661
1661
  /* Sortable table styles */
1662
- .canvas-text[data-v-b2424519] .sortable-header {
1662
+ .canvas-text[data-v-73a884c3] .sortable-header {
1663
1663
  position: relative;
1664
1664
  }
1665
- .canvas-text[data-v-b2424519] .sortable-header::after {
1665
+ .canvas-text[data-v-73a884c3] .sortable-header::after {
1666
1666
  content: "";
1667
1667
  position: absolute;
1668
1668
  right: 8px;
@@ -1670,22 +1670,22 @@ to {
1670
1670
  transform: translateY(-50%);
1671
1671
  opacity: 0.5;
1672
1672
  }
1673
- .canvas-text[data-v-b2424519] .sortable-header:hover::after {
1673
+ .canvas-text[data-v-73a884c3] .sortable-header:hover::after {
1674
1674
  content: "↕";
1675
1675
  opacity: 0.7;
1676
1676
  }
1677
- .canvas-text[data-v-b2424519] .sortable-header.sorted-asc::after {
1677
+ .canvas-text[data-v-73a884c3] .sortable-header.sorted-asc::after {
1678
1678
  content: "↑";
1679
1679
  opacity: 1;
1680
1680
  }
1681
- .canvas-text[data-v-b2424519] .sortable-header.sorted-desc::after {
1681
+ .canvas-text[data-v-73a884c3] .sortable-header.sorted-desc::after {
1682
1682
  content: "↓";
1683
1683
  opacity: 1;
1684
1684
  }
1685
- .canvas-text[data-v-b2424519] .sortable-header.sorted-original::after {
1685
+ .canvas-text[data-v-73a884c3] .sortable-header.sorted-original::after {
1686
1686
  content: "";
1687
1687
  }
1688
- .canvas-text[data-v-b2424519] .sortable-header.sorted-original:hover::after {
1688
+ .canvas-text[data-v-73a884c3] .sortable-header.sorted-original:hover::after {
1689
1689
  content: "↕";
1690
1690
  opacity: 0.5;
1691
1691
  }.cb-linkable-settings[data-v-4f5606e1] {
package/canvas-ui.js CHANGED
@@ -120824,7 +120824,7 @@ const _sfc_main$4k = /* @__PURE__ */ defineComponent({
120824
120824
 
120825
120825
  function useCanvasContext() {
120826
120826
  const { activeCanvas, isPrintDisplayMode, builderCache } = useCanvas$1();
120827
- const { getDefaultCrmShape } = useCrmShape();
120827
+ const { crmShape, getDefaultCrmShape } = useCrmShape();
120828
120828
  const myUser = inject(
120829
120829
  "myUser",
120830
120830
  computed(() => null)
@@ -120856,14 +120856,21 @@ function useCanvasContext() {
120856
120856
  builderCache.value[sectionOverrideKey] = mergedCtx;
120857
120857
  return mergedCtx;
120858
120858
  };
120859
- const crmShape = computed(() => getDefaultCrmShape({ myUser: myUser.value }));
120860
- const crmShapeWithSectionCtx = computed(() => {
120859
+ const fullContext = computed(() => {
120861
120860
  const mergedCtx = getSectionCtx();
120862
- return !isEmpty(crmShape.value) ? { ...mergedCtx, ...crmShape.value } : mergedCtx;
120861
+ const defaultShape = getDefaultCrmShape({
120862
+ myUser: myUser.value,
120863
+ showDefault: true
120864
+ });
120865
+ return mergeWith({}, defaultShape, crmShape.value ?? {}, mergedCtx, (_objValue, srcValue) => {
120866
+ if (Array.isArray(srcValue)) {
120867
+ return srcValue;
120868
+ }
120869
+ return void 0;
120870
+ });
120863
120871
  });
120864
120872
  return {
120865
- getSectionCtx,
120866
- crmShapeWithSectionCtx
120873
+ fullContext
120867
120874
  };
120868
120875
  }
120869
120876
 
@@ -120909,10 +120916,10 @@ const _sfc_main$4j = /* @__PURE__ */ defineComponent({
120909
120916
  __name: "SelectionPanel",
120910
120917
  setup(__props) {
120911
120918
  useCssVars((_ctx) => ({
120912
- "6fe3245a": unref(themeVars).text,
120913
- "6fdae5fe": unref(themeVars).base,
120914
- "85f799be": unref(themeVars).primary6,
120915
- "85f799c4": unref(themeVars).primary3
120919
+ "7e857d3a": unref(themeVars).text,
120920
+ "7e7d3ede": unref(themeVars).base,
120921
+ "e1e1c7fe": unref(themeVars).primary6,
120922
+ "e1e1c804": unref(themeVars).primary3
120916
120923
  }));
120917
120924
  const { t } = useI18n();
120918
120925
  const { renderContentType, isFileExpired, isFileExpiring } = useFileDisplayHelpers();
@@ -120934,7 +120941,7 @@ const _sfc_main$4j = /* @__PURE__ */ defineComponent({
120934
120941
  "launchDarkly",
120935
120942
  computed(() => ({}))
120936
120943
  );
120937
- const { crmShapeWithSectionCtx } = useCanvasContext();
120944
+ const { fullContext } = useCanvasContext();
120938
120945
  const isCrmShapeEnabled = computed(() => launchDarkly.value?.enable_crm_shape_for_external_links ?? false);
120939
120946
  const draggableItems = computed({
120940
120947
  get: () => isDragNDropEnabled.value ? addedItems.value : selectedItems.value,
@@ -120949,7 +120956,7 @@ const _sfc_main$4j = /* @__PURE__ */ defineComponent({
120949
120956
  function getParsedUrl(url) {
120950
120957
  if (!url || !isCrmShapeEnabled.value) return url;
120951
120958
  try {
120952
- return renderTemplate(url, crmShapeWithSectionCtx.value);
120959
+ return renderTemplate(url, fullContext.value);
120953
120960
  } catch (error) {
120954
120961
  console.warn("Failed to parse template in external URL, using original URL:", error);
120955
120962
  return url;
@@ -121253,7 +121260,7 @@ const _sfc_main$4j = /* @__PURE__ */ defineComponent({
121253
121260
  }
121254
121261
  });
121255
121262
 
121256
- const SelectionPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4j, [["__scopeId", "data-v-aa03fa77"]]);
121263
+ const SelectionPanel = /* @__PURE__ */ _export_sfc(_sfc_main$4j, [["__scopeId", "data-v-05db071e"]]);
121257
121264
 
121258
121265
  const _hoisted_1$3q = { class: "flex justify-between gap-2 items-center truncate py-1" };
121259
121266
  const _hoisted_2$2z = {
@@ -123785,13 +123792,13 @@ const _sfc_main$45 = /* @__PURE__ */ defineComponent({
123785
123792
  computed(() => ({}))
123786
123793
  );
123787
123794
  const { crmShape } = useCrmShape();
123788
- const { crmShapeWithSectionCtx } = useCanvasContext();
123795
+ const { fullContext } = useCanvasContext();
123789
123796
  const isCrmShapeEnabled = computed(() => launchDarkly.value?.enable_crm_shape_for_external_links ?? false);
123790
123797
  const parsedUrl = computed(() => {
123791
123798
  if (!url.value.trim()) return url.value;
123792
123799
  if (!isCrmShapeEnabled.value) return url.value;
123793
123800
  try {
123794
- return renderTemplate(url.value, crmShapeWithSectionCtx.value);
123801
+ return renderTemplate(url.value, fullContext.value);
123795
123802
  } catch (error) {
123796
123803
  console.error("Error parsing URL template:", error);
123797
123804
  return url.value;
@@ -123897,7 +123904,7 @@ const _sfc_main$45 = /* @__PURE__ */ defineComponent({
123897
123904
  }
123898
123905
  });
123899
123906
 
123900
- const ExternalLinks = /* @__PURE__ */ _export_sfc(_sfc_main$45, [["__scopeId", "data-v-1287b675"]]);
123907
+ const ExternalLinks = /* @__PURE__ */ _export_sfc(_sfc_main$45, [["__scopeId", "data-v-ba7b39ff"]]);
123901
123908
 
123902
123909
  const _hoisted_1$3d = { class: "mr-3 h-full" };
123903
123910
  const _hoisted_2$2m = { class: "flex flex-col gap-3 mb-3" };
@@ -147983,7 +147990,7 @@ const _sfc_main$2i = /* @__PURE__ */ defineComponent({
147983
147990
  } = useCanvas$1();
147984
147991
  const { discardOverridesConfirmationOptions, getComponentOverrides } = useCanvasSectionOverrides();
147985
147992
  const { getDerivedStyleFromFeatureFlags } = useComponentStyle(componentNode);
147986
- const { crmShapeWithSectionCtx } = useCanvasContext();
147993
+ const { fullContext } = useCanvasContext();
147987
147994
  const { setContentSelectorMode } = useContentSelector();
147988
147995
  const confirmation = useConfirmation();
147989
147996
  const themeVars = useThemeVars();
@@ -148136,7 +148143,7 @@ const _sfc_main$2i = /* @__PURE__ */ defineComponent({
148136
148143
  try {
148137
148144
  return {
148138
148145
  ...value,
148139
- external_url: renderTemplate(value.external_url, crmShapeWithSectionCtx.value)
148146
+ external_url: renderTemplate(value.external_url, fullContext.value)
148140
148147
  };
148141
148148
  } catch (error) {
148142
148149
  console.warn("Failed to parse template in external URL, using original URL:", error);
@@ -148654,7 +148661,7 @@ const _sfc_main$2h = /* @__PURE__ */ defineComponent({
148654
148661
  setCanvasMetadata,
148655
148662
  isImpact
148656
148663
  } = useCanvas$1();
148657
- const { crmShapeWithSectionCtx } = useCanvasContext();
148664
+ const { fullContext } = useCanvasContext();
148658
148665
  const { coreRestApiAxios } = useCoreApi();
148659
148666
  const { applyPrintModeToElement } = usePrintMode();
148660
148667
  const { discardOverridesConfirmationOptions, getComponentOverrides } = useCanvasSectionOverrides();
@@ -148711,7 +148718,7 @@ const _sfc_main$2h = /* @__PURE__ */ defineComponent({
148711
148718
  const memoizedModelValue = computed(() => getModelValue(computedTextProps.value.data?.content));
148712
148719
  function getModelValue(value = "") {
148713
148720
  if (!shouldInterpolate.value || !value.trim()) return value;
148714
- return renderTemplate(value, crmShapeWithSectionCtx.value);
148721
+ return renderTemplate(value, fullContext.value);
148715
148722
  }
148716
148723
  const debouncedUpdateNodeData = debounce((data2, nodeId, sectionId) => {
148717
148724
  return updateNodeData(data2, nodeId, sectionId);
@@ -148819,7 +148826,7 @@ const _sfc_main$2h = /* @__PURE__ */ defineComponent({
148819
148826
  );
148820
148827
  applyPrintModeToElement(contentElement.value, () => {
148821
148828
  const content = computedTextProps.value.data?.content || "";
148822
- return shouldInterpolate.value ? renderTemplate(content, crmShapeWithSectionCtx.value) : content;
148829
+ return shouldInterpolate.value ? renderTemplate(content, fullContext.value) : content;
148823
148830
  });
148824
148831
  if (enableScaleContent && spanStyles) {
148825
148832
  setTimeout(() => {
@@ -148931,7 +148938,7 @@ const _sfc_main$2h = /* @__PURE__ */ defineComponent({
148931
148938
  }
148932
148939
  });
148933
148940
 
148934
- const Text = /* @__PURE__ */ _export_sfc(_sfc_main$2h, [["__scopeId", "data-v-b2424519"]]);
148941
+ const Text = /* @__PURE__ */ _export_sfc(_sfc_main$2h, [["__scopeId", "data-v-73a884c3"]]);
148935
148942
 
148936
148943
  const _hoisted_1$1Q = { class: "absolute top-2 right-2 flex items-center gap-1 z-10" };
148937
148944
  const _hoisted_2$1m = { class: "text-xs" };