@accelerated-agency/visual-editor 0.5.8 → 0.6.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.
Files changed (3) hide show
  1. package/dist/vite.cjs +50 -37
  2. package/dist/vite.js +50 -37
  3. package/package.json +1 -1
package/dist/vite.cjs CHANGED
@@ -1039,24 +1039,16 @@ button.var-tab.active{
1039
1039
  .lp-body #tab-dom-tree, .lp-body #tab-elements{
1040
1040
  padding-top:4px;
1041
1041
  }
1042
- .lp-body #tab-elements .dt-lbl{
1043
- font-size: 12px;
1044
- font-style: normal;
1045
- font-weight: 500;
1046
- line-height: 14px;
1047
- letter-spacing: -0.1px;
1048
- }
1049
- .lp-body #tab-elements #elements-root > .dt-row{
1050
- padding-left: 16px!important;
1051
- }
1052
- .lp-body #dom-tree-root .dt-lbl{
1042
+ .lp-body #dom-tree-root .dt-lbl,
1043
+ .lp-body #elements-root .dt-lbl{
1053
1044
  color: var(--content-subtle, #737373);
1054
1045
  font-style: normal;
1055
1046
  font-weight: 400;
1056
- line-height: var(--font-leading-3, 12px); /* 100% */
1047
+ line-height: var(--font-leading-3, 12px);
1057
1048
  letter-spacing: -0.1px;
1058
1049
  }
1059
- .lp-body #dom-tree-root .dt-lbl .dt-tag{
1050
+ .lp-body #dom-tree-root .dt-lbl .dt-tag,
1051
+ .lp-body #elements-root .dt-lbl .dt-tag{
1060
1052
  color: var(--content-strong, #171717);
1061
1053
  font-family: "JetBrains Mono";
1062
1054
  font-size: 12px;
@@ -1070,7 +1062,6 @@ padding:3px 6px;
1070
1062
  display:inline-block;
1071
1063
  margin-right:4px;
1072
1064
  }
1073
- .lp-body #tab-elements .dt-row .dt-chev.dt-spacer{display:none;}
1074
1065
  .lp-body #tab-dom-tree .dt-row .dt-ico{display:none;}
1075
1066
  .lp-body, .section-components-body{flex:1;overflow-y:auto}
1076
1067
  .lp-body::-webkit-scrollbar, .section-components-body::-webkit-scrollbar{width:3px}
@@ -2794,6 +2785,18 @@ function setUrlBarValue(pageUrl) {
2794
2785
  urlBar.title = val || 'Enter a page URL and press Enter';
2795
2786
  }
2796
2787
 
2788
+ /** Keep experimentData.pageUrl and #url-bar in sync when the preview iframe navigates. */
2789
+ function applyUrlBarFromIframeUrl(pageUrl) {
2790
+ if (!pageUrl) return;
2791
+ var normalized = String(pageUrl);
2792
+ if (experimentData) {
2793
+ experimentData = Object.assign({}, experimentData, { pageUrl: normalized });
2794
+ } else {
2795
+ experimentData = { pageUrl: normalized };
2796
+ }
2797
+ setUrlBarValue(normalized);
2798
+ }
2799
+
2797
2800
  function normalizeUserPageUrl(raw) {
2798
2801
  var s = String(raw || '').trim();
2799
2802
  if (!s) return '';
@@ -2879,7 +2882,9 @@ function bindUrlBar() {
2879
2882
  });
2880
2883
  urlBar.addEventListener('blur', function() {
2881
2884
  var canonical = experimentData && experimentData.pageUrl ? String(experimentData.pageUrl) : '';
2882
- if (canonical && urlBar.value.trim() !== canonical) urlBar.value = canonical;
2885
+ if (canonical && urlBar.value.trim() !== canonical) {
2886
+ setUrlBarValue(canonical);
2887
+ }
2883
2888
  });
2884
2889
  }
2885
2890
 
