@atlaskit/renderer 133.4.2 → 133.4.3

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atlaskit/renderer
2
2
 
3
+ ## 133.4.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`db98e2e76d7f9`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/db98e2e76d7f9) -
8
+ Improve code block download filename suggestion. Filenames are now derived from comment lines
9
+ (e.g. `# cats.py`), fence marker filenames (e.g. ` ```python cats.py `), or fall back to
10
+ `rovo-snippet.<ext>`.
11
+
3
12
  ## 133.4.2
4
13
 
5
14
  ### Patch Changes
@@ -67,13 +67,32 @@ var getFileExtension = function getFileExtension(language) {
67
67
  }
68
68
  return (_languageToExtension$ = languageToExtension[language.toLowerCase()]) !== null && _languageToExtension$ !== void 0 ? _languageToExtension$ : 'txt';
69
69
  };
70
+ var suggestBaseName = function suggestBaseName(content) {
71
+ var _content$split$find;
72
+ // eslint-disable-next-line require-unicode-regexp
73
+ var filenameCommentPattern = /^(?:#|\/\/|<!--)\s*([\w.\-]+)\s*(?:-->)?$/;
74
+ var firstMeaningfulLine = (_content$split$find = content.split('\n').find(function (l) {
75
+ return l.trim();
76
+ })) !== null && _content$split$find !== void 0 ? _content$split$find : '';
77
+ var filenameMatch = firstMeaningfulLine.trim().match(filenameCommentPattern);
78
+ if (filenameMatch) {
79
+ // eslint-disable-next-line require-unicode-regexp
80
+ return filenameMatch[1].replace(/\.[^.]+$/, '') || 'rovo-snippet';
81
+ }
82
+ var cleaned = firstMeaningfulLine
83
+ // eslint-disable-next-line require-unicode-regexp
84
+ .replace(/[^a-zA-Z0-9\s]/g, ' ').trim()
85
+ // eslint-disable-next-line require-unicode-regexp
86
+ .replace(/\s+/g, '-').toLowerCase().slice(0, 30);
87
+ return cleaned || 'rovo-snippet';
88
+ };
70
89
  var triggerDownload = function triggerDownload(content, language) {
71
90
  // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
72
91
  if (typeof document === 'undefined') {
73
92
  return;
74
93
  }
75
94
  var extension = getFileExtension(language);
76
- var filename = "rovo-snippet.".concat(extension);
95
+ var resolvedFilename = "".concat(suggestBaseName(content), ".").concat(extension);
77
96
  // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
78
97
  var doc = document;
79
98
  var blob = new Blob([content], {
@@ -82,7 +101,7 @@ var triggerDownload = function triggerDownload(content, language) {
82
101
  var url = URL.createObjectURL(blob);
83
102
  var anchor = doc.createElement('a');
84
103
  anchor.href = url;
85
- anchor.download = filename;
104
+ anchor.download = resolvedFilename;
86
105
  anchor.style.display = 'none';
87
106
  doc.body.appendChild(anchor);
88
107
  anchor.dispatchEvent(new MouseEvent('click', {
@@ -72,7 +72,7 @@ var DEGRADED_SEVERITY_THRESHOLD = exports.DEGRADED_SEVERITY_THRESHOLD = 3000;
72
72
  var TABLE_INFO_TIMEOUT = 10000;
73
73
  var RENDER_EVENT_SAMPLE_RATE = 0.2;
74
74
  var packageName = "@atlaskit/renderer";
75
- var packageVersion = "133.4.1";
75
+ var packageVersion = "133.4.2";
76
76
  var setAsQueryContainerStyles = (0, _react2.css)({
77
77
  containerName: 'ak-renderer-wrapper',
78
78
  containerType: 'inline-size'
@@ -59,13 +59,30 @@ const getFileExtension = language => {
59
59
  }
60
60
  return (_languageToExtension$ = languageToExtension[language.toLowerCase()]) !== null && _languageToExtension$ !== void 0 ? _languageToExtension$ : 'txt';
61
61
  };
62
+ const suggestBaseName = content => {
63
+ var _content$split$find;
64
+ // eslint-disable-next-line require-unicode-regexp
65
+ const filenameCommentPattern = /^(?:#|\/\/|<!--)\s*([\w.\-]+)\s*(?:-->)?$/;
66
+ const firstMeaningfulLine = (_content$split$find = content.split('\n').find(l => l.trim())) !== null && _content$split$find !== void 0 ? _content$split$find : '';
67
+ const filenameMatch = firstMeaningfulLine.trim().match(filenameCommentPattern);
68
+ if (filenameMatch) {
69
+ // eslint-disable-next-line require-unicode-regexp
70
+ return filenameMatch[1].replace(/\.[^.]+$/, '') || 'rovo-snippet';
71
+ }
72
+ const cleaned = firstMeaningfulLine
73
+ // eslint-disable-next-line require-unicode-regexp
74
+ .replace(/[^a-zA-Z0-9\s]/g, ' ').trim()
75
+ // eslint-disable-next-line require-unicode-regexp
76
+ .replace(/\s+/g, '-').toLowerCase().slice(0, 30);
77
+ return cleaned || 'rovo-snippet';
78
+ };
62
79
  const triggerDownload = (content, language) => {
63
80
  // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
64
81
  if (typeof document === 'undefined') {
65
82
  return;
66
83
  }
67
84
  const extension = getFileExtension(language);
68
- const filename = `rovo-snippet.${extension}`;
85
+ const resolvedFilename = `${suggestBaseName(content)}.${extension}`;
69
86
  // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
70
87
  const doc = document;
71
88
  const blob = new Blob([content], {
@@ -74,7 +91,7 @@ const triggerDownload = (content, language) => {
74
91
  const url = URL.createObjectURL(blob);
75
92
  const anchor = doc.createElement('a');
76
93
  anchor.href = url;
77
- anchor.download = filename;
94
+ anchor.download = resolvedFilename;
78
95
  anchor.style.display = 'none';
79
96
  doc.body.appendChild(anchor);
80
97
  anchor.dispatchEvent(new MouseEvent('click', {
@@ -58,7 +58,7 @@ export const DEGRADED_SEVERITY_THRESHOLD = 3000;
58
58
  const TABLE_INFO_TIMEOUT = 10000;
59
59
  const RENDER_EVENT_SAMPLE_RATE = 0.2;
60
60
  const packageName = "@atlaskit/renderer";
61
- const packageVersion = "133.4.1";
61
+ const packageVersion = "133.4.2";
62
62
  const setAsQueryContainerStyles = css({
63
63
  containerName: 'ak-renderer-wrapper',
64
64
  containerType: 'inline-size'
@@ -59,13 +59,32 @@ var getFileExtension = function getFileExtension(language) {
59
59
  }
60
60
  return (_languageToExtension$ = languageToExtension[language.toLowerCase()]) !== null && _languageToExtension$ !== void 0 ? _languageToExtension$ : 'txt';
61
61
  };
62
+ var suggestBaseName = function suggestBaseName(content) {
63
+ var _content$split$find;
64
+ // eslint-disable-next-line require-unicode-regexp
65
+ var filenameCommentPattern = /^(?:#|\/\/|<!--)\s*([\w.\-]+)\s*(?:-->)?$/;
66
+ var firstMeaningfulLine = (_content$split$find = content.split('\n').find(function (l) {
67
+ return l.trim();
68
+ })) !== null && _content$split$find !== void 0 ? _content$split$find : '';
69
+ var filenameMatch = firstMeaningfulLine.trim().match(filenameCommentPattern);
70
+ if (filenameMatch) {
71
+ // eslint-disable-next-line require-unicode-regexp
72
+ return filenameMatch[1].replace(/\.[^.]+$/, '') || 'rovo-snippet';
73
+ }
74
+ var cleaned = firstMeaningfulLine
75
+ // eslint-disable-next-line require-unicode-regexp
76
+ .replace(/[^a-zA-Z0-9\s]/g, ' ').trim()
77
+ // eslint-disable-next-line require-unicode-regexp
78
+ .replace(/\s+/g, '-').toLowerCase().slice(0, 30);
79
+ return cleaned || 'rovo-snippet';
80
+ };
62
81
  var triggerDownload = function triggerDownload(content, language) {
63
82
  // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
64
83
  if (typeof document === 'undefined') {
65
84
  return;
66
85
  }
67
86
  var extension = getFileExtension(language);
68
- var filename = "rovo-snippet.".concat(extension);
87
+ var resolvedFilename = "".concat(suggestBaseName(content), ".").concat(extension);
69
88
  // eslint-disable-next-line @atlaskit/platform/no-direct-document-usage
70
89
  var doc = document;
71
90
  var blob = new Blob([content], {
@@ -74,7 +93,7 @@ var triggerDownload = function triggerDownload(content, language) {
74
93
  var url = URL.createObjectURL(blob);
75
94
  var anchor = doc.createElement('a');
76
95
  anchor.href = url;
77
- anchor.download = filename;
96
+ anchor.download = resolvedFilename;
78
97
  anchor.style.display = 'none';
79
98
  doc.body.appendChild(anchor);
80
99
  anchor.dispatchEvent(new MouseEvent('click', {
@@ -63,7 +63,7 @@ export var DEGRADED_SEVERITY_THRESHOLD = 3000;
63
63
  var TABLE_INFO_TIMEOUT = 10000;
64
64
  var RENDER_EVENT_SAMPLE_RATE = 0.2;
65
65
  var packageName = "@atlaskit/renderer";
66
- var packageVersion = "133.4.1";
66
+ var packageVersion = "133.4.2";
67
67
  var setAsQueryContainerStyles = css({
68
68
  containerName: 'ak-renderer-wrapper',
69
69
  containerType: 'inline-size'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/renderer",
3
- "version": "133.4.2",
3
+ "version": "133.4.3",
4
4
  "description": "Renderer component",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"