@lvce-editor/source-control-worker 3.1.0 → 3.3.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.
@@ -1120,6 +1120,8 @@ const SourceControl$1 = 22;
1120
1120
 
1121
1121
  const None = 0;
1122
1122
 
1123
+ const Web = 1;
1124
+
1123
1125
  const ExtensionHostWorker = 44;
1124
1126
  const ExtensionManagementWorker = 9006;
1125
1127
  const IconThemeWorker = 7009;
@@ -1771,12 +1773,16 @@ const get$1 = key => {
1771
1773
  return getPreference(key);
1772
1774
  };
1773
1775
 
1774
- const getExtensions = async () => {
1775
- return invoke$1('Extensions.getExtensions');
1776
+ const isCompatible = (extension, platform) => {
1777
+ return platform !== Web || extension?.compatibility?.web !== false;
1778
+ };
1779
+ const getExtensions = async platform => {
1780
+ const extensions = await invoke$1('Extensions.getExtensions');
1781
+ return extensions.filter(extension => isCompatible(extension, platform));
1776
1782
  };
1777
1783
 
1778
- const requestSourceActions = async () => {
1779
- const extensions = await getExtensions();
1784
+ const requestSourceActions = async (platform = 0) => {
1785
+ const extensions = await getExtensions(platform);
1780
1786
  const newCache = Object.create(null);
1781
1787
  for (const extension of extensions) {
1782
1788
  if (!extension || !extension['source-control-actions']) {
@@ -1790,8 +1796,8 @@ const requestSourceActions = async () => {
1790
1796
  return newCache;
1791
1797
  };
1792
1798
 
1793
- const requestSourceControlButtons = async () => {
1794
- const extensions = await getExtensions();
1799
+ const requestSourceControlButtons = async (platform = 0) => {
1800
+ const extensions = await getExtensions(platform);
1795
1801
  const buttons = [];
1796
1802
  for (const extension of extensions) {
1797
1803
  if (!extension || !Array.isArray(extension['source-control-buttons'])) {
@@ -1858,6 +1864,7 @@ const GenerateCommitMessage$1 = 'Generate Commit Message';
1858
1864
  const Refresh$2 = 'Refresh';
1859
1865
  const MessageEnterToCommitOnMaster = `Message (Enter) to commit on 'master'`;
1860
1866
  const SourceControlInput$1 = 'Source Control Input';
1867
+ const NoSourceControlProvidersAvailableForWeb = 'No source control providers are available for web.';
1861
1868
 
1862
1869
  const openChanges = () => {
1863
1870
  return i18nString(OpenChanges);
@@ -1901,6 +1908,9 @@ const messageEnterToCommitOnMaster = () => {
1901
1908
  const sourceControlInput = () => {
1902
1909
  return i18nString(SourceControlInput$1);
1903
1910
  };
1911
+ const noSourceControlProvidersAvailableForWeb = () => {
1912
+ return i18nString(NoSourceControlProvidersAvailableForWeb);
1913
+ };
1904
1914
 
1905
1915
  const loadContent = async (state, savedState) => {
1906
1916
  const {
@@ -1935,8 +1945,8 @@ const loadContent = async (state, savedState) => {
1935
1945
  } = await getGroups(enabledProviderIds, root, assetDir, platform);
1936
1946
  const expandedGroups = restoreExpandedGroups(allGroups);
1937
1947
  const displayItems = getDisplayItems(allGroups, expandedGroups, iconDefinitions);
1938
- const actionsCache = await requestSourceActions();
1939
- const sourceControlButtons = await requestSourceControlButtons();
1948
+ const actionsCache = enabledProviderIds.length === 0 ? Object.create(null) : await requestSourceActions(platform);
1949
+ const sourceControlButtons = enabledProviderIds.length === 0 ? [] : await requestSourceControlButtons(platform);
1940
1950
 
1941
1951
  // TODO make preferences async and more functional
1942
1952
  const splitButtonEnabled = await get$1('sourceControl.splitButtonEnabled');
@@ -3056,6 +3066,8 @@ const SourceControlHeader = 'SourceControlHeader';
3056
3066
  const SourceControlItems = 'SourceControlItems';
3057
3067
  const SplitButton = 'SplitButton';
3058
3068
  const SplitButtonContent = 'SplitButtonContent';
3069
+ const SplitButtonContentDisabled = 'SplitButtonContentDisabled';
3070
+ const SplitButtonDisabled = 'SplitButtonDisabled';
3059
3071
  const StrikeThrough = 'StrikeThrough';
3060
3072
  const TreeItem = 'TreeItem';
3061
3073
  const Viewlet = 'Viewlet';
@@ -3071,28 +3083,37 @@ const HandleWheel = 9;
3071
3083
  const HandleClickAction = 10;
3072
3084
  const HandleClickSourceControlButton = 11;
3073
3085
 
3074
- const getSourceControlButtonVirtualDom = button => {
3086
+ const getIconVirtualDom = (icon, type = Div) => {
3087
+ return {
3088
+ childCount: 0,
3089
+ className: `MaskIcon MaskIcon${icon}`,
3090
+ role: None$1,
3091
+ type
3092
+ };
3093
+ };
3094
+
3095
+ const getSourceControlButtonVirtualDom = (button, disabled) => {
3075
3096
  const {
3097
+ icon,
3076
3098
  id,
3077
3099
  label
3078
3100
  } = button;
3079
3101
  return [{
3080
3102
  childCount: 1,
3081
- className: SplitButton,
3103
+ className: mergeClassNames(SplitButton, disabled ? SplitButtonDisabled : ''),
3082
3104
  type: Div
3083
3105
  }, {
3084
- childCount: 1,
3085
- className: SplitButtonContent,
3106
+ ariaDisabled: disabled,
3107
+ childCount: 2,
3108
+ className: mergeClassNames(SplitButtonContent, disabled ? SplitButtonContentDisabled : ''),
3086
3109
  name: label,
3087
- onClick: HandleClickSourceControlButton,
3088
- tabIndex: 0,
3110
+ tabIndex: disabled ? -1 : 0,
3089
3111
  title: id,
3090
- type: Div
3091
- }, text(label)];
3092
- };
3093
-
3094
- const getSourceControlButtonsVirtualDom = buttons => {
3095
- return buttons.flatMap(getSourceControlButtonVirtualDom);
3112
+ type: Div,
3113
+ ...(!disabled && {
3114
+ onClick: HandleClickSourceControlButton
3115
+ })
3116
+ }, getIconVirtualDom(icon, Span), text(label)];
3096
3117
  };
3097
3118
 
3098
3119
  const getSourceControlInputDom = (inputPlaceholder, inputMessage) => {
@@ -3141,15 +3162,6 @@ const getBadgeVirtualDom = count => {
3141
3162
  return [parentNode, text(String(count))];
3142
3163
  };
3143
3164
 
3144
- const getIconVirtualDom = (icon, type = Div) => {
3145
- return {
3146
- childCount: 0,
3147
- className: `MaskIcon MaskIcon${icon}`,
3148
- role: None$1,
3149
- type
3150
- };
3151
- };
3152
-
3153
3165
  const getButtonVirtualDom = button => {
3154
3166
  const {
3155
3167
  icon,
@@ -3328,9 +3340,14 @@ const getSourceControlListVirtualDom = items => {
3328
3340
  };
3329
3341
 
3330
3342
  const className = mergeClassNames(Viewlet, SourceControl);
3331
- const getSourceControlVirtualDom = (items, sourceControlButtons, inputPlaceholder, inputMessage) => {
3343
+ const getSourceControlVirtualDom = (items, buttons, disabled, placeholder, inputMessage, message) => {
3344
+ const content = message ? [{
3345
+ childCount: 1,
3346
+ className: Message,
3347
+ type: Div
3348
+ }, text(message)] : [...getSourceControlHeaderVirtualDom(placeholder, inputMessage), ...buttons.flatMap(button => getSourceControlButtonVirtualDom(button, disabled)), ...getSourceControlListVirtualDom(items)];
3332
3349
  const dom = [{
3333
- childCount: 2 + sourceControlButtons.length,
3350
+ childCount: message ? 1 : 2 + buttons.length,
3334
3351
  className: className,
3335
3352
  onContextMenu: HandleContextMenu,
3336
3353
  onMouseOver: HandleMouseOver,
@@ -3338,23 +3355,27 @@ const getSourceControlVirtualDom = (items, sourceControlButtons, inputPlaceholde
3338
3355
  onWheel: HandleWheel,
3339
3356
  tabIndex: 0,
3340
3357
  type: Div
3341
- }, ...getSourceControlHeaderVirtualDom(inputPlaceholder, inputMessage), ...getSourceControlButtonsVirtualDom(sourceControlButtons), ...getSourceControlListVirtualDom(items)];
3358
+ }, ...content];
3342
3359
  return dom;
3343
3360
  };
3344
3361
 
3345
3362
  const renderItems = (oldState, newState) => {
3346
3363
  const {
3364
+ enabledProviderIds,
3347
3365
  id,
3348
3366
  initial,
3349
3367
  inputMessage,
3350
3368
  inputPlaceholder,
3369
+ items,
3370
+ platform,
3351
3371
  sourceControlButtons,
3352
3372
  visibleItems
3353
3373
  } = newState;
3354
3374
  if (initial) {
3355
3375
  return [SetDom2, id, []];
3356
3376
  }
3357
- const dom = getSourceControlVirtualDom(visibleItems, sourceControlButtons, inputPlaceholder, inputMessage);
3377
+ const unavailableMessage = platform === Web && enabledProviderIds.length === 0 ? noSourceControlProvidersAvailableForWeb() : '';
3378
+ const dom = getSourceControlVirtualDom(visibleItems, sourceControlButtons, items.length === 0, inputPlaceholder, inputMessage, unavailableMessage);
3358
3379
  return [SetDom2, id, dom];
3359
3380
  };
3360
3381
 
@@ -3423,6 +3444,15 @@ const ListFlat = 'ListFlat';
3423
3444
  const Refresh = 'Refresh';
3424
3445
 
3425
3446
  const getActions = state => {
3447
+ if (state.platform === Web && state.enabledProviderIds.length === 0) {
3448
+ return [{
3449
+ command: '',
3450
+ icon: Refresh,
3451
+ id: refresh$1(),
3452
+ name: Refresh$1,
3453
+ type: Button
3454
+ }];
3455
+ }
3426
3456
  const actions = [{
3427
3457
  command: '',
3428
3458
  icon: ListFlat,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/source-control-worker",
3
- "version": "3.1.0",
3
+ "version": "3.3.0",
4
4
  "description": "Source Control Worker",
5
5
  "keywords": [
6
6
  "Lvce Editor"