@@ -4674,15 +4679,10 @@ function parseEditorUrlPayload(rawUrl) {
4674
4679
  var lastEditorUrlPayloadKey = '';
4675
4680
  function emitEditorUrlChangedPayload(payload) {
4676
4681
  if (!payload) return;
4682
+ if (payload.url) applyUrlBarFromIframeUrl(payload.url);
4677
4683
  var key = String(payload.url || '') + '|' + String(payload.password || '');
4678
4684
  if (key === lastEditorUrlPayloadKey) return;
4679
4685
  lastEditorUrlPayloadKey = key;
4680
- try {
4681
- console.info('[V2 iframe-url]', {
4682
- url: payload.url || '',
4683
- passwordPresent: !!payload.password,
4684
- });
4685
- } catch(_) {}
4686
4686
  send('editor-url-changed', payload);
4687
4687
  }
4688
4688
  function emitEditorUrlChanged(rawUrl) {
@@ -6191,17 +6191,12 @@ function renderElementsTree(filterRaw) {
6191
6191
  return 'bi bi-square';
6192
6192
  }
6193
6193
 
6194
- function labelFor(el) {
6195
- var tag = (el.tagName || '').toLowerCase();
6196
- return tag.toUpperCase();
6197
- }
6198
-
6199
6194
  var nodes = collectEditorInsertedElements(doc);
6200
6195
 
6201
6196
  root.innerHTML = '';
6202
6197
  for (var i = 0; i < nodes.length; i++) {
6203
6198
  var el = nodes[i];
6204
- var lblText = labelFor(el);
6199
+ var lblText = domTreeLabelFor(el);
6205
6200
  if (filterText && lblText.toLowerCase().indexOf(filterText) < 0) continue;
6206
6201
 
6207
6202
  var row = document.createElement('div');
@@ -6220,7 +6215,7 @@ function renderElementsTree(filterRaw) {
6220
6215
 
6221
6216
  var lbl = document.createElement('div');
6222
6217
  lbl.className = 'dt-lbl';
6223
- lbl.textContent = lblText;
6218
+ setDomTreeLabelContent(lbl, el);
6224
6219
  lbl.title = buildSelector(el);
6225
6220
 
6226
6221
  row.appendChild(spacer);
@@ -6245,11 +6240,35 @@ function renderElementsTree(filterRaw) {
6245
6240
  };
6246
6241
  }
6247
6242
 
6243
+ function domTreeLabelClassExcluded(className) {
6244
+ var c = String(className || '');
6245
+ return !c || c === 'vve-selected' || c === 'vve-tree-hover' || c.indexOf('vve-') === 0;
6246
+ }
6247
+
6248
+ function domTreeLabelClassString(el) {
6249
+ if (!el) return '';
6250
+ try {
6251
+ if (el.classList && el.classList.length) {
6252
+ var out = [];
6253
+ for (var i = 0; i < el.classList.length; i++) {
6254
+ var cls = el.classList[i];
6255
+ if (!domTreeLabelClassExcluded(cls)) out.push(cls);
6256
+ }
6257
+ return out.join(' ');
6258
+ }
6259
+ } catch(_) {}
6260
+ var cn = el.className;
6261
+ if (cn && typeof cn === 'object' && cn.baseVal != null) cn = String(cn.baseVal);
6262
+ return typeof cn === 'string' ? cn : '';
6263
+ }
6264
+
6248
6265
  function domTreeLabelSuffix(el) {
6249
6266
  if (el.id != null && el.id !== '') return '#' + String(el.id).slice(0, 40);
6250
- var cn = el.className && typeof el.className === 'string' ? el.className.trim() : '';
6267
+ var cn = domTreeLabelClassString(el).trim();
6251
6268
  if (cn) {
6252
- var parts = cn.split(/s+/).filter(function(x) { return x.indexOf('vve-') !== 0; }).slice(0, 2).join('.');
6269
+ var parts = cn.split(/s+/).filter(function(x) {
6270
+ return x && !domTreeLabelClassExcluded(x);
6271
+ }).slice(0, 2).join('.');
6253
6272
  if (parts) return '.' + parts.slice(0, 56);
6254
6273
  }
6255
6274
  return '';
@@ -8202,14 +8221,8 @@ window.addEventListener('load', function() {
8202
8221
  try {
8203
8222
  var d = ev && ev.data;
8204
8223
  if (!d || d.channel !== 'vvveb-proxy-url' || d.type !== 'editor-url-changed') return;
8205
- if (!iframe || !iframe.contentWindow || ev.source !== iframe.contentWindow) return;
8206
8224
  var payload = d.payload || {};
8207
- try {
8208
- console.info('[V2 iframe-url bridge]', {
8209
- url: payload.url || '',
8210
- passwordPresent: !!payload.password,
8211
- });
8212
- } catch(_) {}
8225
+ if (payload.url) applyUrlBarFromIframeUrl(payload.url);
8213
8226
  emitEditorUrlChangedPayload({
8214
8227
  url: payload.url || undefined,
8215
8228
  password: payload.password || undefined,
package/dist/vite.js CHANGED
@@ -1031,24 +1031,16 @@ button.var-tab.active{
1031
1031
  .lp-body #tab-dom-tree, .lp-body #tab-elements{
1032
1032
  padding-top:4px;
1033
1033
  }
1034
- .lp-body #tab-elements .dt-lbl{
1035
- font-size: 12px;
1036
- font-style: normal;
1037
- font-weight: 500;
1038
- line-height: 14px;
1039
- letter-spacing: -0.1px;
1040
- }
1041
- .lp-body #tab-elements #elements-root > .dt-row{
1042
- padding-left: 16px!important;
1043
- }
1044
- .lp-body #dom-tree-root .dt-lbl{
1034
+ .lp-body #dom-tree-root .dt-lbl,
1035
+ .lp-body #elements-root .dt-lbl{
1045
1036
  color: var(--content-subtle, #737373);
1046
1037
  font-style: normal;
1047
1038
  font-weight: 400;
1048
- line-height: var(--font-leading-3, 12px); /* 100% */
1039
+ line-height: var(--font-leading-3, 12px);
1049
1040
  letter-spacing: -0.1px;
1050
1041
  }
1051
- .lp-body #dom-tree-root .dt-lbl .dt-tag{
1042
+ .lp-body #dom-tree-root .dt-lbl .dt-tag,
1043
+ .lp-body #elements-root .dt-lbl .dt-tag{
1052
1044
  color: var(--content-strong, #171717);
1053
1045
  font-family: "JetBrains Mono";
1054
1046
  font-size: 12px;
@@ -1062,7 +1054,6 @@ padding:3px 6px;
1062
1054
  display:inline-block;
1063
1055
  margin-right:4px;
1064
1056
  }
1065
- .lp-body #tab-elements .dt-row .dt-chev.dt-spacer{display:none;}
1066
1057
  .lp-body #tab-dom-tree .dt-row .dt-ico{display:none;}
1067
1058
  .lp-body, .section-components-body{flex:1;overflow-y:auto}
1068
1059
  .lp-body::-webkit-scrollbar, .section-components-body::-webkit-scrollbar{width:3px}
@@ -2786,6 +2777,18 @@ function setUrlBarValue(pageUrl) {
2786
2777
  urlBar.title = val || 'Enter a page URL and press Enter';
2787
2778
  }
2788
2779
 
2780
+ /** Keep experimentData.pageUrl and #url-bar in sync when the preview iframe navigates. */
2781
+ function applyUrlBarFromIframeUrl(pageUrl) {
2782
+ if (!pageUrl) return;
2783
+ var normalized = String(pageUrl);
2784
+ if (experimentData) {
2785
+ experimentData = Object.assign({}, experimentData, { pageUrl: normalized });
2786
+ } else {
2787
+ experimentData = { pageUrl: normalized };
2788
+ }
2789
+ setUrlBarValue(normalized);
2790
+ }
2791
+
2789
2792
  function normalizeUserPageUrl(raw) {
2790
2793
  var s = String(raw || '').trim();
2791
2794
  if (!s) return '';
@@ -2871,7 +2874,9 @@ function bindUrlBar() {
2871
2874
  });
2872
2875
  urlBar.addEventListener('blur', function() {
2873
2876
  var canonical = experimentData && experimentData.pageUrl ? String(experimentData.pageUrl) : '';
2874
- if (canonical && urlBar.value.trim() !== canonical) urlBar.value = canonical;
2877
+ if (canonical && urlBar.value.trim() !== canonical) {
2878
+ setUrlBarValue(canonical);
2879
+ }
2875
2880
  });
2876
2881
  }
2877
2882
 
@@ -4666,15 +4671,10 @@ function parseEditorUrlPayload(rawUrl) {
4666
4671
  var lastEditorUrlPayloadKey = '';
4667
4672
  function emitEditorUrlChangedPayload(payload) {
4668
4673
  if (!payload) return;
4674
+ if (payload.url) applyUrlBarFromIframeUrl(payload.url);
4669
4675
  var key = String(payload.url || '') + '|' + String(payload.password || '');
4670
4676
  if (key === lastEditorUrlPayloadKey) return;
4671
4677
  lastEditorUrlPayloadKey = key;
4672
- try {
4673
- console.info('[V2 iframe-url]', {
4674
- url: payload.url || '',
4675
- passwordPresent: !!payload.password,
4676
- });
4677
- } catch(_) {}
4678
4678
  send('editor-url-changed', payload);
4679
4679
  }
4680
4680
  function emitEditorUrlChanged(rawUrl) {
@@ -6183,17 +6183,12 @@ function renderElementsTree(filterRaw) {
6183
6183
  return 'bi bi-square';
6184
6184
  }
6185
6185
 
6186
- function labelFor(el) {
6187
- var tag = (el.tagName || '').toLowerCase();
6188
- return tag.toUpperCase();
6189
- }
6190
-
6191
6186
  var nodes = collectEditorInsertedElements(doc);
6192
6187
 
6193
6188
  root.innerHTML = '';
6194
6189
  for (var i = 0; i < nodes.length; i++) {
6195
6190
  var el = nodes[i];
6196
- var lblText = labelFor(el);
6191
+ var lblText = domTreeLabelFor(el);
6197
6192
  if (filterText && lblText.toLowerCase().indexOf(filterText) < 0) continue;
6198
6193
 
6199
6194
  var row = document.createElement('div');
@@ -6212,7 +6207,7 @@ function renderElementsTree(filterRaw) {
6212
6207
 
6213
6208
  var lbl = document.createElement('div');
6214
6209
  lbl.className = 'dt-lbl';
6215
- lbl.textContent = lblText;
6210
+ setDomTreeLabelContent(lbl, el);
6216
6211
  lbl.title = buildSelector(el);
6217
6212
 
6218
6213
  row.appendChild(spacer);
@@ -6237,11 +6232,35 @@ function renderElementsTree(filterRaw) {
6237
6232
  };
6238
6233
  }
6239
6234
 
6235
+ function domTreeLabelClassExcluded(className) {
6236
+ var c = String(className || '');
6237
+ return !c || c === 'vve-selected' || c === 'vve-tree-hover' || c.indexOf('vve-') === 0;
6238
+ }
6239
+
6240
+ function domTreeLabelClassString(el) {
6241
+ if (!el) return '';
6242
+ try {
6243
+ if (el.classList && el.classList.length) {
6244
+ var out = [];
6245
+ for (var i = 0; i < el.classList.length; i++) {
6246
+ var cls = el.classList[i];
6247
+ if (!domTreeLabelClassExcluded(cls)) out.push(cls);
6248
+ }
6249
+ return out.join(' ');
6250
+ }
6251
+ } catch(_) {}
6252
+ var cn = el.className;
6253
+ if (cn && typeof cn === 'object' && cn.baseVal != null) cn = String(cn.baseVal);
6254
+ return typeof cn === 'string' ? cn : '';
6255
+ }
6256
+
6240
6257
  function domTreeLabelSuffix(el) {
6241
6258
  if (el.id != null && el.id !== '') return '#' + String(el.id).slice(0, 40);
6242
- var cn = el.className && typeof el.className === 'string' ? el.className.trim() : '';
6259
+ var cn = domTreeLabelClassString(el).trim();
6243
6260
  if (cn) {
6244
- var parts = cn.split(/s+/).filter(function(x) { return x.indexOf('vve-') !== 0; }).slice(0, 2).join('.');
6261
+ var parts = cn.split(/s+/).filter(function(x) {
6262
+ return x && !domTreeLabelClassExcluded(x);
6263
+ }).slice(0, 2).join('.');
6245
6264
  if (parts) return '.' + parts.slice(0, 56);
6246
6265
  }
6247
6266
  return '';
@@ -8194,14 +8213,8 @@ window.addEventListener('load', function() {
8194
8213
  try {
8195
8214
  var d = ev && ev.data;
8196
8215
  if (!d || d.channel !== 'vvveb-proxy-url' || d.type !== 'editor-url-changed') return;
8197
- if (!iframe || !iframe.contentWindow || ev.source !== iframe.contentWindow) return;
8198
8216
  var payload = d.payload || {};
8199
- try {
8200
- console.info('[V2 iframe-url bridge]', {
8201
- url: payload.url || '',
8202
- passwordPresent: !!payload.password,
8203
- });
8204
- } catch(_) {}
8217
+ if (payload.url) applyUrlBarFromIframeUrl(payload.url);
8205
8218
  emitEditorUrlChangedPayload({
8206
8219
  url: payload.url || undefined,
8207
8220
  password: payload.password || undefined,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@accelerated-agency/visual-editor",
3
- "version": "0.5.8",
3
+ "version": "0.6.0",
4
4
  "private": false,
5
5
  "description": "Conversion visual editor as a reusable React package",
6
6
  "type": "module",