dsh-diff-approval 0.4.0 → 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.
- package/lib/client.js +655 -231
- package/lib/index.js +138 -1
- package/lib/types/client/PendingPanel.d.ts +1 -1
- package/lib/types/client/highlight.d.ts +11 -1
- package/lib/types/client/locales.d.ts +4 -0
- package/lib/types/client/port.d.ts +7 -3
- package/lib/types/client/reference.d.ts +13 -11
- package/lib/types/client/slots.d.ts +7 -1
- package/lib/types/client/store.d.ts +5 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/pending.d.ts +14 -0
- package/lib/types/types.d.ts +23 -0
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -11296,6 +11296,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11296
11296
|
//#endregion
|
|
11297
11297
|
//#region node_modules/.pnpm/@shikijs+langs@4.4.3/node_modules/@shikijs/langs/dist/scss.mjs
|
|
11298
11298
|
const lang$1 = Object.freeze(JSON.parse("{\"displayName\":\"SCSS\",\"name\":\"scss\",\"patterns\":[{\"include\":\"#variable_setting\"},{\"include\":\"#at_rule_forward\"},{\"include\":\"#at_rule_use\"},{\"include\":\"#at_rule_include\"},{\"include\":\"#at_rule_import\"},{\"include\":\"#general\"},{\"include\":\"#flow_control\"},{\"include\":\"#rules\"},{\"include\":\"#property_list\"},{\"include\":\"#at_rule_mixin\"},{\"include\":\"#at_rule_media\"},{\"include\":\"#at_rule_function\"},{\"include\":\"#at_rule_charset\"},{\"include\":\"#at_rule_option\"},{\"include\":\"#at_rule_namespace\"},{\"include\":\"#at_rule_fontface\"},{\"include\":\"#at_rule_page\"},{\"include\":\"#at_rule_keyframes\"},{\"include\":\"#at_rule_at_root\"},{\"include\":\"#at_rule_supports\"},{\"match\":\";\",\"name\":\"punctuation.terminator.rule.css\"}],\"repository\":{\"at_rule_at_root\":{\"begin\":\"\\\\s*((@)(at-root))(\\\\s+|$)\",\"beginCaptures\":{\"1\":{\"name\":\"keyword.control.at-rule.at-root.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.at-root.scss\",\"patterns\":[{\"include\":\"#function_attributes\"},{\"include\":\"#functions\"},{\"include\":\"#selectors\"}]},\"at_rule_charset\":{\"begin\":\"\\\\s*((@)charset)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.charset.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*((?=;|$))\",\"name\":\"meta.at-rule.charset.scss\",\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#string_single\"},{\"include\":\"#string_double\"}]},\"at_rule_content\":{\"begin\":\"\\\\s*((@)content)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.content.scss\"}},\"end\":\"\\\\s*((?=;))\",\"name\":\"meta.content.scss\",\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#selectors\"},{\"include\":\"#property_values\"}]},\"at_rule_each\":{\"begin\":\"\\\\s*((@)each)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.each.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*((?=}))\",\"name\":\"meta.at-rule.each.scss\",\"patterns\":[{\"match\":\"\\\\b(in|,)\\\\b\",\"name\":\"keyword.control.operator\"},{\"include\":\"#variable\"},{\"include\":\"#property_values\"},{\"include\":\"$self\"}]},\"at_rule_else\":{\"begin\":\"\\\\s*((@)else(\\\\s*(if)?))\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.else.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.else.scss\",\"patterns\":[{\"include\":\"#conditional_operators\"},{\"include\":\"#variable\"},{\"include\":\"#property_values\"}]},\"at_rule_extend\":{\"begin\":\"\\\\s*((@)extend)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.extend.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=;)\",\"name\":\"meta.at-rule.extend.scss\",\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#selectors\"},{\"include\":\"#property_values\"}]},\"at_rule_fontface\":{\"patterns\":[{\"begin\":\"^\\\\s*((@)font-face)\\\\b\",\"beginCaptures\":{\"1\":{\"name\":\"keyword.control.at-rule.fontface.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.fontface.scss\",\"patterns\":[{\"include\":\"#function_attributes\"}]}]},\"at_rule_for\":{\"begin\":\"\\\\s*((@)for)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.for.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.for.scss\",\"patterns\":[{\"match\":\"(==|!=|<=|>=|[<>]|from|to|through)\",\"name\":\"keyword.control.operator\"},{\"include\":\"#variable\"},{\"include\":\"#property_values\"},{\"include\":\"$self\"}]},\"at_rule_forward\":{\"begin\":\"\\\\s*((@)forward)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.forward.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=;)\",\"name\":\"meta.at-rule.forward.scss\",\"patterns\":[{\"match\":\"\\\\b(as|hide|show)\\\\b\",\"name\":\"keyword.control.operator\"},{\"captures\":{\"1\":{\"name\":\"entity.other.attribute-name.module.scss\"},\"2\":{\"name\":\"punctuation.definition.wildcard.scss\"}},\"match\":\"\\\\b([-\\\\w]+)(\\\\*)\"},{\"match\":\"\\\\b[-\\\\w]+\\\\b\",\"name\":\"entity.name.function.scss\"},{\"include\":\"#variable\"},{\"include\":\"#string_single\"},{\"include\":\"#string_double\"},{\"include\":\"#comment_line\"},{\"include\":\"#comment_block\"}]},\"at_rule_function\":{\"patterns\":[{\"begin\":\"\\\\s*((@)function)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.function.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"},\"3\":{\"name\":\"entity.name.function.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.function.scss\",\"patterns\":[{\"include\":\"#function_attributes\"}]},{\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.function.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"},\"3\":{\"name\":\"entity.name.function.scss\"}},\"match\":\"\\\\s*((@)function)\\\\b\\\\s*\",\"name\":\"meta.at-rule.function.scss\"}]},\"at_rule_if\":{\"begin\":\"\\\\s*((@)if)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.if.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.if.scss\",\"patterns\":[{\"include\":\"#conditional_operators\"},{\"include\":\"#variable\"},{\"include\":\"#property_values\"}]},\"at_rule_import\":{\"begin\":\"\\\\s*((@)import)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.import.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*((?=;)|(?=}))\",\"name\":\"meta.at-rule.import.scss\",\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#string_single\"},{\"include\":\"#string_double\"},{\"include\":\"#functions\"},{\"include\":\"#comment_line\"}]},\"at_rule_include\":{\"patterns\":[{\"begin\":\"(?<=@include)\\\\s+(?:([-\\\\w]+)\\\\s*(\\\\.))?([-\\\\w]+)\\\\s*(\\\\()\",\"beginCaptures\":{\"1\":{\"name\":\"variable.scss\"},\"2\":{\"name\":\"punctuation.access.module.scss\"},\"3\":{\"name\":\"entity.name.function.scss\"},\"4\":{\"name\":\"punctuation.definition.parameters.begin.bracket.round.scss\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.end.bracket.round.scss\"}},\"name\":\"meta.at-rule.include.scss\",\"patterns\":[{\"include\":\"#function_attributes\"}]},{\"captures\":{\"0\":{\"name\":\"meta.at-rule.include.scss\"},\"1\":{\"name\":\"variable.scss\"},\"2\":{\"name\":\"punctuation.access.module.scss\"},\"3\":{\"name\":\"entity.name.function.scss\"}},\"match\":\"(?<=@include)\\\\s+(?:([-\\\\w]+)\\\\s*(\\\\.))?([-\\\\w]+)\"},{\"captures\":{\"0\":{\"name\":\"meta.at-rule.include.scss\"},\"1\":{\"name\":\"keyword.control.at-rule.include.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"match\":\"((@)include)\\\\b\"}]},\"at_rule_keyframes\":{\"begin\":\"(?<=^|\\\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\\\b\",\"beginCaptures\":{\"0\":{\"name\":\"keyword.control.at-rule.keyframes.scss\"},\"1\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"(?<=})\",\"name\":\"meta.at-rule.keyframes.scss\",\"patterns\":[{\"captures\":{\"1\":{\"name\":\"entity.name.function.scss\"}},\"match\":\"(?<=@keyframes)\\\\s+((?:[A-Z_a-z][-\\\\w]|-[A-Z_a-z])[-\\\\w]*)\"},{\"begin\":\"(?<=@keyframes)\\\\s+(\\\")\",\"beginCaptures\":{\"1\":{\"name\":\"punctuation.definition.string.begin.scss\"}},\"contentName\":\"entity.name.function.scss\",\"end\":\"\\\"\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.scss\"}},\"name\":\"string.quoted.double.scss\",\"patterns\":[{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"include\":\"#interpolation\"}]},{\"begin\":\"(?<=@keyframes)\\\\s+(')\",\"beginCaptures\":{\"1\":{\"name\":\"punctuation.definition.string.begin.scss\"}},\"contentName\":\"entity.name.function.scss\",\"end\":\"'\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.scss\"}},\"name\":\"string.quoted.single.scss\",\"patterns\":[{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"include\":\"#interpolation\"}]},{\"begin\":\"\\\\{\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.section.keyframes.begin.scss\"}},\"end\":\"}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.section.keyframes.end.scss\"}},\"patterns\":[{\"match\":\"\\\\b(?:(?:100|[1-9]\\\\d|\\\\d)%|from|to)(?=\\\\s*\\\\{)\",\"name\":\"entity.other.attribute-name.scss\"},{\"include\":\"#flow_control\"},{\"include\":\"#interpolation\"},{\"include\":\"#property_list\"},{\"include\":\"#rules\"}]}]},\"at_rule_media\":{\"patterns\":[{\"begin\":\"^\\\\s*((@)media)\\\\b\",\"beginCaptures\":{\"1\":{\"name\":\"keyword.control.at-rule.media.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.media.scss\",\"patterns\":[{\"include\":\"#comment_docblock\"},{\"include\":\"#comment_block\"},{\"include\":\"#comment_line\"},{\"match\":\"\\\\b(only)\\\\b\",\"name\":\"keyword.control.operator.css.scss\"},{\"begin\":\"\\\\(\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.media-query.begin.bracket.round.scss\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.media-query.end.bracket.round.scss\"}},\"name\":\"meta.property-list.media-query.scss\",\"patterns\":[{\"begin\":\"(?<![-a-z])(?=[-a-z])\",\"end\":\"$|(?![-a-z])\",\"name\":\"meta.property-name.media-query.scss\",\"patterns\":[{\"include\":\"source.css#media-features\"},{\"include\":\"source.css#property-names\"}]},{\"begin\":\"(:)\\\\s*(?!(\\\\s*\\\\{))\",\"beginCaptures\":{\"1\":{\"name\":\"punctuation.separator.key-value.scss\"}},\"contentName\":\"meta.property-value.media-query.scss\",\"end\":\"\\\\s*(;|(?=[)}]))\",\"endCaptures\":{\"1\":{\"name\":\"punctuation.terminator.rule.scss\"}},\"patterns\":[{\"include\":\"#general\"},{\"include\":\"#property_values\"}]}]},{\"include\":\"#variable\"},{\"include\":\"#conditional_operators\"},{\"include\":\"source.css#media-types\"}]}]},\"at_rule_mixin\":{\"patterns\":[{\"begin\":\"(?<=@mixin)\\\\s+([-\\\\w]+)\\\\s*(\\\\()\",\"beginCaptures\":{\"1\":{\"name\":\"entity.name.function.scss\"},\"2\":{\"name\":\"punctuation.definition.parameters.begin.bracket.round.scss\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.end.bracket.round.scss\"}},\"name\":\"meta.at-rule.mixin.scss\",\"patterns\":[{\"include\":\"#function_attributes\"}]},{\"captures\":{\"1\":{\"name\":\"entity.name.function.scss\"}},\"match\":\"(?<=@mixin)\\\\s+([-\\\\w]+)\",\"name\":\"meta.at-rule.mixin.scss\"},{\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.mixin.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"match\":\"((@)mixin)\\\\b\",\"name\":\"meta.at-rule.mixin.scss\"}]},\"at_rule_namespace\":{\"patterns\":[{\"begin\":\"(?<=@namespace)\\\\s+(?=url)\",\"end\":\"(?=;|$)\",\"name\":\"meta.at-rule.namespace.scss\",\"patterns\":[{\"include\":\"#property_values\"},{\"include\":\"#string_single\"},{\"include\":\"#string_double\"}]},{\"begin\":\"(?<=@namespace)\\\\s+([-\\\\w]*)\",\"captures\":{\"1\":{\"name\":\"entity.name.namespace-prefix.scss\"}},\"end\":\"(?=;|$)\",\"name\":\"meta.at-rule.namespace.scss\",\"patterns\":[{\"include\":\"#variables\"},{\"include\":\"#property_values\"},{\"include\":\"#string_single\"},{\"include\":\"#string_double\"}]},{\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.namespace.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"match\":\"((@)namespace)\\\\b\",\"name\":\"meta.at-rule.namespace.scss\"}]},\"at_rule_option\":{\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.charset.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"match\":\"^\\\\s*((@)option)\\\\b\\\\s*\",\"name\":\"meta.at-rule.option.scss\"},\"at_rule_page\":{\"patterns\":[{\"begin\":\"^\\\\s*((@)page)(?=[:\\\\s])\\\\s*([-:\\\\w]*)\",\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.page.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"},\"3\":{\"name\":\"entity.name.function.scss\"}},\"end\":\"\\\\s*(?=\\\\{)\",\"name\":\"meta.at-rule.page.scss\"}]},\"at_rule_return\":{\"begin\":\"\\\\s*((@)(return))\\\\b\",\"captures\":{\"1\":{\"name\":\"keyword.control.return.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*((?=;))\",\"name\":\"meta.at-rule.return.scss\",\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#property_values\"}]},\"at_rule_supports\":{\"begin\":\"(?<=^|\\\\s)(@)supports\\\\b\",\"captures\":{\"0\":{\"name\":\"keyword.control.at-rule.supports.scss\"},\"1\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"(?=\\\\{)|$\",\"name\":\"meta.at-rule.supports.scss\",\"patterns\":[{\"include\":\"#logical_operators\"},{\"include\":\"#properties\"},{\"match\":\"\\\\(\",\"name\":\"punctuation.definition.condition.begin.bracket.round.scss\"},{\"match\":\"\\\\)\",\"name\":\"punctuation.definition.condition.end.bracket.round.scss\"}]},\"at_rule_use\":{\"begin\":\"\\\\s*((@)use)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.at-rule.use.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=;)\",\"name\":\"meta.at-rule.use.scss\",\"patterns\":[{\"match\":\"\\\\b(as|with)\\\\b\",\"name\":\"keyword.control.operator\"},{\"match\":\"\\\\b[-\\\\w]+\\\\b\",\"name\":\"variable.scss\"},{\"match\":\"\\\\*\",\"name\":\"variable.language.expanded-namespace.scss\"},{\"include\":\"#string_single\"},{\"include\":\"#string_double\"},{\"include\":\"#comment_line\"},{\"include\":\"#comment_block\"},{\"begin\":\"\\\\(\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.begin.bracket.round.scss\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.parameters.end.bracket.round.scss\"}},\"patterns\":[{\"include\":\"#function_attributes\"}]}]},\"at_rule_warn\":{\"begin\":\"\\\\s*((@)(warn|debug|error))\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.warn.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=;)\",\"name\":\"meta.at-rule.warn.scss\",\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#string_double\"},{\"include\":\"#string_single\"}]},\"at_rule_while\":{\"begin\":\"\\\\s*((@)while)\\\\b\\\\s*\",\"captures\":{\"1\":{\"name\":\"keyword.control.while.scss\"},\"2\":{\"name\":\"punctuation.definition.keyword.scss\"}},\"end\":\"\\\\s*(?=})\",\"name\":\"meta.at-rule.while.scss\",\"patterns\":[{\"include\":\"#conditional_operators\"},{\"include\":\"#variable\"},{\"include\":\"#property_values\"},{\"include\":\"$self\"}]},\"comment_block\":{\"begin\":\"/\\\\*\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.comment.scss\"}},\"end\":\"\\\\*/\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.comment.scss\"}},\"name\":\"comment.block.scss\"},\"comment_docblock\":{\"begin\":\"///\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.comment.scss\"}},\"end\":\"(?=$)\",\"name\":\"comment.block.documentation.scss\",\"patterns\":[{\"include\":\"source.sassdoc\"}]},\"comment_line\":{\"begin\":\"//\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.comment.scss\"}},\"end\":\"\\\\n\",\"name\":\"comment.line.scss\"},\"comparison_operators\":{\"match\":\"==|!=|<=|>=|[<>]\",\"name\":\"keyword.operator.comparison.scss\"},\"conditional_operators\":{\"patterns\":[{\"include\":\"#comparison_operators\"},{\"include\":\"#logical_operators\"}]},\"constant_default\":{\"match\":\"!default\",\"name\":\"keyword.other.default.scss\"},\"constant_functions\":{\"begin\":\"(?:([-\\\\w]+)(\\\\.))?([-\\\\w]+)(\\\\()\",\"beginCaptures\":{\"1\":{\"name\":\"variable.scss\"},\"2\":{\"name\":\"punctuation.access.module.scss\"},\"3\":{\"name\":\"support.function.misc.scss\"},\"4\":{\"name\":\"punctuation.section.function.scss\"}},\"end\":\"(\\\\))\",\"endCaptures\":{\"1\":{\"name\":\"punctuation.section.function.scss\"}},\"patterns\":[{\"include\":\"#parameters\"}]},\"constant_important\":{\"match\":\"!important\",\"name\":\"keyword.other.important.scss\"},\"constant_mathematical_symbols\":{\"match\":\"\\\\b([-*+/])\\\\b\",\"name\":\"support.constant.mathematical-symbols.scss\"},\"constant_optional\":{\"match\":\"!optional\",\"name\":\"keyword.other.optional.scss\"},\"constant_sass_functions\":{\"begin\":\"(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:|svg-)gradient|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate[XY])(\\\\()\",\"beginCaptures\":{\"1\":{\"name\":\"support.function.misc.scss\"},\"2\":{\"name\":\"punctuation.section.function.scss\"}},\"end\":\"(\\\\))\",\"endCaptures\":{\"1\":{\"name\":\"punctuation.section.function.scss\"}},\"patterns\":[{\"include\":\"#parameters\"}]},\"flow_control\":{\"patterns\":[{\"include\":\"#at_rule_if\"},{\"include\":\"#at_rule_else\"},{\"include\":\"#at_rule_warn\"},{\"include\":\"#at_rule_for\"},{\"include\":\"#at_rule_while\"},{\"include\":\"#at_rule_each\"},{\"include\":\"#at_rule_return\"}]},\"function_attributes\":{\"patterns\":[{\"match\":\":\",\"name\":\"punctuation.separator.key-value.scss\"},{\"include\":\"#general\"},{\"include\":\"#property_values\"},{\"match\":\"[;=?@{}]\",\"name\":\"invalid.illegal.scss\"}]},\"functions\":{\"patterns\":[{\"begin\":\"([-\\\\w]+)(\\\\()\\\\s*\",\"beginCaptures\":{\"1\":{\"name\":\"support.function.misc.scss\"},\"2\":{\"name\":\"punctuation.section.function.scss\"}},\"end\":\"(\\\\))\",\"endCaptures\":{\"1\":{\"name\":\"punctuation.section.function.scss\"}},\"patterns\":[{\"include\":\"#parameters\"}]},{\"match\":\"([-\\\\w]+)\",\"name\":\"support.function.misc.scss\"}]},\"general\":{\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#comment_docblock\"},{\"include\":\"#comment_block\"},{\"include\":\"#comment_line\"}]},\"interpolation\":{\"begin\":\"#\\\\{\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.interpolation.begin.bracket.curly.scss\"}},\"end\":\"}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.interpolation.end.bracket.curly.scss\"}},\"name\":\"variable.interpolation.scss\",\"patterns\":[{\"include\":\"#variable\"},{\"include\":\"#property_values\"}]},\"logical_operators\":{\"match\":\"\\\\b(not|or|and)\\\\b\",\"name\":\"keyword.operator.logical.scss\"},\"map\":{\"begin\":\"\\\\(\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.map.begin.bracket.round.scss\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.map.end.bracket.round.scss\"}},\"name\":\"meta.definition.variable.map.scss\",\"patterns\":[{\"include\":\"#comment_docblock\"},{\"include\":\"#comment_block\"},{\"include\":\"#comment_line\"},{\"captures\":{\"1\":{\"name\":\"support.type.map.key.scss\"},\"2\":{\"name\":\"punctuation.separator.key-value.scss\"}},\"match\":\"\\\\b([-\\\\w]+)\\\\s*(:)\"},{\"match\":\",\",\"name\":\"punctuation.separator.delimiter.scss\"},{\"include\":\"#map\"},{\"include\":\"#variable\"},{\"include\":\"#property_values\"}]},\"operators\":{\"match\":\"[-*+/](?!\\\\s*[-*+/])\",\"name\":\"keyword.operator.css\"},\"parameters\":{\"patterns\":[{\"include\":\"#variable\"},{\"begin\":\"\\\\(\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.begin.bracket.round.scss\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.end.bracket.round.scss\"}},\"patterns\":[{\"include\":\"#function_attributes\"}]},{\"include\":\"#property_values\"},{\"include\":\"#comment_block\"},{\"match\":\"[^\\\\t \\\"'),]+\",\"name\":\"variable.parameter.url.scss\"},{\"match\":\",\",\"name\":\"punctuation.separator.delimiter.scss\"}]},\"parent_selector_suffix\":{\"captures\":{\"1\":{\"name\":\"punctuation.definition.entity.css\"},\"2\":{\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.identifier.scss\"}]}},\"match\":\"(?<=&)((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)|#\\\\{|[$}])+)(?=$|[#)+,.:>\\\\[{|~\\\\s]|/\\\\*)\",\"name\":\"entity.other.attribute-name.parent-selector-suffix.css\"},\"properties\":{\"patterns\":[{\"begin\":\"(?<![-a-z])(?=[-a-z])\",\"end\":\"$|(?![-a-z])\",\"name\":\"meta.property-name.scss\",\"patterns\":[{\"include\":\"source.css#property-names\"},{\"include\":\"#at_rule_include\"}]},{\"begin\":\"(:)\\\\s*(?!(\\\\s*\\\\{))\",\"beginCaptures\":{\"1\":{\"name\":\"punctuation.separator.key-value.scss\"}},\"contentName\":\"meta.property-value.scss\",\"end\":\"\\\\s*(;|(?=[)}]))\",\"endCaptures\":{\"1\":{\"name\":\"punctuation.terminator.rule.scss\"}},\"patterns\":[{\"include\":\"#general\"},{\"include\":\"#property_values\"}]}]},\"property_list\":{\"begin\":\"\\\\{\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.section.property-list.begin.bracket.curly.scss\"}},\"end\":\"}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.section.property-list.end.bracket.curly.scss\"}},\"name\":\"meta.property-list.scss\",\"patterns\":[{\"include\":\"#flow_control\"},{\"include\":\"#rules\"},{\"include\":\"#properties\"},{\"include\":\"$self\"}]},\"property_values\":{\"patterns\":[{\"include\":\"#string_single\"},{\"include\":\"#string_double\"},{\"include\":\"#constant_functions\"},{\"include\":\"#constant_sass_functions\"},{\"include\":\"#constant_important\"},{\"include\":\"#constant_default\"},{\"include\":\"#constant_optional\"},{\"include\":\"source.css#numeric-values\"},{\"include\":\"source.css#property-keywords\"},{\"include\":\"source.css#color-keywords\"},{\"include\":\"source.css#property-names\"},{\"include\":\"#constant_mathematical_symbols\"},{\"include\":\"#operators\"},{\"begin\":\"\\\\(\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.begin.bracket.round.scss\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.end.bracket.round.scss\"}},\"patterns\":[{\"include\":\"#general\"},{\"include\":\"#property_values\"}]}]},\"rules\":{\"patterns\":[{\"include\":\"#general\"},{\"include\":\"#at_rule_extend\"},{\"include\":\"#at_rule_content\"},{\"include\":\"#at_rule_include\"},{\"include\":\"#at_rule_media\"},{\"include\":\"#selectors\"}]},\"selector_attribute\":{\"captures\":{\"1\":{\"name\":\"punctuation.definition.attribute-selector.begin.bracket.square.scss\"},\"2\":{\"name\":\"entity.other.attribute-name.attribute.scss\",\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.scss\"}]},\"3\":{\"name\":\"keyword.operator.scss\"},\"4\":{\"name\":\"string.unquoted.attribute-value.scss\",\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.scss\"}]},\"5\":{\"name\":\"string.quoted.double.attribute-value.scss\"},\"6\":{\"name\":\"punctuation.definition.string.begin.scss\"},\"7\":{\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.scss\"}]},\"8\":{\"name\":\"punctuation.definition.string.end.scss\"},\"9\":{\"name\":\"string.quoted.single.attribute-value.scss\"},\"10\":{\"name\":\"punctuation.definition.string.begin.scss\"},\"11\":{\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.scss\"}]},\"12\":{\"name\":\"punctuation.definition.string.end.scss\"},\"13\":{\"name\":\"punctuation.definition.attribute-selector.end.bracket.square.scss\"}},\"match\":\"(?i)(\\\\[)\\\\s*((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)|#\\\\{|\\\\.?\\\\$|})+?)(?:\\\\s*([$*^|~]?=)\\\\s*(?:((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)|#\\\\{|\\\\.?\\\\$|})+)|((\\\")(.*?)(\\\"))|((')(.*?)('))))?\\\\s*(])\",\"name\":\"meta.attribute-selector.scss\"},\"selector_class\":{\"captures\":{\"1\":{\"name\":\"punctuation.definition.entity.css\"},\"2\":{\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.scss\"}]}},\"match\":\"(\\\\.)((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)|#\\\\{|\\\\.?\\\\$|})+)(?=$|[#)+,:>\\\\[{|~\\\\s]|\\\\.[^$]|/\\\\*|;)\",\"name\":\"entity.other.attribute-name.class.css\"},\"selector_custom\":{\"match\":\"\\\\b([0-9A-Za-z]+(-[0-9A-Za-z]+)+)(?=\\\\.|\\\\s++[^:]|\\\\s*[,\\\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-((?:|last-)(?:child|of-type))|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\\\([0-9A-Za-z]*\\\\))?)\",\"name\":\"entity.name.tag.custom.scss\"},\"selector_id\":{\"captures\":{\"1\":{\"name\":\"punctuation.definition.entity.css\"},\"2\":{\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.identifier.scss\"}]}},\"match\":\"(#)((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)|#\\\\{|\\\\.?\\\\$|})+)(?=$|[#)+,:>\\\\[{|~\\\\s]|\\\\.[^$]|/\\\\*)\",\"name\":\"entity.other.attribute-name.id.css\"},\"selector_placeholder\":{\"captures\":{\"1\":{\"name\":\"punctuation.definition.entity.css\"},\"2\":{\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"match\":\"[$}]\",\"name\":\"invalid.illegal.identifier.scss\"}]}},\"match\":\"(%)((?:[-0-9A-Z_a-z[^\\\\x00-\\\\x7F]]|\\\\\\\\(?:\\\\h{1,6}|.)|#\\\\{|\\\\.\\\\$|[$}])+)(?=;|$|[#)+,:>\\\\[{|~\\\\s]|\\\\.[^$]|/\\\\*)\",\"name\":\"entity.other.attribute-name.placeholder.css\"},\"selector_pseudo_class\":{\"patterns\":[{\"begin\":\"((:)\\\\bnth-(?:|last-)(?:child|of-type))(\\\\()\",\"beginCaptures\":{\"1\":{\"name\":\"entity.other.attribute-name.pseudo-class.css\"},\"2\":{\"name\":\"punctuation.definition.entity.css\"},\"3\":{\"name\":\"punctuation.definition.pseudo-class.begin.bracket.round.css\"}},\"end\":\"\\\\)\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.pseudo-class.end.bracket.round.css\"}},\"patterns\":[{\"include\":\"#interpolation\"},{\"match\":\"\\\\d+\",\"name\":\"constant.numeric.css\"},{\"match\":\"(?:(?<=\\\\d)n|\\\\b(n|even|odd))\\\\b\",\"name\":\"constant.other.scss\"},{\"match\":\"\\\\w+\",\"name\":\"invalid.illegal.scss\"}]},{\"include\":\"source.css#pseudo-classes\"},{\"include\":\"source.css#pseudo-elements\"},{\"include\":\"source.css#functional-pseudo-classes\"}]},\"selectors\":{\"patterns\":[{\"include\":\"source.css#tag-names\"},{\"include\":\"#selector_custom\"},{\"include\":\"#selector_class\"},{\"include\":\"#selector_id\"},{\"include\":\"#selector_pseudo_class\"},{\"include\":\"#tag_wildcard\"},{\"include\":\"#tag_parent_reference\"},{\"include\":\"source.css#pseudo-elements\"},{\"include\":\"#selector_attribute\"},{\"include\":\"#selector_placeholder\"},{\"include\":\"#parent_selector_suffix\"}]},\"string_double\":{\"begin\":\"\\\"\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.begin.scss\"}},\"end\":\"\\\"\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.scss\"}},\"name\":\"string.quoted.double.scss\",\"patterns\":[{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"include\":\"#interpolation\"}]},\"string_single\":{\"begin\":\"'\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.begin.scss\"}},\"end\":\"'\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.scss\"}},\"name\":\"string.quoted.single.scss\",\"patterns\":[{\"match\":\"\\\\\\\\(\\\\h{1,6}|.)\",\"name\":\"constant.character.escape.scss\"},{\"include\":\"#interpolation\"}]},\"tag_parent_reference\":{\"match\":\"&\",\"name\":\"entity.name.tag.reference.scss\"},\"tag_wildcard\":{\"match\":\"\\\\*\",\"name\":\"entity.name.tag.wildcard.scss\"},\"variable\":{\"patterns\":[{\"include\":\"#variables\"},{\"include\":\"#interpolation\"}]},\"variable_setting\":{\"begin\":\"(?=\\\\$[-\\\\w]+\\\\s*:)\",\"contentName\":\"meta.definition.variable.scss\",\"end\":\";\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.terminator.rule.scss\"}},\"patterns\":[{\"match\":\"\\\\$[-\\\\w]+(?=\\\\s*:)\",\"name\":\"variable.scss\"},{\"begin\":\":\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.separator.key-value.scss\"}},\"end\":\"(?=;)\",\"patterns\":[{\"include\":\"#comment_docblock\"},{\"include\":\"#comment_block\"},{\"include\":\"#comment_line\"},{\"include\":\"#map\"},{\"include\":\"#property_values\"},{\"include\":\"#variable\"},{\"match\":\",\",\"name\":\"punctuation.separator.delimiter.scss\"}]}]},\"variables\":{\"patterns\":[{\"captures\":{\"1\":{\"name\":\"variable.scss\"},\"2\":{\"name\":\"punctuation.access.module.scss\"},\"3\":{\"name\":\"variable.scss\"}},\"match\":\"\\\\b([-\\\\w]+)(\\\\.)(\\\\$[-\\\\w]+)\\\\b\"},{\"match\":\"(\\\\$|--)[-0-9A-Z_a-z]+\\\\b\",\"name\":\"variable.scss\"}]}},\"scopeName\":\"source.css.scss\",\"embeddedLangs\":[\"css\"]}"));
|
|
11299
|
+
var scss_default = [...css_default, lang$1];
|
|
11300
|
+
var toml_default = [Object.freeze(JSON.parse("{\"displayName\":\"TOML\",\"fileTypes\":[\"toml\"],\"name\":\"toml\",\"patterns\":[{\"include\":\"#comments\"},{\"include\":\"#groups\"},{\"include\":\"#key_pair\"},{\"include\":\"#invalid\"}],\"repository\":{\"comments\":{\"begin\":\"(^[\\\\t ]+)?(?=#)\",\"beginCaptures\":{\"1\":{\"name\":\"punctuation.whitespace.comment.leading.toml\"}},\"end\":\"(?!\\\\G)\",\"patterns\":[{\"begin\":\"#\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.comment.toml\"}},\"end\":\"\\\\n\",\"name\":\"comment.line.number-sign.toml\"}]},\"groups\":{\"patterns\":[{\"captures\":{\"1\":{\"name\":\"punctuation.definition.section.begin.toml\"},\"2\":{\"patterns\":[{\"match\":\"[^.\\\\s]+\",\"name\":\"entity.name.section.toml\"}]},\"3\":{\"name\":\"punctuation.definition.section.begin.toml\"}},\"match\":\"^\\\\s*(\\\\[)([^]\\\\[]*)(])\",\"name\":\"meta.group.toml\"},{\"captures\":{\"1\":{\"name\":\"punctuation.definition.section.begin.toml\"},\"2\":{\"patterns\":[{\"match\":\"[^.\\\\s]+\",\"name\":\"entity.name.section.toml\"}]},\"3\":{\"name\":\"punctuation.definition.section.begin.toml\"}},\"match\":\"^\\\\s*(\\\\[\\\\[)([^]\\\\[]*)(]])\",\"name\":\"meta.group.double.toml\"}]},\"invalid\":{\"match\":\"\\\\S+(\\\\s*(?=\\\\S))?\",\"name\":\"invalid.illegal.not-allowed-here.toml\"},\"key_pair\":{\"patterns\":[{\"begin\":\"([-0-9A-Z_a-z]+)\\\\s*(=)\\\\s*\",\"captures\":{\"1\":{\"name\":\"variable.other.key.toml\"},\"2\":{\"name\":\"punctuation.separator.key-value.toml\"}},\"end\":\"(?<=\\\\S)(?<!=)|$\",\"patterns\":[{\"include\":\"#primatives\"}]},{\"begin\":\"((\\\")(.*?)(\\\"))\\\\s*(=)\\\\s*\",\"captures\":{\"1\":{\"name\":\"variable.other.key.toml\"},\"2\":{\"name\":\"punctuation.definition.variable.begin.toml\"},\"3\":{\"patterns\":[{\"match\":\"\\\\\\\\([\\\"\\\\\\\\bfnrt]|u\\\\h{4}|U\\\\h{8})\",\"name\":\"constant.character.escape.toml\"},{\"match\":\"\\\\\\\\[^\\\"\\\\\\\\bfnrt]\",\"name\":\"invalid.illegal.escape.toml\"},{\"match\":\"\\\"\",\"name\":\"invalid.illegal.not-allowed-here.toml\"}]},\"4\":{\"name\":\"punctuation.definition.variable.end.toml\"},\"5\":{\"name\":\"punctuation.separator.key-value.toml\"}},\"end\":\"(?<=\\\\S)(?<!=)|$\",\"patterns\":[{\"include\":\"#primatives\"}]},{\"begin\":\"((')([^']*)('))\\\\s*(=)\\\\s*\",\"captures\":{\"1\":{\"name\":\"variable.other.key.toml\"},\"2\":{\"name\":\"punctuation.definition.variable.begin.toml\"},\"4\":{\"name\":\"punctuation.definition.variable.end.toml\"},\"5\":{\"name\":\"punctuation.separator.key-value.toml\"}},\"end\":\"(?<=\\\\S)(?<!=)|$\",\"patterns\":[{\"include\":\"#primatives\"}]},{\"begin\":\"(((?:[-0-9A-Z_a-z]+|\\\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\\\"|'[^']*')(?:\\\\s*\\\\.\\\\s*|(?=\\\\s*=))){2,})\\\\s*(=)\\\\s*\",\"captures\":{\"1\":{\"name\":\"variable.other.key.toml\",\"patterns\":[{\"match\":\"\\\\.\",\"name\":\"punctuation.separator.variable.toml\"},{\"captures\":{\"1\":{\"name\":\"punctuation.definition.variable.begin.toml\"},\"2\":{\"patterns\":[{\"match\":\"\\\\\\\\([\\\"\\\\\\\\bfnrt]|u\\\\h{4}|U\\\\h{8})\",\"name\":\"constant.character.escape.toml\"},{\"match\":\"\\\\\\\\[^\\\"\\\\\\\\bfnrt]\",\"name\":\"invalid.illegal.escape.toml\"}]},\"3\":{\"name\":\"punctuation.definition.variable.end.toml\"}},\"match\":\"(\\\")((?:[^\\\"\\\\\\\\]|\\\\\\\\.)*)(\\\")\"},{\"captures\":{\"1\":{\"name\":\"punctuation.definition.variable.begin.toml\"},\"2\":{\"name\":\"punctuation.definition.variable.end.toml\"}},\"match\":\"(')[^']*(')\"}]},\"3\":{\"name\":\"punctuation.separator.key-value.toml\"}},\"end\":\"(?<=\\\\S)(?<!=)|$\",\"patterns\":[{\"include\":\"#primatives\"}]}]},\"primatives\":{\"patterns\":[{\"begin\":\"\\\\G\\\"\\\"\\\"\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.begin.toml\"}},\"end\":\"\\\"{3,5}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.toml\"}},\"name\":\"string.quoted.triple.double.toml\",\"patterns\":[{\"match\":\"\\\\\\\\([\\\"\\\\\\\\bfnrt]|u\\\\h{4}|U\\\\h{8})\",\"name\":\"constant.character.escape.toml\"},{\"match\":\"\\\\\\\\[^\\\\n\\\"\\\\\\\\bfnrt]\",\"name\":\"invalid.illegal.escape.toml\"}]},{\"begin\":\"\\\\G\\\"\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.begin.toml\"}},\"end\":\"\\\"\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.toml\"}},\"name\":\"string.quoted.double.toml\",\"patterns\":[{\"match\":\"\\\\\\\\([\\\"\\\\\\\\bfnrt]|u\\\\h{4}|U\\\\h{8})\",\"name\":\"constant.character.escape.toml\"},{\"match\":\"\\\\\\\\[^\\\"\\\\\\\\bfnrt]\",\"name\":\"invalid.illegal.escape.toml\"}]},{\"begin\":\"\\\\G'''\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.begin.toml\"}},\"end\":\"'{3,5}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.toml\"}},\"name\":\"string.quoted.triple.single.toml\"},{\"begin\":\"\\\\G'\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.begin.toml\"}},\"end\":\"'\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.string.end.toml\"}},\"name\":\"string.quoted.single.toml\"},{\"match\":\"\\\\G[0-9]{4}-(0[1-9]|1[012])-(?!00|3[2-9])[0-3][0-9]([ Tt](?!2[5-9])[012][0-9]:[0-5][0-9]:(?!6[1-9])[0-6][0-9](\\\\.[0-9]+)?(Z|[-+](?!2[5-9])[012][0-9]:[0-5][0-9])?)?\",\"name\":\"constant.other.date.toml\"},{\"match\":\"\\\\G(?!2[5-9])[012][0-9]:[0-5][0-9]:(?!6[1-9])[0-6][0-9](\\\\.[0-9]+)?\",\"name\":\"constant.other.time.toml\"},{\"match\":\"\\\\G(true|false)\",\"name\":\"constant.language.boolean.toml\"},{\"match\":\"\\\\G0x\\\\h(_??\\\\h)*\",\"name\":\"constant.numeric.hex.toml\"},{\"match\":\"\\\\G0o[0-7]([0-7]|_[0-7])*\",\"name\":\"constant.numeric.octal.toml\"},{\"match\":\"\\\\G0b[01]([01]|_[01])*\",\"name\":\"constant.numeric.binary.toml\"},{\"match\":\"\\\\G[-+]?(inf|nan)\",\"name\":\"constant.numeric.toml\"},{\"match\":\"\\\\G([-+]?(0|([1-9](([0-9]|_[0-9])+)?)))(?=[.Ee])(\\\\.([0-9](([0-9]|_[0-9])+)?))?([Ee]([-+]?[0-9](([0-9]|_[0-9])+)?))?\",\"name\":\"constant.numeric.float.toml\"},{\"match\":\"\\\\G([-+]?(0|([1-9](([0-9]|_[0-9])+)?)))\",\"name\":\"constant.numeric.integer.toml\"},{\"begin\":\"\\\\G\\\\[\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.array.begin.toml\"}},\"end\":\"]\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.array.end.toml\"}},\"name\":\"meta.array.toml\",\"patterns\":[{\"begin\":\"(?=[\\\"']|[-+]?[0-9]|[-+]?(inf|nan)|true|false|[\\\\[{])\",\"end\":\",|(?=])\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.separator.array.toml\"}},\"patterns\":[{\"include\":\"#primatives\"},{\"include\":\"#comments\"},{\"include\":\"#invalid\"}]},{\"include\":\"#comments\"},{\"include\":\"#invalid\"}]},{\"begin\":\"\\\\G\\\\{\",\"beginCaptures\":{\"0\":{\"name\":\"punctuation.definition.inline-table.begin.toml\"}},\"end\":\"}\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.definition.inline-table.end.toml\"}},\"name\":\"meta.inline-table.toml\",\"patterns\":[{\"begin\":\"(?=\\\\S)\",\"end\":\",|(?=})\",\"endCaptures\":{\"0\":{\"name\":\"punctuation.separator.inline-table.toml\"}},\"patterns\":[{\"include\":\"#key_pair\"}]},{\"include\":\"#comments\"}]}]}},\"scopeName\":\"source.toml\"}"))];
|
|
11299
11301
|
//#endregion
|
|
11300
11302
|
//#region lib/types/client/highlight.js
|
|
11301
11303
|
/**
|
|
@@ -11309,6 +11311,34 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11309
11311
|
* never an error.
|
|
11310
11312
|
* @module dsh-diff-approval/client/highlight
|
|
11311
11313
|
*/
|
|
11314
|
+
/**
|
|
11315
|
+
* Tokenize guards: the viewer must never let the synchronous JS-regex engine
|
|
11316
|
+
* block the main thread on a hostile file. Lines above the length cap are
|
|
11317
|
+
* returned plain by shiki, the per-line budget caps a single pathological
|
|
11318
|
+
* line, and whole files above the size/line caps skip highlighting entirely
|
|
11319
|
+
* (the diff still shows its added/deleted coloring). Company-workload files
|
|
11320
|
+
* (generated bundles, minified output, huge data dumps) otherwise stall the
|
|
11321
|
+
* tab for tens of seconds and can OOM it.
|
|
11322
|
+
*/
|
|
11323
|
+
const MAX_LINE_LENGTH = 2e3;
|
|
11324
|
+
const TOKENIZE_TIME_LIMIT_MS = 100;
|
|
11325
|
+
const MAX_HIGHLIGHT_CHARS = 3e5;
|
|
11326
|
+
const MAX_HIGHLIGHT_LINES = 1e4;
|
|
11327
|
+
/**
|
|
11328
|
+
* Bounded tokenize cache keyed by the code string: reselecting a recently
|
|
11329
|
+
* viewed file (or a file whose content reference reappears) reuses the runs
|
|
11330
|
+
* instead of re-running the engine. Insertion-ordered, so the oldest entry is
|
|
11331
|
+
* evicted first; 16 codes bounds both memory and the eviction cost.
|
|
11332
|
+
*/
|
|
11333
|
+
const TOKENIZE_CACHE_MAX = 16;
|
|
11334
|
+
const tokenizeCache = /* @__PURE__ */ new Map();
|
|
11335
|
+
/** Whether `code` is too large to highlight safely (short-circuits fast). */
|
|
11336
|
+
function tooLargeToHighlight(code) {
|
|
11337
|
+
if (code.length > MAX_HIGHLIGHT_CHARS) return true;
|
|
11338
|
+
let newlines = 0;
|
|
11339
|
+
for (let index = 0; index < code.length; index++) if (code.charCodeAt(index) === 10 && ++newlines > MAX_HIGHLIGHT_LINES) return true;
|
|
11340
|
+
return false;
|
|
11341
|
+
}
|
|
11312
11342
|
/** All grammars this bundle registers; each entry's own `name` is the tokenize id. */
|
|
11313
11343
|
const LANGS = [
|
|
11314
11344
|
c_default,
|
|
@@ -11325,16 +11355,75 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11325
11355
|
python_default,
|
|
11326
11356
|
ruby_default,
|
|
11327
11357
|
rust_default,
|
|
11328
|
-
|
|
11358
|
+
scss_default,
|
|
11329
11359
|
shellscript_default,
|
|
11330
11360
|
sql_default,
|
|
11331
|
-
|
|
11361
|
+
toml_default,
|
|
11332
11362
|
typescript_default,
|
|
11333
11363
|
xml_default,
|
|
11334
11364
|
yaml_default
|
|
11335
11365
|
];
|
|
11336
|
-
/**
|
|
11337
|
-
|
|
11366
|
+
/**
|
|
11367
|
+
* Primary grammar ids offered in the viewer's language selector, in picker
|
|
11368
|
+
* order (alphabetical). Kept explicit instead of deriving from `LANGS`: some
|
|
11369
|
+
* `@shikijs/langs` modules are composite grammars whose `.name` arrays expose
|
|
11370
|
+
* embedded sub-grammars (e.g. C++ → `[regexp, glsl, cpp-macro, cpp]`,
|
|
11371
|
+
* TypeScript → `[typescript, jsx, tsx, graphql]`), which would otherwise leak
|
|
11372
|
+
* ids like `regexp`, `glsl`, `haml` into the menu. `LANGS` still registers the
|
|
11373
|
+
* full grammars (including their embedded languages) for highlighting.
|
|
11374
|
+
*/
|
|
11375
|
+
const HIGHLIGHT_LANGS = [
|
|
11376
|
+
"c",
|
|
11377
|
+
"cpp",
|
|
11378
|
+
"csharp",
|
|
11379
|
+
"css",
|
|
11380
|
+
"go",
|
|
11381
|
+
"html",
|
|
11382
|
+
"ini",
|
|
11383
|
+
"java",
|
|
11384
|
+
"json",
|
|
11385
|
+
"lua",
|
|
11386
|
+
"markdown",
|
|
11387
|
+
"python",
|
|
11388
|
+
"ruby",
|
|
11389
|
+
"rust",
|
|
11390
|
+
"scss",
|
|
11391
|
+
"shellscript",
|
|
11392
|
+
"sql",
|
|
11393
|
+
"toml",
|
|
11394
|
+
"typescript",
|
|
11395
|
+
"xml",
|
|
11396
|
+
"yaml"
|
|
11397
|
+
];
|
|
11398
|
+
/** Display names for the grammar ids: shiki ids are lowercase, so the picker
|
|
11399
|
+
and trigger show conventional casing ("TypeScript", "C#", "Shell", …). */
|
|
11400
|
+
const LANGUAGE_DISPLAY_NAMES = {
|
|
11401
|
+
c: "C",
|
|
11402
|
+
cpp: "C++",
|
|
11403
|
+
csharp: "C#",
|
|
11404
|
+
css: "CSS",
|
|
11405
|
+
go: "Go",
|
|
11406
|
+
html: "HTML",
|
|
11407
|
+
ini: "INI",
|
|
11408
|
+
java: "Java",
|
|
11409
|
+
json: "JSON",
|
|
11410
|
+
lua: "Lua",
|
|
11411
|
+
markdown: "Markdown",
|
|
11412
|
+
python: "Python",
|
|
11413
|
+
ruby: "Ruby",
|
|
11414
|
+
rust: "Rust",
|
|
11415
|
+
scss: "SCSS",
|
|
11416
|
+
shellscript: "Shell",
|
|
11417
|
+
sql: "SQL",
|
|
11418
|
+
toml: "TOML",
|
|
11419
|
+
typescript: "TypeScript",
|
|
11420
|
+
xml: "XML",
|
|
11421
|
+
yaml: "YAML"
|
|
11422
|
+
};
|
|
11423
|
+
/** Conventional display name for a grammar id, falling back to the id itself. */
|
|
11424
|
+
function languageDisplayName(id) {
|
|
11425
|
+
return LANGUAGE_DISPLAY_NAMES[id] ?? id;
|
|
11426
|
+
}
|
|
11338
11427
|
/** All token colors resolve through `--shiki-*` custom properties (theme package sheets). */
|
|
11339
11428
|
const cssVariablesTheme = createCssVariablesTheme({
|
|
11340
11429
|
name: "css-variables",
|
|
@@ -11402,15 +11491,31 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11402
11491
|
function highlightLines(code, lang) {
|
|
11403
11492
|
if (lang === void 0 || code === "") return void 0;
|
|
11404
11493
|
if (!highlighter().getLoadedLanguages().includes(lang)) return void 0;
|
|
11494
|
+
if (tooLargeToHighlight(code)) return void 0;
|
|
11495
|
+
const cached = tokenizeCache.get(code)?.get(lang);
|
|
11496
|
+
if (cached !== void 0) return cached;
|
|
11405
11497
|
const { tokens } = highlighter().codeToTokens(code, {
|
|
11406
11498
|
lang,
|
|
11407
|
-
theme: "css-variables"
|
|
11499
|
+
theme: "css-variables",
|
|
11500
|
+
tokenizeTimeLimit: TOKENIZE_TIME_LIMIT_MS,
|
|
11501
|
+
tokenizeMaxLineLength: MAX_LINE_LENGTH
|
|
11408
11502
|
});
|
|
11409
11503
|
const last = tokens[tokens.length - 1];
|
|
11410
|
-
|
|
11504
|
+
const runs = (tokens.length > 1 && last !== void 0 && last.length === 0 ? tokens.slice(0, -1) : tokens).map((line) => line.map((token) => ({
|
|
11411
11505
|
text: token.content,
|
|
11412
11506
|
style: { color: token.color }
|
|
11413
11507
|
})));
|
|
11508
|
+
let byLang = tokenizeCache.get(code);
|
|
11509
|
+
if (byLang === void 0) {
|
|
11510
|
+
if (tokenizeCache.size >= TOKENIZE_CACHE_MAX) {
|
|
11511
|
+
const oldest = tokenizeCache.keys().next().value;
|
|
11512
|
+
if (oldest !== void 0) tokenizeCache.delete(oldest);
|
|
11513
|
+
}
|
|
11514
|
+
byLang = /* @__PURE__ */ new Map();
|
|
11515
|
+
tokenizeCache.set(code, byLang);
|
|
11516
|
+
}
|
|
11517
|
+
byLang.set(lang, runs);
|
|
11518
|
+
return runs;
|
|
11414
11519
|
}
|
|
11415
11520
|
//#endregion
|
|
11416
11521
|
//#region lib/types/client/lang.js
|
|
@@ -11477,30 +11582,21 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11477
11582
|
//#endregion
|
|
11478
11583
|
//#region lib/types/client/reference.js
|
|
11479
11584
|
/**
|
|
11480
|
-
*
|
|
11481
|
-
*
|
|
11482
|
-
*
|
|
11483
|
-
*
|
|
11484
|
-
*/
|
|
11485
|
-
/**
|
|
11486
|
-
* Last path segment of a file path, any separator style.
|
|
11487
|
-
* @param path - the path to shorten.
|
|
11488
|
-
* @returns the segment after the final separator.
|
|
11489
|
-
*/
|
|
11490
|
-
function basenameOf$1(path) {
|
|
11491
|
-
const normalized = path.replaceAll("\\", "/");
|
|
11492
|
-
return normalized.slice(normalized.lastIndexOf("/") + 1);
|
|
11493
|
-
}
|
|
11494
|
-
/**
|
|
11495
|
-
* The path shown in a copied reference: the short name when no other listed
|
|
11496
|
-
* file shares it, the full path otherwise.
|
|
11585
|
+
* The path embedded in a copied reference: workspace-relative (forward
|
|
11586
|
+
* slashes) when the file lives inside the current workspace, the absolute
|
|
11587
|
+
* path otherwise. A bare file name is never enough — a reference must resolve
|
|
11588
|
+
* to exactly one file.
|
|
11497
11589
|
* @param path - the selected file's path.
|
|
11498
|
-
* @param
|
|
11499
|
-
* @returns the
|
|
11590
|
+
* @param workspacePath - the current workspace root, or `undefined`.
|
|
11591
|
+
* @returns the reference path.
|
|
11500
11592
|
*/
|
|
11501
|
-
function
|
|
11502
|
-
|
|
11503
|
-
|
|
11593
|
+
function referencePathOf(path, workspacePath) {
|
|
11594
|
+
if (workspacePath === void 0 || workspacePath.length === 0) return path;
|
|
11595
|
+
const normalized = path.replaceAll("\\", "/");
|
|
11596
|
+
const root = workspacePath.replaceAll("\\", "/");
|
|
11597
|
+
const prefix = root.endsWith("/") ? root : `${root}/`;
|
|
11598
|
+
if (normalized.length > prefix.length && normalized.slice(0, prefix.length).toLowerCase() === prefix.toLowerCase()) return normalized.slice(prefix.length);
|
|
11599
|
+
return path;
|
|
11504
11600
|
}
|
|
11505
11601
|
/**
|
|
11506
11602
|
* Format one line range as a reference suffix: a single line number, or the
|
|
@@ -11515,17 +11611,17 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11515
11611
|
/**
|
|
11516
11612
|
* Build the clipboard text for a selected line range.
|
|
11517
11613
|
* @param path - the selected file's path.
|
|
11518
|
-
* @param
|
|
11614
|
+
* @param workspacePath - the current workspace root, or `undefined`.
|
|
11519
11615
|
* @param start - first selected line number.
|
|
11520
11616
|
* @param end - last selected line number.
|
|
11521
11617
|
* @returns the `path:range` reference text.
|
|
11522
11618
|
*/
|
|
11523
|
-
function referenceOf(path,
|
|
11524
|
-
return `${
|
|
11619
|
+
function referenceOf(path, workspacePath, start, end) {
|
|
11620
|
+
return `${referencePathOf(path, workspacePath)}:${lineRangeLabel(start, end)}`;
|
|
11525
11621
|
}
|
|
11526
11622
|
//#endregion
|
|
11527
11623
|
//#region \0dsh-css:/home/runner/work/dsh-diff-approval/dsh-diff-approval/src/client/PendingPanel.module.css.mjs
|
|
11528
|
-
const css = ".F1KBNa_layer{flex:none;align-items:center;width:calc(100% + 8px);height:34px;margin:4px -4px;display:flex;position:relative}.F1KBNa_footerButtons{align-items:center;width:100%;display:flex}.F1KBNa_badge{box-sizing:border-box;width:100%;height:34px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:12px;align-items:center;gap:8px;padding:6px 2px 6px 10px;font-family:inherit;font-size:14px;line-height:22px;display:flex;overflow:hidden}.F1KBNa_badge:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_badge[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_badgeLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.F1KBNa_badgeCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;margin-left:auto;margin-right:6px;font-size:12px;line-height:16px}.F1KBNa_layer.F1KBNa_rail{width:36px;height:36px;margin:8px 0 10px}.F1KBNa_rail .F1KBNa_badge{border-radius:50%;justify-content:center;gap:0;width:36px;height:36px;padding:0}.F1KBNa_rail .F1KBNa_badgeLabel{display:none}.F1KBNa_rail .F1KBNa_badgeCount{box-sizing:border-box;background:var(--dsw-alias-state-business-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-foreground);font-variant-numeric:tabular-nums;border-radius:9px;justify-content:center;align-items:center;padding:0 4px;font-size:11px;line-height:18px;display:flex;position:absolute;top:-3px;right:-7px}.F1KBNa_panel{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:none;box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;flex-direction:column;display:flex;position:fixed;inset:8px 8px 128px;overflow:hidden}.F1KBNa_header{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;justify-content:space-between;align-items:center;min-height:44px;padding:10px 12px;display:flex}.F1KBNa_states{flex:1;min-height:0;padding:4px 12px 12px;overflow-y:auto}.F1KBNa_split{flex:1;align-items:stretch;min-height:0;display:flex}.F1KBNa_fileList{box-sizing:border-box;border-right:1px solid var(--dsw-alias-border-l2);flex:none;width:240px;min-height:0;padding:4px 8px 12px;overflow-y:auto}.F1KBNa_resizeHandle{cursor:col-resize;background:0 0;flex:none;width:5px;margin:0 -2px}.F1KBNa_resizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_detail{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.F1KBNa_detailEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;margin:0;padding:24px;font-size:12px;line-height:18px;display:flex}.F1KBNa_title{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}.F1KBNa_note,.F1KBNa_readError,.F1KBNa_hint{color:var(--dsw-alias-label-tertiary);margin:4px 0;font-size:12px;line-height:18px}.F1KBNa_readError{color:var(--dsw-alias-state-error-primary)}.F1KBNa_group{color:var(--dsw-alias-label-tertiary);margin:8px 0 4px;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-markdown-code-block);overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);flex:1;font-size:12px;line-height:18px;overflow:hidden}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_iconAction{justify-content:center;align-items:center;padding:4px 6px;display:inline-flex}.F1KBNa_close{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_diffBody{min-height:0;font:var(--dsw-font-markdown-code-block);flex:1;padding:8px 10px;overflow:auto}.F1KBNa_lines{border-spacing:0;width:max-content;min-width:100%;display:table}.F1KBNa_line{display:table-row}.F1KBNa_gutter{box-sizing:border-box;text-align:right;width:44px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;user-select:none;padding-right:10px;display:table-cell}.F1KBNa_code{white-space:pre;display:table-cell}.F1KBNa_context{color:var(--dsw-alias-label-primary)}.F1KBNa_del{background-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent)}.F1KBNa_statusBar{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);height:34px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-markdown-code-block);font-variant-numeric:tabular-nums;flex:none;align-items:center;padding:0 8px;font-size:12px;line-height:18px;display:flex}.F1KBNa_statusAction{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_statusAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langSelect{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;flex:none;align-items:center;gap:4px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_langSelect:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langLabel{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}";
|
|
11624
|
+
const css = ".F1KBNa_layer{box-sizing:border-box;flex:none;align-items:center;width:calc(100% + 8px);height:42px;margin:4px -4px;display:flex;position:relative}.F1KBNa_footerButtons{align-items:center;width:100%;display:flex}.F1KBNa_badge{box-sizing:border-box;width:100%;height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:none;border-radius:12px;align-items:center;gap:8px;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;overflow:hidden}.F1KBNa_badge:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_badge[data-active]{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_badgeLabel{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.F1KBNa_badgeCount{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;margin-left:auto;font-size:12px;line-height:16px}.F1KBNa_layer.F1KBNa_rail{width:36px;height:36px;margin:8px 0 10px}.F1KBNa_rail .F1KBNa_badge{border-radius:50%;justify-content:center;gap:0;width:36px;height:36px;padding:0}.F1KBNa_rail .F1KBNa_badgeLabel{display:none}.F1KBNa_rail .F1KBNa_badgeCount{box-sizing:border-box;background:var(--dsw-alias-state-business-primary);min-width:18px;height:18px;color:var(--dsw-alias-label-primary-foreground);font-variant-numeric:tabular-nums;border-radius:9px;justify-content:center;align-items:center;padding:0 4px;font-size:11px;line-height:18px;display:flex;position:absolute;top:-3px;right:-7px}.F1KBNa_panel{z-index:30;border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);width:auto;max-width:none;box-shadow:var(--dsw-shadow-lv2);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);border-radius:12px;flex-direction:column;display:flex;position:fixed;inset:8px 8px 128px;overflow:hidden}.F1KBNa_header{box-sizing:border-box;border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-base);flex:none;justify-content:space-between;align-items:center;min-height:44px;padding:10px 12px;display:flex}.F1KBNa_headerActions{align-items:center;gap:2px;display:flex}.F1KBNa_states{flex:1;min-height:0;padding:4px 12px 12px;overflow-y:auto}.F1KBNa_split{flex:1;align-items:stretch;min-height:0;display:flex}.F1KBNa_fileList{box-sizing:border-box;border-right:1px solid var(--dsw-alias-border-l2);flex:none;width:240px;min-height:0;padding:4px 8px 12px;overflow-y:auto}.F1KBNa_resizeHandle{cursor:col-resize;background:0 0;flex:none;width:5px;margin:0 -2px}.F1KBNa_resizeHandle:hover{background:var(--dsw-alias-border-l2)}.F1KBNa_detail{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.F1KBNa_detailEmpty{color:var(--dsw-alias-label-tertiary);text-align:center;flex:1;justify-content:center;align-items:center;margin:0;padding:24px;font-size:12px;line-height:18px;display:flex}.F1KBNa_title{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}.F1KBNa_note,.F1KBNa_readError,.F1KBNa_hint{color:var(--dsw-alias-label-tertiary);margin:4px 0;font-size:12px;line-height:18px}.F1KBNa_readError{color:var(--dsw-alias-state-error-primary)}.F1KBNa_group{color:var(--dsw-alias-label-tertiary);margin:8px 0 4px;font-size:12px;font-weight:500;line-height:16px}.F1KBNa_rows{margin:0;padding:0;list-style:none}.F1KBNa_row{border:1px solid #0000;border-radius:10px;margin:2px 0}.F1KBNa_rowHead{width:100%;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;align-items:baseline;gap:8px;padding:6px 8px;display:flex}.F1KBNa_rowHead:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.F1KBNa_rowHead[data-selected]{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_rowPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:var(--dsw-font-markdown-code-block);overflow:hidden}.F1KBNa_kindTag{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-tertiary);white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_kindHint{color:var(--dsw-alias-label-tertiary);flex:none;font-size:12px;line-height:16px}.F1KBNa_divergedHint,.F1KBNa_missingHint{border-bottom:1px solid var(--dsw-alias-border-l2);margin:0;padding:6px 8px;font-size:12px;line-height:18px}.F1KBNa_missing{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary));white-space:nowrap;border-radius:6px;flex:none;padding:1px 6px;font-size:11px;line-height:14px}.F1KBNa_missingHint{color:var(--dsw-alias-state-warn-label,var(--dsw-alias-state-warn-primary))}.F1KBNa_rowMeta{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;flex:none;gap:6px;margin-left:auto;font-size:12px;line-height:16px;display:inline-flex}.F1KBNa_addCount{color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_delCount{color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 60%, var(--dsw-alias-label-primary))}.F1KBNa_diff{background:var(--dsw-alias-markdown-code-block);flex-direction:column;flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.F1KBNa_diffHeader{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffPath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);font:var(--dsw-font-markdown-code-block);flex:1;font-size:12px;line-height:18px;overflow:hidden}.F1KBNa_diffActions{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:6px 8px;display:flex}.F1KBNa_diffStats{color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;font-size:12px;line-height:16px}.F1KBNa_flexSpacer{flex:1}.F1KBNa_action{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_action:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_action:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.F1KBNa_actionPrimary{background:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50)}.F1KBNa_actionPrimary:hover:not(:disabled){background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 85%, var(--dsw-static-neutral-bluish-1000))}.F1KBNa_actionPrimary:disabled{background:var(--dsw-alias-state-business-primary);color:var(--dsw-static-neutral-bluish-50);opacity:.55}.F1KBNa_iconAction{justify-content:center;align-items:center;min-height:25px;padding:4px 6px;display:inline-flex}.F1KBNa_close{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_close:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expand{cursor:pointer;width:28px;height:28px;color:var(--dsw-alias-label-tertiary);background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:0;display:inline-flex}.F1KBNa_expand:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.F1KBNa_expandExpanded svg{transform:rotate(180deg)}.F1KBNa_diffBodyWrap{flex:1;min-height:0;display:flex;position:relative}.F1KBNa_diffBody{min-width:0;font:var(--dsw-font-markdown-code-block);cursor:text;flex:1;padding:0;position:relative;overflow:auto}.F1KBNa_diffBody::-webkit-scrollbar,.F1KBNa_diffBody::-webkit-scrollbar-track,.F1KBNa_diffBody::-webkit-scrollbar-thumb{cursor:default}.F1KBNa_blockActions{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block);box-shadow:var(--dsw-shadow-lv1);z-index:2;border-radius:10px;align-items:center;gap:4px;padding:4px;display:flex;position:absolute;right:6px}.F1KBNa_overviewRuler{pointer-events:none;opacity:.5;width:4px;position:absolute;top:0;bottom:0;right:0}.F1KBNa_overviewMarker{border-radius:2px;width:100%;min-height:2px;position:absolute;right:0}.F1KBNa_markerDel{background-color:var(--dsw-alias-state-error-primary)}.F1KBNa_markerAdd{background-color:var(--dsw-alias-state-success-primary)}.F1KBNa_lines{border-spacing:0;width:max-content;min-width:100%;display:table}.F1KBNa_line{height:22px;line-height:22px;display:table-row}.F1KBNa_vSpacer{display:table-row}.F1KBNa_gutter{box-sizing:border-box;text-align:right;width:44px;color:var(--dsw-alias-label-tertiary);font-variant-numeric:tabular-nums;user-select:none;cursor:default;padding-right:10px;display:table-cell}.F1KBNa_code{white-space:pre;display:table-cell}.F1KBNa_context{color:var(--dsw-alias-label-primary)}.F1KBNa_del{background-color:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.F1KBNa_add{background-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 10%, transparent)}.F1KBNa_statusBar{box-sizing:border-box;border-top:1px solid var(--dsw-alias-border-l2);height:34px;color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-markdown-code-block);font-variant-numeric:tabular-nums;flex:none;align-items:center;padding:0 8px;font-size:12px;line-height:18px;display:flex}.F1KBNa_statusAction{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);white-space:nowrap;cursor:pointer;background:0 0;border-radius:8px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px}.F1KBNa_statusAction:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langSelect{border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border-radius:8px;flex:none;align-items:center;gap:4px;padding:3px 12px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}.F1KBNa_langSelect:hover{background:var(--dsw-alias-interactive-bg-hover)}.F1KBNa_langLabel{text-overflow:ellipsis;white-space:nowrap;max-width:140px;overflow:hidden}";
|
|
11529
11625
|
const tagId = "dsh-diff-approval/PendingPanel.module.css";
|
|
11530
11626
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
11531
11627
|
const tag = document.createElement("style");
|
|
@@ -11535,58 +11631,69 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11535
11631
|
document.head.appendChild(tag);
|
|
11536
11632
|
}
|
|
11537
11633
|
var PendingPanel_module_css_default = {
|
|
11538
|
-
"
|
|
11539
|
-
"
|
|
11540
|
-
"
|
|
11541
|
-
"hint": "F1KBNa_hint",
|
|
11542
|
-
"diffStats": "F1KBNa_diffStats",
|
|
11543
|
-
"flexSpacer": "F1KBNa_flexSpacer",
|
|
11544
|
-
"code": "F1KBNa_code",
|
|
11545
|
-
"close": "F1KBNa_close",
|
|
11546
|
-
"diffPath": "F1KBNa_diffPath",
|
|
11547
|
-
"split": "F1KBNa_split",
|
|
11548
|
-
"missingHint": "F1KBNa_missingHint",
|
|
11549
|
-
"add": "F1KBNa_add",
|
|
11634
|
+
"diffHeader": "F1KBNa_diffHeader",
|
|
11635
|
+
"missing": "F1KBNa_missing",
|
|
11636
|
+
"resizeHandle": "F1KBNa_resizeHandle",
|
|
11550
11637
|
"diffBody": "F1KBNa_diffBody",
|
|
11551
|
-
"
|
|
11638
|
+
"rowPath": "F1KBNa_rowPath",
|
|
11639
|
+
"expandExpanded": "F1KBNa_expandExpanded",
|
|
11640
|
+
"line": "F1KBNa_line",
|
|
11641
|
+
"headerActions": "F1KBNa_headerActions",
|
|
11642
|
+
"states": "F1KBNa_states",
|
|
11643
|
+
"detailEmpty": "F1KBNa_detailEmpty",
|
|
11644
|
+
"markerDel": "F1KBNa_markerDel",
|
|
11645
|
+
"close": "F1KBNa_close",
|
|
11646
|
+
"markerAdd": "F1KBNa_markerAdd",
|
|
11647
|
+
"statusBar": "F1KBNa_statusBar",
|
|
11648
|
+
"diffStats": "F1KBNa_diffStats",
|
|
11649
|
+
"footerButtons": "F1KBNa_footerButtons",
|
|
11650
|
+
"title": "F1KBNa_title",
|
|
11651
|
+
"row": "F1KBNa_row",
|
|
11652
|
+
"delCount": "F1KBNa_delCount",
|
|
11653
|
+
"expand": "F1KBNa_expand",
|
|
11654
|
+
"layer": "F1KBNa_layer",
|
|
11552
11655
|
"diffActions": "F1KBNa_diffActions",
|
|
11553
|
-
"
|
|
11554
|
-
"badgeLabel": "F1KBNa_badgeLabel",
|
|
11555
|
-
"fileList": "F1KBNa_fileList",
|
|
11556
|
-
"rowMeta": "F1KBNa_rowMeta",
|
|
11557
|
-
"del": "F1KBNa_del",
|
|
11656
|
+
"context": "F1KBNa_context",
|
|
11558
11657
|
"langSelect": "F1KBNa_langSelect",
|
|
11658
|
+
"kindTag": "F1KBNa_kindTag",
|
|
11559
11659
|
"langLabel": "F1KBNa_langLabel",
|
|
11560
|
-
"
|
|
11561
|
-
"
|
|
11660
|
+
"flexSpacer": "F1KBNa_flexSpacer",
|
|
11661
|
+
"add": "F1KBNa_add",
|
|
11662
|
+
"badgeLabel": "F1KBNa_badgeLabel",
|
|
11663
|
+
"diffPath": "F1KBNa_diffPath",
|
|
11664
|
+
"badgeCount": "F1KBNa_badgeCount",
|
|
11562
11665
|
"rows": "F1KBNa_rows",
|
|
11563
|
-
"divergedHint": "F1KBNa_divergedHint",
|
|
11564
|
-
"states": "F1KBNa_states",
|
|
11565
|
-
"statusAction": "F1KBNa_statusAction",
|
|
11566
|
-
"kindTag": "F1KBNa_kindTag",
|
|
11567
|
-
"footerButtons": "F1KBNa_footerButtons",
|
|
11568
|
-
"gutter": "F1KBNa_gutter",
|
|
11569
|
-
"addCount": "F1KBNa_addCount",
|
|
11570
|
-
"line": "F1KBNa_line",
|
|
11571
|
-
"statusBar": "F1KBNa_statusBar",
|
|
11572
|
-
"detail": "F1KBNa_detail",
|
|
11573
|
-
"missing": "F1KBNa_missing",
|
|
11574
|
-
"resizeHandle": "F1KBNa_resizeHandle",
|
|
11575
|
-
"diffHeader": "F1KBNa_diffHeader",
|
|
11576
|
-
"group": "F1KBNa_group",
|
|
11577
11666
|
"rail": "F1KBNa_rail",
|
|
11578
|
-
"
|
|
11579
|
-
"
|
|
11580
|
-
"
|
|
11581
|
-
"
|
|
11667
|
+
"lines": "F1KBNa_lines",
|
|
11668
|
+
"hint": "F1KBNa_hint",
|
|
11669
|
+
"code": "F1KBNa_code",
|
|
11670
|
+
"detail": "F1KBNa_detail",
|
|
11671
|
+
"readError": "F1KBNa_readError",
|
|
11582
11672
|
"action": "F1KBNa_action",
|
|
11583
|
-
"
|
|
11584
|
-
"
|
|
11585
|
-
"layer": "F1KBNa_layer",
|
|
11586
|
-
"rowPath": "F1KBNa_rowPath",
|
|
11673
|
+
"header": "F1KBNa_header",
|
|
11674
|
+
"statusAction": "F1KBNa_statusAction",
|
|
11587
11675
|
"panel": "F1KBNa_panel",
|
|
11676
|
+
"overviewMarker": "F1KBNa_overviewMarker",
|
|
11677
|
+
"blockActions": "F1KBNa_blockActions",
|
|
11678
|
+
"iconAction": "F1KBNa_iconAction",
|
|
11679
|
+
"rowHead": "F1KBNa_rowHead",
|
|
11680
|
+
"vSpacer": "F1KBNa_vSpacer",
|
|
11681
|
+
"missingHint": "F1KBNa_missingHint",
|
|
11588
11682
|
"note": "F1KBNa_note",
|
|
11589
|
-
"
|
|
11683
|
+
"gutter": "F1KBNa_gutter",
|
|
11684
|
+
"split": "F1KBNa_split",
|
|
11685
|
+
"divergedHint": "F1KBNa_divergedHint",
|
|
11686
|
+
"overviewRuler": "F1KBNa_overviewRuler",
|
|
11687
|
+
"rowMeta": "F1KBNa_rowMeta",
|
|
11688
|
+
"addCount": "F1KBNa_addCount",
|
|
11689
|
+
"diff": "F1KBNa_diff",
|
|
11690
|
+
"fileList": "F1KBNa_fileList",
|
|
11691
|
+
"actionPrimary": "F1KBNa_actionPrimary",
|
|
11692
|
+
"kindHint": "F1KBNa_kindHint",
|
|
11693
|
+
"diffBodyWrap": "F1KBNa_diffBodyWrap",
|
|
11694
|
+
"del": "F1KBNa_del",
|
|
11695
|
+
"badge": "F1KBNa_badge",
|
|
11696
|
+
"group": "F1KBNa_group"
|
|
11590
11697
|
};
|
|
11591
11698
|
//#endregion
|
|
11592
11699
|
//#region lib/types/client/PendingPanel.js
|
|
@@ -11602,6 +11709,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11602
11709
|
const FALLBACK_BOTTOM_PX = 128;
|
|
11603
11710
|
/** Gap kept between the composer's top edge and the panel bottom, in px. */
|
|
11604
11711
|
const COMPOSER_GAP_PX = 12;
|
|
11712
|
+
/** Fixed window-edge inset used when expanded, mirroring `.panel`'s top/left/right. */
|
|
11713
|
+
const PANEL_INSET_PX = 8;
|
|
11605
11714
|
/** The harness composer seat (conversation scroll body + seat div). */
|
|
11606
11715
|
const SCROLL_SELECTOR = "[data-conversation-scroll]";
|
|
11607
11716
|
const SEAT_SELECTOR = "[data-composer-seat]";
|
|
@@ -11616,6 +11725,10 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11616
11725
|
/** File-list pane width bounds for the manual split drag, in px. */
|
|
11617
11726
|
const MIN_LIST_WIDTH_PX = 160;
|
|
11618
11727
|
const MAX_LIST_WIDTH_PX = 560;
|
|
11728
|
+
/** Fixed diff-row height in px; the virtual window and jump math are built on it. */
|
|
11729
|
+
const ROW_HEIGHT_PX = 22;
|
|
11730
|
+
/** Rows rendered beyond the visible window in each direction. */
|
|
11731
|
+
const OVERSCAN_ROWS = 8;
|
|
11619
11732
|
/** The trailing file-name segment of a path, used for row display. */
|
|
11620
11733
|
function basenameOf(path) {
|
|
11621
11734
|
const index = Math.max(path.lastIndexOf("/"), path.lastIndexOf("\\"));
|
|
@@ -11627,6 +11740,86 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11627
11740
|
del: PendingPanel_module_css_default.del,
|
|
11628
11741
|
add: PendingPanel_module_css_default.add
|
|
11629
11742
|
};
|
|
11743
|
+
/**
|
|
11744
|
+
* One rendered diff row, memoized so a poll or an unrelated state change
|
|
11745
|
+
* does not re-render rows whose content, highlight, and focus are unchanged.
|
|
11746
|
+
*/
|
|
11747
|
+
const DiffRow = (0, react.memo)(function DiffRow(props) {
|
|
11748
|
+
const { index, row, runs, focused, onRowHover } = props;
|
|
11749
|
+
const lineNumber = row.kind === "del" ? row.oldLine : row.newLine;
|
|
11750
|
+
const sideRuns = row.kind === "del" ? runs?.oldRuns : runs?.newRuns;
|
|
11751
|
+
const lineRuns = lineNumber === void 0 ? void 0 : sideRuns?.[lineNumber - 1];
|
|
11752
|
+
const content = lineRuns === void 0 || lineRuns.length === 0 ? row.text === "" ? "\xA0" : row.text : lineRuns.map((span, spanIndex) => (0, react_jsx_runtime.jsx)("span", {
|
|
11753
|
+
style: span.style,
|
|
11754
|
+
children: span.text
|
|
11755
|
+
}, spanIndex));
|
|
11756
|
+
return (0, react_jsx_runtime.jsxs)("div", {
|
|
11757
|
+
className: `${PendingPanel_module_css_default.line} ${ROW_CLASS[row.kind]}`,
|
|
11758
|
+
"data-diff-line": row.kind,
|
|
11759
|
+
"data-diff-row": index,
|
|
11760
|
+
"data-diff-focused": focused ? "" : void 0,
|
|
11761
|
+
onMouseEnter: () => {
|
|
11762
|
+
onRowHover(index);
|
|
11763
|
+
},
|
|
11764
|
+
children: [
|
|
11765
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
11766
|
+
className: PendingPanel_module_css_default.gutter,
|
|
11767
|
+
children: row.oldLine ?? ""
|
|
11768
|
+
}),
|
|
11769
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
11770
|
+
className: PendingPanel_module_css_default.gutter,
|
|
11771
|
+
children: row.newLine ?? ""
|
|
11772
|
+
}),
|
|
11773
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
11774
|
+
className: PendingPanel_module_css_default.code,
|
|
11775
|
+
"data-diff-code": true,
|
|
11776
|
+
children: content
|
|
11777
|
+
})
|
|
11778
|
+
]
|
|
11779
|
+
});
|
|
11780
|
+
});
|
|
11781
|
+
/**
|
|
11782
|
+
* One diff block's old/new line ranges, 1-based inclusive, for block-level
|
|
11783
|
+
* keep/revert. A side with no lines (a pure addition or deletion) is empty;
|
|
11784
|
+
* its start is that side's insertion point — the line after the surrounding
|
|
11785
|
+
* context — so the host can insert there.
|
|
11786
|
+
* @param rows - the whole-file diff rows.
|
|
11787
|
+
* @param block - the block's row range.
|
|
11788
|
+
* @returns the old and new line ranges.
|
|
11789
|
+
*/
|
|
11790
|
+
function blockRangesOf(rows, block) {
|
|
11791
|
+
let oldStart = Infinity;
|
|
11792
|
+
let oldEnd = -Infinity;
|
|
11793
|
+
let newStart = Infinity;
|
|
11794
|
+
let newEnd = -Infinity;
|
|
11795
|
+
for (let index = block.start; index <= block.end; index++) {
|
|
11796
|
+
const row = rows[index];
|
|
11797
|
+
if (row === void 0) continue;
|
|
11798
|
+
if (row.oldLine !== void 0) {
|
|
11799
|
+
oldStart = Math.min(oldStart, row.oldLine);
|
|
11800
|
+
oldEnd = Math.max(oldEnd, row.oldLine);
|
|
11801
|
+
}
|
|
11802
|
+
if (row.newLine !== void 0) {
|
|
11803
|
+
newStart = Math.min(newStart, row.newLine);
|
|
11804
|
+
newEnd = Math.max(newEnd, row.newLine);
|
|
11805
|
+
}
|
|
11806
|
+
}
|
|
11807
|
+
const before = rows[block.start - 1];
|
|
11808
|
+
if (oldStart === Infinity) {
|
|
11809
|
+
oldStart = (before?.oldLine ?? 0) + 1;
|
|
11810
|
+
oldEnd = oldStart - 1;
|
|
11811
|
+
}
|
|
11812
|
+
if (newStart === Infinity) {
|
|
11813
|
+
newStart = (before?.newLine ?? 0) + 1;
|
|
11814
|
+
newEnd = newStart - 1;
|
|
11815
|
+
}
|
|
11816
|
+
return {
|
|
11817
|
+
oldStart,
|
|
11818
|
+
oldEnd,
|
|
11819
|
+
newStart,
|
|
11820
|
+
newEnd
|
|
11821
|
+
};
|
|
11822
|
+
}
|
|
11630
11823
|
/** Split a row list into maximal runs of non-context rows. */
|
|
11631
11824
|
function changeBlocksOf(diff) {
|
|
11632
11825
|
const blocks = [];
|
|
@@ -11711,48 +11904,48 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11711
11904
|
const stats = (0, react.useMemo)(() => computeWholeFileDiff(file.oldText, file.newText), [file.oldText, file.newText]);
|
|
11712
11905
|
return (0, react_jsx_runtime.jsx)("li", {
|
|
11713
11906
|
className: PendingPanel_module_css_default.row,
|
|
11714
|
-
children: (0, react_jsx_runtime.
|
|
11715
|
-
|
|
11716
|
-
|
|
11717
|
-
|
|
11718
|
-
|
|
11719
|
-
|
|
11720
|
-
|
|
11721
|
-
|
|
11722
|
-
(
|
|
11723
|
-
|
|
11724
|
-
|
|
11725
|
-
|
|
11726
|
-
|
|
11907
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
11908
|
+
label: file.path,
|
|
11909
|
+
delayMs: 500,
|
|
11910
|
+
maxWidth: 560,
|
|
11911
|
+
children: (0, react_jsx_runtime.jsxs)("button", {
|
|
11912
|
+
type: "button",
|
|
11913
|
+
className: PendingPanel_module_css_default.rowHead,
|
|
11914
|
+
"data-selected": selected || void 0,
|
|
11915
|
+
onClick: () => {
|
|
11916
|
+
onSelect(file.id);
|
|
11917
|
+
},
|
|
11918
|
+
children: [
|
|
11919
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
11727
11920
|
className: PendingPanel_module_css_default.rowPath,
|
|
11728
11921
|
children: basenameOf(file.path)
|
|
11922
|
+
}),
|
|
11923
|
+
file.kind === "create" && (0, react_jsx_runtime.jsx)("span", {
|
|
11924
|
+
className: PendingPanel_module_css_default.kindTag,
|
|
11925
|
+
children: t("row.create")
|
|
11926
|
+
}),
|
|
11927
|
+
file.missing && (0, react_jsx_runtime.jsx)("span", {
|
|
11928
|
+
className: PendingPanel_module_css_default.missing,
|
|
11929
|
+
title: t("panel.missingHint"),
|
|
11930
|
+
children: t("panel.missing")
|
|
11931
|
+
}),
|
|
11932
|
+
(0, react_jsx_runtime.jsxs)("span", {
|
|
11933
|
+
className: PendingPanel_module_css_default.rowMeta,
|
|
11934
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
11935
|
+
className: PendingPanel_module_css_default.addCount,
|
|
11936
|
+
children: t("row.added", { added: stats.added })
|
|
11937
|
+
}), (0, react_jsx_runtime.jsx)("span", {
|
|
11938
|
+
className: PendingPanel_module_css_default.delCount,
|
|
11939
|
+
children: t("row.removed", { removed: stats.removed })
|
|
11940
|
+
})]
|
|
11729
11941
|
})
|
|
11730
|
-
|
|
11731
|
-
|
|
11732
|
-
className: PendingPanel_module_css_default.kindTag,
|
|
11733
|
-
children: t("row.create")
|
|
11734
|
-
}),
|
|
11735
|
-
file.missing && (0, react_jsx_runtime.jsx)("span", {
|
|
11736
|
-
className: PendingPanel_module_css_default.missing,
|
|
11737
|
-
title: t("panel.missingHint"),
|
|
11738
|
-
children: t("panel.missing")
|
|
11739
|
-
}),
|
|
11740
|
-
(0, react_jsx_runtime.jsxs)("span", {
|
|
11741
|
-
className: PendingPanel_module_css_default.rowMeta,
|
|
11742
|
-
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
11743
|
-
className: PendingPanel_module_css_default.addCount,
|
|
11744
|
-
children: t("row.added", { added: stats.added })
|
|
11745
|
-
}), (0, react_jsx_runtime.jsx)("span", {
|
|
11746
|
-
className: PendingPanel_module_css_default.delCount,
|
|
11747
|
-
children: t("row.removed", { removed: stats.removed })
|
|
11748
|
-
})]
|
|
11749
|
-
})
|
|
11750
|
-
]
|
|
11942
|
+
]
|
|
11943
|
+
})
|
|
11751
11944
|
})
|
|
11752
11945
|
});
|
|
11753
11946
|
}
|
|
11754
11947
|
/** The selected file's diff, actions, jump controls, and copy toolbar. */
|
|
11755
|
-
function PendingDiff({ file,
|
|
11948
|
+
function PendingDiff({ file, busy, workspacePath, t, onKeep, onRevert, onBlockKeep, onBlockRevert, onOpen }) {
|
|
11756
11949
|
const [langOverride, setLangOverride] = (0, react.useState)(void 0);
|
|
11757
11950
|
const [langMenuOpen, setLangMenuOpen] = (0, react.useState)(false);
|
|
11758
11951
|
const langMenuItems = (0, react.useMemo)(() => [{
|
|
@@ -11760,11 +11953,11 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11760
11953
|
label: t("action.langAuto")
|
|
11761
11954
|
}, ...HIGHLIGHT_LANGS.map((language) => ({
|
|
11762
11955
|
id: language,
|
|
11763
|
-
label: language
|
|
11956
|
+
label: languageDisplayName(language)
|
|
11764
11957
|
}))], [t]);
|
|
11765
11958
|
const detectedLang = (0, react.useMemo)(() => langFromPath(file.path), [file.path]);
|
|
11766
11959
|
const lang = (0, react.useMemo)(() => langOverride ?? detectedLang, [detectedLang, langOverride]);
|
|
11767
|
-
const langLabel = langOverride
|
|
11960
|
+
const langLabel = langOverride === void 0 ? detectedLang === void 0 ? t("action.langAuto") : t("action.langAutoDetected", { lang: languageDisplayName(detectedLang) }) : languageDisplayName(langOverride);
|
|
11768
11961
|
const model = (0, react.useMemo)(() => {
|
|
11769
11962
|
const diff = computeWholeFileDiff(file.oldText, file.newText);
|
|
11770
11963
|
return {
|
|
@@ -11772,6 +11965,41 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11772
11965
|
blocks: changeBlocksOf(diff)
|
|
11773
11966
|
};
|
|
11774
11967
|
}, [file.oldText, file.newText]);
|
|
11968
|
+
const rulerMarkers = (0, react.useMemo)(() => {
|
|
11969
|
+
const rows = model.diff.rows;
|
|
11970
|
+
const total = rows.length;
|
|
11971
|
+
if (total === 0) return [];
|
|
11972
|
+
const markers = [];
|
|
11973
|
+
let runStart = -1;
|
|
11974
|
+
let runKind = "del";
|
|
11975
|
+
const flush = (end) => {
|
|
11976
|
+
const span = end - runStart + 1;
|
|
11977
|
+
markers.push({
|
|
11978
|
+
top: runStart / total * 100,
|
|
11979
|
+
height: span / total * 100,
|
|
11980
|
+
kind: runKind
|
|
11981
|
+
});
|
|
11982
|
+
};
|
|
11983
|
+
rows.forEach((row, index) => {
|
|
11984
|
+
if (row.kind === "context") {
|
|
11985
|
+
if (runStart !== -1) {
|
|
11986
|
+
flush(index - 1);
|
|
11987
|
+
runStart = -1;
|
|
11988
|
+
}
|
|
11989
|
+
return;
|
|
11990
|
+
}
|
|
11991
|
+
if (runStart === -1) {
|
|
11992
|
+
runStart = index;
|
|
11993
|
+
runKind = row.kind;
|
|
11994
|
+
} else if (row.kind !== runKind) {
|
|
11995
|
+
flush(index - 1);
|
|
11996
|
+
runStart = index;
|
|
11997
|
+
runKind = row.kind;
|
|
11998
|
+
}
|
|
11999
|
+
});
|
|
12000
|
+
if (runStart !== -1) flush(rows.length - 1);
|
|
12001
|
+
return markers;
|
|
12002
|
+
}, [model]);
|
|
11775
12003
|
const [runs, setRuns] = (0, react.useState)(void 0);
|
|
11776
12004
|
(0, react.useEffect)(() => {
|
|
11777
12005
|
setRuns(void 0);
|
|
@@ -11790,41 +12018,96 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11790
12018
|
file.newText,
|
|
11791
12019
|
lang
|
|
11792
12020
|
]);
|
|
11793
|
-
const rowRefs = (0, react.useRef)(/* @__PURE__ */ new Map());
|
|
11794
12021
|
const bodyRef = (0, react.useRef)(null);
|
|
11795
12022
|
const [focus, setFocus] = (0, react.useState)(0);
|
|
12023
|
+
const [scrollTick, setScrollTick] = (0, react.useState)(0);
|
|
12024
|
+
const [scrollTop, setScrollTop] = (0, react.useState)(0);
|
|
12025
|
+
const [viewportHeight, setViewportHeight] = (0, react.useState)(0);
|
|
12026
|
+
const [hoveredBlock, setHoveredBlock] = (0, react.useState)(void 0);
|
|
11796
12027
|
const [selection, setSelection] = (0, react.useState)(void 0);
|
|
11797
12028
|
const [copied, setCopied] = (0, react.useState)(false);
|
|
11798
12029
|
(0, react.useEffect)(() => {
|
|
11799
12030
|
setFocus(0);
|
|
12031
|
+
setScrollTop(0);
|
|
12032
|
+
if (bodyRef.current !== null) bodyRef.current.scrollTop = 0;
|
|
12033
|
+
setHoveredBlock(void 0);
|
|
11800
12034
|
setSelection(void 0);
|
|
11801
12035
|
setLangOverride(void 0);
|
|
11802
12036
|
setLangMenuOpen(false);
|
|
11803
12037
|
setCopied(false);
|
|
11804
12038
|
}, [file.id]);
|
|
12039
|
+
const blockRanges = (0, react.useMemo)(() => {
|
|
12040
|
+
return model.blocks.map((block) => blockRangesOf(model.diff.rows, block));
|
|
12041
|
+
}, [model]);
|
|
12042
|
+
const blockIndexByRow = (0, react.useMemo)(() => {
|
|
12043
|
+
const map = /* @__PURE__ */ new Map();
|
|
12044
|
+
model.blocks.forEach((block, blockIndex) => {
|
|
12045
|
+
for (let index = block.start; index <= block.end; index++) map.set(index, blockIndex);
|
|
12046
|
+
});
|
|
12047
|
+
return map;
|
|
12048
|
+
}, [model]);
|
|
12049
|
+
const onRowHover = (0, react.useCallback)((index) => {
|
|
12050
|
+
setHoveredBlock(blockIndexByRow.get(index));
|
|
12051
|
+
}, [blockIndexByRow]);
|
|
12052
|
+
const rows = model.diff.rows;
|
|
12053
|
+
const rowCount = rows.length;
|
|
12054
|
+
const viewport = viewportHeight > 0 ? viewportHeight : rowCount * ROW_HEIGHT_PX;
|
|
12055
|
+
const start = Math.max(0, Math.floor(scrollTop / ROW_HEIGHT_PX) - OVERSCAN_ROWS);
|
|
12056
|
+
const end = Math.min(rowCount, Math.ceil((scrollTop + viewport) / ROW_HEIGHT_PX) + OVERSCAN_ROWS);
|
|
12057
|
+
const visibleRows = rows.slice(start, end);
|
|
12058
|
+
const widestLine = (0, react.useMemo)(() => {
|
|
12059
|
+
let widest = 0;
|
|
12060
|
+
for (const row of model.diff.rows) if (row.text.length > widest) widest = row.text.length;
|
|
12061
|
+
return widest;
|
|
12062
|
+
}, [model]);
|
|
11805
12063
|
(0, react.useEffect)(() => {
|
|
11806
|
-
|
|
12064
|
+
const body = bodyRef.current;
|
|
12065
|
+
if (body === null) return;
|
|
12066
|
+
const measure = () => {
|
|
12067
|
+
setViewportHeight(body.clientHeight);
|
|
12068
|
+
};
|
|
12069
|
+
measure();
|
|
12070
|
+
const observer = typeof ResizeObserver === "undefined" ? null : new ResizeObserver(measure);
|
|
12071
|
+
observer?.observe(body);
|
|
12072
|
+
return () => {
|
|
12073
|
+
observer?.disconnect();
|
|
12074
|
+
};
|
|
12075
|
+
}, [file.id]);
|
|
12076
|
+
(0, react.useEffect)(() => {
|
|
12077
|
+
if (rowCount === 0) return;
|
|
11807
12078
|
const block = model.blocks[focus];
|
|
11808
12079
|
if (block === void 0) return;
|
|
11809
|
-
|
|
11810
|
-
|
|
12080
|
+
const body = bodyRef.current;
|
|
12081
|
+
if (body === null) return;
|
|
12082
|
+
const target = block.start * ROW_HEIGHT_PX + ROW_HEIGHT_PX / 2 - body.clientHeight / 2;
|
|
12083
|
+
const clamped = Math.max(0, Math.min(target, body.scrollHeight - body.clientHeight));
|
|
12084
|
+
if (body.scrollTop !== clamped) body.scrollTop = clamped;
|
|
12085
|
+
setScrollTop(clamped);
|
|
12086
|
+
}, [
|
|
12087
|
+
model,
|
|
12088
|
+
focus,
|
|
12089
|
+
scrollTick,
|
|
12090
|
+
rowCount
|
|
12091
|
+
]);
|
|
11811
12092
|
const jump = (direction) => {
|
|
12093
|
+
if (rowCount === 0) return;
|
|
11812
12094
|
setFocus((current) => {
|
|
11813
|
-
if (model.blocks.length === 0) return current;
|
|
11814
12095
|
if (direction === -1) return (current - 1 + model.blocks.length) % model.blocks.length;
|
|
11815
|
-
const
|
|
12096
|
+
const top = bodyRef.current?.scrollTop ?? 0;
|
|
11816
12097
|
for (let index = current + 1; index < model.blocks.length; index++) {
|
|
11817
12098
|
const block = model.blocks[index];
|
|
11818
12099
|
if (block === void 0) continue;
|
|
11819
|
-
|
|
11820
|
-
if (row === void 0 || bodyRect === void 0 || row.getBoundingClientRect().top >= bodyRect.top) return index;
|
|
12100
|
+
if (block.start * ROW_HEIGHT_PX >= top) return index;
|
|
11821
12101
|
}
|
|
11822
12102
|
return 0;
|
|
11823
12103
|
});
|
|
12104
|
+
setScrollTick((tick) => tick + 1);
|
|
11824
12105
|
};
|
|
11825
|
-
const
|
|
11826
|
-
|
|
11827
|
-
|
|
12106
|
+
const onScroll = () => {
|
|
12107
|
+
const body = bodyRef.current;
|
|
12108
|
+
if (body === null) return;
|
|
12109
|
+
setScrollTop(body.scrollTop);
|
|
12110
|
+
setViewportHeight(body.clientHeight);
|
|
11828
12111
|
};
|
|
11829
12112
|
(0, react.useEffect)(() => {
|
|
11830
12113
|
const update = () => setSelection(rowRangeOf(window.getSelection()));
|
|
@@ -11836,9 +12119,9 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11836
12119
|
}, [file.id]);
|
|
11837
12120
|
const selectionReference = (() => {
|
|
11838
12121
|
if (selection === void 0) return void 0;
|
|
11839
|
-
const lineNumbers = model.diff.rows.slice(selection.start, selection.end + 1).map((row) => row.newLine
|
|
12122
|
+
const lineNumbers = model.diff.rows.slice(selection.start, selection.end + 1).map((row) => row.newLine).filter((number) => number !== void 0);
|
|
11840
12123
|
if (lineNumbers.length === 0) return void 0;
|
|
11841
|
-
return referenceOf(file.path,
|
|
12124
|
+
return referenceOf(file.path, workspacePath, Math.min(...lineNumbers), Math.max(...lineNumbers));
|
|
11842
12125
|
})();
|
|
11843
12126
|
const copySelection = (0, react.useCallback)(async () => {
|
|
11844
12127
|
if (selectionReference === void 0) return;
|
|
@@ -11861,17 +12144,6 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11861
12144
|
document.removeEventListener("keydown", onKeyDown);
|
|
11862
12145
|
};
|
|
11863
12146
|
}, [copySelection]);
|
|
11864
|
-
/** One line's text: token spans when highlighted, plain text otherwise. */
|
|
11865
|
-
const renderLine = (row) => {
|
|
11866
|
-
const lineNumber = row.kind === "del" ? row.oldLine : row.newLine;
|
|
11867
|
-
const sideRuns = row.kind === "del" ? runs?.oldRuns : runs?.newRuns;
|
|
11868
|
-
const lineRuns = lineNumber === void 0 ? void 0 : sideRuns?.[lineNumber - 1];
|
|
11869
|
-
if (lineRuns === void 0 || lineRuns.length === 0) return row.text === "" ? "\xA0" : row.text;
|
|
11870
|
-
return lineRuns.map((span, index) => (0, react_jsx_runtime.jsx)("span", {
|
|
11871
|
-
style: span.style,
|
|
11872
|
-
children: span.text
|
|
11873
|
-
}, index));
|
|
11874
|
-
};
|
|
11875
12147
|
const focusedBlock = model.blocks.length > 0 ? model.blocks[focus] : void 0;
|
|
11876
12148
|
const inFocusedBlock = (index) => focusedBlock !== void 0 && index >= focusedBlock.start && index <= focusedBlock.end;
|
|
11877
12149
|
return (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -11885,27 +12157,35 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11885
12157
|
className: PendingPanel_module_css_default.diffPath,
|
|
11886
12158
|
children: file.path
|
|
11887
12159
|
}),
|
|
11888
|
-
(0, react_jsx_runtime.jsx)(
|
|
11889
|
-
|
|
11890
|
-
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
|
|
11896
|
-
|
|
11897
|
-
|
|
12160
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
12161
|
+
label: t("action.openFile"),
|
|
12162
|
+
side: "bottom",
|
|
12163
|
+
delayMs: 500,
|
|
12164
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
12165
|
+
type: "button",
|
|
12166
|
+
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.iconAction}`,
|
|
12167
|
+
"data-diff-open": true,
|
|
12168
|
+
"aria-label": t("action.openFile"),
|
|
12169
|
+
onClick: () => {
|
|
12170
|
+
onOpen(file.sessionId, file.id, "open");
|
|
12171
|
+
},
|
|
12172
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconBrowseOutline16, { size: 14 })
|
|
12173
|
+
})
|
|
11898
12174
|
}),
|
|
11899
|
-
(0, react_jsx_runtime.jsx)(
|
|
11900
|
-
|
|
11901
|
-
|
|
11902
|
-
|
|
11903
|
-
|
|
11904
|
-
|
|
11905
|
-
|
|
11906
|
-
|
|
11907
|
-
|
|
11908
|
-
|
|
12175
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
12176
|
+
label: t("action.revealFile"),
|
|
12177
|
+
side: "bottom",
|
|
12178
|
+
delayMs: 500,
|
|
12179
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
12180
|
+
type: "button",
|
|
12181
|
+
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.iconAction}`,
|
|
12182
|
+
"data-diff-reveal": true,
|
|
12183
|
+
"aria-label": t("action.revealFile"),
|
|
12184
|
+
onClick: () => {
|
|
12185
|
+
onOpen(file.sessionId, file.id, "reveal");
|
|
12186
|
+
},
|
|
12187
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconFolderOpenOutline16, { size: 14 })
|
|
12188
|
+
})
|
|
11909
12189
|
})
|
|
11910
12190
|
]
|
|
11911
12191
|
}),
|
|
@@ -11923,33 +12203,41 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11923
12203
|
className: PendingPanel_module_css_default.kindHint,
|
|
11924
12204
|
children: t("panel.createHint")
|
|
11925
12205
|
}),
|
|
11926
|
-
model.blocks.length > 0 && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(
|
|
11927
|
-
|
|
11928
|
-
|
|
11929
|
-
|
|
11930
|
-
|
|
11931
|
-
|
|
11932
|
-
|
|
11933
|
-
|
|
11934
|
-
|
|
11935
|
-
|
|
11936
|
-
|
|
11937
|
-
|
|
11938
|
-
|
|
11939
|
-
|
|
11940
|
-
|
|
11941
|
-
|
|
11942
|
-
|
|
11943
|
-
|
|
11944
|
-
|
|
11945
|
-
|
|
11946
|
-
|
|
11947
|
-
|
|
12206
|
+
model.blocks.length > 0 && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
12207
|
+
label: t("action.prevDiff"),
|
|
12208
|
+
side: "bottom",
|
|
12209
|
+
delayMs: 500,
|
|
12210
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
12211
|
+
type: "button",
|
|
12212
|
+
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.iconAction}`,
|
|
12213
|
+
"data-diff-prev": true,
|
|
12214
|
+
"aria-label": t("action.prevDiff"),
|
|
12215
|
+
disabled: busy,
|
|
12216
|
+
onClick: () => {
|
|
12217
|
+
jump(-1);
|
|
12218
|
+
},
|
|
12219
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronUpOutline14, { size: 14 })
|
|
12220
|
+
})
|
|
12221
|
+
}), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
12222
|
+
label: t("action.nextDiff"),
|
|
12223
|
+
side: "bottom",
|
|
12224
|
+
delayMs: 500,
|
|
12225
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
12226
|
+
type: "button",
|
|
12227
|
+
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.iconAction}`,
|
|
12228
|
+
"data-diff-next": true,
|
|
12229
|
+
"aria-label": t("action.nextDiff"),
|
|
12230
|
+
disabled: busy,
|
|
12231
|
+
onClick: () => {
|
|
12232
|
+
jump(1);
|
|
12233
|
+
},
|
|
12234
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, { size: 14 })
|
|
12235
|
+
})
|
|
11948
12236
|
})] }),
|
|
11949
12237
|
(0, react_jsx_runtime.jsx)("span", { className: PendingPanel_module_css_default.flexSpacer }),
|
|
11950
12238
|
(0, react_jsx_runtime.jsx)("button", {
|
|
11951
12239
|
type: "button",
|
|
11952
|
-
className: PendingPanel_module_css_default.action
|
|
12240
|
+
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.actionPrimary}`,
|
|
11953
12241
|
"data-diff-keep": true,
|
|
11954
12242
|
disabled: busy,
|
|
11955
12243
|
onClick: () => {
|
|
@@ -11973,34 +12261,78 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
11973
12261
|
className: PendingPanel_module_css_default.missingHint,
|
|
11974
12262
|
children: t("panel.missingHint")
|
|
11975
12263
|
}),
|
|
11976
|
-
(0, react_jsx_runtime.
|
|
11977
|
-
className: PendingPanel_module_css_default.
|
|
11978
|
-
|
|
11979
|
-
|
|
11980
|
-
|
|
11981
|
-
|
|
11982
|
-
|
|
11983
|
-
|
|
11984
|
-
|
|
11985
|
-
|
|
11986
|
-
|
|
12264
|
+
(0, react_jsx_runtime.jsxs)("div", {
|
|
12265
|
+
className: PendingPanel_module_css_default.diffBodyWrap,
|
|
12266
|
+
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
12267
|
+
className: PendingPanel_module_css_default.diffBody,
|
|
12268
|
+
ref: bodyRef,
|
|
12269
|
+
onScroll,
|
|
12270
|
+
onMouseLeave: () => {
|
|
12271
|
+
setHoveredBlock(void 0);
|
|
12272
|
+
},
|
|
12273
|
+
"data-diff-body": true,
|
|
12274
|
+
children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
12275
|
+
className: PendingPanel_module_css_default.lines,
|
|
12276
|
+
style: { minWidth: `max(100%, ${widestLine}ch)` },
|
|
11987
12277
|
children: [
|
|
11988
|
-
(0, react_jsx_runtime.jsx)("
|
|
11989
|
-
className: PendingPanel_module_css_default.
|
|
11990
|
-
|
|
12278
|
+
start > 0 && (0, react_jsx_runtime.jsx)("div", {
|
|
12279
|
+
className: PendingPanel_module_css_default.vSpacer,
|
|
12280
|
+
style: { height: start * ROW_HEIGHT_PX },
|
|
12281
|
+
"aria-hidden": "true"
|
|
11991
12282
|
}),
|
|
11992
|
-
(
|
|
11993
|
-
|
|
11994
|
-
|
|
12283
|
+
visibleRows.map((row, offset) => {
|
|
12284
|
+
const index = start + offset;
|
|
12285
|
+
return (0, react_jsx_runtime.jsx)(DiffRow, {
|
|
12286
|
+
index,
|
|
12287
|
+
row,
|
|
12288
|
+
runs,
|
|
12289
|
+
focused: inFocusedBlock(index),
|
|
12290
|
+
onRowHover
|
|
12291
|
+
}, index);
|
|
11995
12292
|
}),
|
|
11996
|
-
(0, react_jsx_runtime.jsx)("
|
|
11997
|
-
className: PendingPanel_module_css_default.
|
|
11998
|
-
|
|
11999
|
-
|
|
12293
|
+
end < rowCount && (0, react_jsx_runtime.jsx)("div", {
|
|
12294
|
+
className: PendingPanel_module_css_default.vSpacer,
|
|
12295
|
+
style: { height: (rowCount - end) * ROW_HEIGHT_PX },
|
|
12296
|
+
"aria-hidden": "true"
|
|
12000
12297
|
})
|
|
12001
12298
|
]
|
|
12299
|
+
}), hoveredBlock !== void 0 && model.blocks[hoveredBlock] !== void 0 && (0, react_jsx_runtime.jsxs)("div", {
|
|
12300
|
+
className: PendingPanel_module_css_default.blockActions,
|
|
12301
|
+
"data-diff-block-actions": true,
|
|
12302
|
+
style: { top: model.blocks[hoveredBlock].start * ROW_HEIGHT_PX },
|
|
12303
|
+
children: [(0, react_jsx_runtime.jsx)("button", {
|
|
12304
|
+
type: "button",
|
|
12305
|
+
className: `${PendingPanel_module_css_default.action} ${PendingPanel_module_css_default.actionPrimary}`,
|
|
12306
|
+
"data-diff-block-keep": true,
|
|
12307
|
+
disabled: busy,
|
|
12308
|
+
onClick: () => {
|
|
12309
|
+
onBlockKeep(file.sessionId, file.id, blockRanges[hoveredBlock]);
|
|
12310
|
+
},
|
|
12311
|
+
children: t("action.keep")
|
|
12312
|
+
}), (0, react_jsx_runtime.jsx)("button", {
|
|
12313
|
+
type: "button",
|
|
12314
|
+
className: PendingPanel_module_css_default.action,
|
|
12315
|
+
"data-diff-block-revert": true,
|
|
12316
|
+
disabled: busy,
|
|
12317
|
+
onClick: () => {
|
|
12318
|
+
onBlockRevert(file.sessionId, file.id, blockRanges[hoveredBlock]);
|
|
12319
|
+
},
|
|
12320
|
+
children: t("action.revert")
|
|
12321
|
+
})]
|
|
12322
|
+
})]
|
|
12323
|
+
}), rulerMarkers.length > 0 && (0, react_jsx_runtime.jsx)("div", {
|
|
12324
|
+
className: PendingPanel_module_css_default.overviewRuler,
|
|
12325
|
+
"data-diff-approval-ruler": true,
|
|
12326
|
+
"aria-hidden": "true",
|
|
12327
|
+
children: rulerMarkers.map((marker, index) => (0, react_jsx_runtime.jsx)("div", {
|
|
12328
|
+
className: `${PendingPanel_module_css_default.overviewMarker} ${marker.kind === "del" ? PendingPanel_module_css_default.markerDel : PendingPanel_module_css_default.markerAdd}`,
|
|
12329
|
+
"data-diff-ruler-marker": marker.kind,
|
|
12330
|
+
style: {
|
|
12331
|
+
top: `${marker.top}%`,
|
|
12332
|
+
height: `${marker.height}%`
|
|
12333
|
+
}
|
|
12002
12334
|
}, index))
|
|
12003
|
-
})
|
|
12335
|
+
})]
|
|
12004
12336
|
}),
|
|
12005
12337
|
(0, react_jsx_runtime.jsxs)("div", {
|
|
12006
12338
|
className: PendingPanel_module_css_default.statusBar,
|
|
@@ -12038,19 +12370,23 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12038
12370
|
onClose: () => {
|
|
12039
12371
|
setLangMenuOpen(false);
|
|
12040
12372
|
},
|
|
12041
|
-
anchor: (0, react_jsx_runtime.
|
|
12042
|
-
|
|
12043
|
-
|
|
12044
|
-
|
|
12045
|
-
|
|
12046
|
-
|
|
12047
|
-
|
|
12048
|
-
|
|
12049
|
-
|
|
12050
|
-
|
|
12051
|
-
|
|
12052
|
-
|
|
12053
|
-
|
|
12373
|
+
anchor: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
12374
|
+
label: t("action.langSelect"),
|
|
12375
|
+
side: "top",
|
|
12376
|
+
delayMs: 500,
|
|
12377
|
+
children: (0, react_jsx_runtime.jsxs)("button", {
|
|
12378
|
+
type: "button",
|
|
12379
|
+
className: PendingPanel_module_css_default.langSelect,
|
|
12380
|
+
"data-diff-lang": true,
|
|
12381
|
+
"aria-label": t("action.langSelect"),
|
|
12382
|
+
onClick: () => {
|
|
12383
|
+
setLangMenuOpen((value) => !value);
|
|
12384
|
+
},
|
|
12385
|
+
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
12386
|
+
className: PendingPanel_module_css_default.langLabel,
|
|
12387
|
+
children: langLabel
|
|
12388
|
+
}), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, { size: 12 })]
|
|
12389
|
+
})
|
|
12054
12390
|
})
|
|
12055
12391
|
})
|
|
12056
12392
|
]
|
|
@@ -12059,7 +12395,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12059
12395
|
});
|
|
12060
12396
|
}
|
|
12061
12397
|
/** Render the pending-edit review panel and its unified footer action. */
|
|
12062
|
-
function PendingPanel({ wide, useSessions, usePending, onRefresh, onKeep, onRevert, onOpen, t }) {
|
|
12398
|
+
function PendingPanel({ wide, useSessions, usePending, onRefresh, onKeep, onRevert, onBlockKeep, onBlockRevert, onOpen, t }) {
|
|
12063
12399
|
const current = useSessions((state) => state.current);
|
|
12064
12400
|
const snapshot = usePending((snapshot) => snapshot);
|
|
12065
12401
|
const [open, setOpen] = (0, react.useState)(false);
|
|
@@ -12068,6 +12404,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12068
12404
|
const [openedCount, setOpenedCount] = (0, react.useState)(0);
|
|
12069
12405
|
/** Bottom offset tracking the chat composer's top edge so the input stays visible. */
|
|
12070
12406
|
const [bottomPx, setBottomPx] = (0, react.useState)(FALLBACK_BOTTOM_PX);
|
|
12407
|
+
/** Fullscreen expanded: the panel bottom pins to the window edge, ignoring the composer offset. */
|
|
12408
|
+
const [expanded, setExpanded] = (0, react.useState)(false);
|
|
12071
12409
|
/** File-list pane width, adjustable by dragging the divider. */
|
|
12072
12410
|
const [listWidth, setListWidth] = (0, react.useState)(240);
|
|
12073
12411
|
const resizeDrag = (0, react.useRef)(null);
|
|
@@ -12190,7 +12528,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12190
12528
|
className: wide ? PendingPanel_module_css_default.layer : `${PendingPanel_module_css_default.layer} ${PendingPanel_module_css_default.rail}`,
|
|
12191
12529
|
children: [open && (0, react_jsx_runtime.jsxs)("section", {
|
|
12192
12530
|
className: PendingPanel_module_css_default.panel,
|
|
12193
|
-
style: { bottom: bottomPx },
|
|
12531
|
+
style: { bottom: expanded ? PANEL_INSET_PX : bottomPx },
|
|
12194
12532
|
"data-diff-approval-panel": true,
|
|
12195
12533
|
"aria-label": t("panel.title"),
|
|
12196
12534
|
children: [(0, react_jsx_runtime.jsxs)("header", {
|
|
@@ -12198,16 +12536,37 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12198
12536
|
children: [(0, react_jsx_runtime.jsx)("span", {
|
|
12199
12537
|
className: PendingPanel_module_css_default.title,
|
|
12200
12538
|
children: t("panel.title")
|
|
12201
|
-
}), (0, react_jsx_runtime.
|
|
12202
|
-
|
|
12203
|
-
|
|
12204
|
-
|
|
12205
|
-
|
|
12206
|
-
|
|
12207
|
-
|
|
12208
|
-
|
|
12209
|
-
|
|
12210
|
-
|
|
12539
|
+
}), (0, react_jsx_runtime.jsxs)("div", {
|
|
12540
|
+
className: PendingPanel_module_css_default.headerActions,
|
|
12541
|
+
children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
12542
|
+
label: t(expanded ? "action.exitFullscreen" : "action.expand"),
|
|
12543
|
+
side: "bottom",
|
|
12544
|
+
delayMs: 500,
|
|
12545
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
12546
|
+
type: "button",
|
|
12547
|
+
className: expanded ? `${PendingPanel_module_css_default.expand} ${PendingPanel_module_css_default.expandExpanded}` : PendingPanel_module_css_default.expand,
|
|
12548
|
+
"data-diff-approval-expand": true,
|
|
12549
|
+
"aria-label": t(expanded ? "action.exitFullscreen" : "action.expand"),
|
|
12550
|
+
onClick: () => {
|
|
12551
|
+
setExpanded((value) => !value);
|
|
12552
|
+
},
|
|
12553
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconFullscreenOutline16, { size: 14 })
|
|
12554
|
+
})
|
|
12555
|
+
}), (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
12556
|
+
label: t("action.close"),
|
|
12557
|
+
side: "bottom",
|
|
12558
|
+
delayMs: 500,
|
|
12559
|
+
children: (0, react_jsx_runtime.jsx)("button", {
|
|
12560
|
+
type: "button",
|
|
12561
|
+
className: PendingPanel_module_css_default.close,
|
|
12562
|
+
"data-diff-approval-close": true,
|
|
12563
|
+
"aria-label": t("action.close"),
|
|
12564
|
+
onClick: () => {
|
|
12565
|
+
setOpen(false);
|
|
12566
|
+
},
|
|
12567
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCloseOutline16, { size: 14 })
|
|
12568
|
+
})
|
|
12569
|
+
})]
|
|
12211
12570
|
})]
|
|
12212
12571
|
}), snapshot.error !== void 0 || !snapshot.read || files.length === 0 ? (0, react_jsx_runtime.jsxs)("div", {
|
|
12213
12572
|
className: PendingPanel_module_css_default.states,
|
|
@@ -12259,11 +12618,13 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12259
12618
|
children: t("panel.selectHint")
|
|
12260
12619
|
}) : (0, react_jsx_runtime.jsx)(PendingDiff, {
|
|
12261
12620
|
file: selectedFile,
|
|
12262
|
-
files,
|
|
12263
12621
|
busy: snapshot.busy.has(selectedFile.id),
|
|
12622
|
+
workspacePath: snapshot.workspacePath,
|
|
12264
12623
|
t,
|
|
12265
12624
|
onKeep,
|
|
12266
12625
|
onRevert,
|
|
12626
|
+
onBlockKeep,
|
|
12627
|
+
onBlockRevert,
|
|
12267
12628
|
onOpen
|
|
12268
12629
|
})
|
|
12269
12630
|
})
|
|
@@ -12311,7 +12672,7 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12311
12672
|
function createDiffApprovalPort(rpc) {
|
|
12312
12673
|
return {
|
|
12313
12674
|
async list(sessionId) {
|
|
12314
|
-
return
|
|
12675
|
+
return listValueOf(await rpc.call(DIFF_APPROVAL_CHANNEL, "list", { sessionId }));
|
|
12315
12676
|
},
|
|
12316
12677
|
async keep(sessionId, id) {
|
|
12317
12678
|
return actionOf(await rpc.call(DIFF_APPROVAL_CHANNEL, "keep", {
|
|
@@ -12325,6 +12686,20 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12325
12686
|
id
|
|
12326
12687
|
}));
|
|
12327
12688
|
},
|
|
12689
|
+
async blockKeep(sessionId, id, block) {
|
|
12690
|
+
return actionOf(await rpc.call(DIFF_APPROVAL_CHANNEL, "block-keep", {
|
|
12691
|
+
sessionId,
|
|
12692
|
+
id,
|
|
12693
|
+
block
|
|
12694
|
+
}));
|
|
12695
|
+
},
|
|
12696
|
+
async blockRevert(sessionId, id, block) {
|
|
12697
|
+
return actionOf(await rpc.call(DIFF_APPROVAL_CHANNEL, "block-revert", {
|
|
12698
|
+
sessionId,
|
|
12699
|
+
id,
|
|
12700
|
+
block
|
|
12701
|
+
}));
|
|
12702
|
+
},
|
|
12328
12703
|
async open(sessionId, id, action) {
|
|
12329
12704
|
return openOf(await rpc.call(DIFF_APPROVAL_CHANNEL, "open", {
|
|
12330
12705
|
sessionId,
|
|
@@ -12357,18 +12732,23 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12357
12732
|
};
|
|
12358
12733
|
}
|
|
12359
12734
|
/** Narrow the list endpoint's value; a malformed wire value is a read failure. */
|
|
12360
|
-
function
|
|
12735
|
+
function listValueOf(result) {
|
|
12361
12736
|
if (!result.ok) throw new Error(`${result.error.code}: ${result.error.message}`);
|
|
12362
12737
|
const value = result.value;
|
|
12363
12738
|
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("list returned a malformed value");
|
|
12364
12739
|
const rows = value.files;
|
|
12365
12740
|
if (!Array.isArray(rows)) throw new Error("list returned a malformed value");
|
|
12741
|
+
const workspace = value.workspacePath;
|
|
12742
|
+
const workspacePath = typeof workspace === "string" && workspace.length > 0 ? workspace : void 0;
|
|
12366
12743
|
const files = [];
|
|
12367
12744
|
for (const row of rows) {
|
|
12368
12745
|
const file = pendingFileOf(row);
|
|
12369
12746
|
if (file !== void 0) files.push(file);
|
|
12370
12747
|
}
|
|
12371
|
-
return
|
|
12748
|
+
return {
|
|
12749
|
+
files,
|
|
12750
|
+
workspacePath
|
|
12751
|
+
};
|
|
12372
12752
|
}
|
|
12373
12753
|
/** Narrow one action endpoint's value; a malformed wire value is an action failure. */
|
|
12374
12754
|
function actionOf(result) {
|
|
@@ -12455,16 +12835,18 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12455
12835
|
return;
|
|
12456
12836
|
}
|
|
12457
12837
|
try {
|
|
12458
|
-
const files = await port.list(sessionId);
|
|
12838
|
+
const { files, workspacePath } = await port.list(sessionId);
|
|
12459
12839
|
publish({
|
|
12460
12840
|
read: true,
|
|
12461
12841
|
files,
|
|
12842
|
+
workspacePath,
|
|
12462
12843
|
busy: EMPTY_BUSY
|
|
12463
12844
|
});
|
|
12464
12845
|
} catch (error) {
|
|
12465
12846
|
publish({
|
|
12466
12847
|
read: true,
|
|
12467
12848
|
files: snapshot.files,
|
|
12849
|
+
workspacePath: snapshot.workspacePath,
|
|
12468
12850
|
error: error instanceof Error ? error.message : String(error),
|
|
12469
12851
|
busy: snapshot.busy
|
|
12470
12852
|
});
|
|
@@ -12480,6 +12862,42 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12480
12862
|
await port.revert(sessionId, id);
|
|
12481
12863
|
});
|
|
12482
12864
|
},
|
|
12865
|
+
async blockKeep(sessionId, id, block) {
|
|
12866
|
+
const { error: _cleared, ...base } = snapshot;
|
|
12867
|
+
publish({
|
|
12868
|
+
...base,
|
|
12869
|
+
busy: /* @__PURE__ */ new Set([...snapshot.busy, id])
|
|
12870
|
+
});
|
|
12871
|
+
try {
|
|
12872
|
+
await port.blockKeep(sessionId, id, block);
|
|
12873
|
+
} catch (error) {
|
|
12874
|
+
publish({
|
|
12875
|
+
...snapshot,
|
|
12876
|
+
error: error instanceof Error ? error.message : String(error),
|
|
12877
|
+
busy: new Set([...snapshot.busy].filter((busy) => busy !== id))
|
|
12878
|
+
});
|
|
12879
|
+
return;
|
|
12880
|
+
}
|
|
12881
|
+
await this.refresh(sessionId);
|
|
12882
|
+
},
|
|
12883
|
+
async blockRevert(sessionId, id, block) {
|
|
12884
|
+
const { error: _cleared, ...base } = snapshot;
|
|
12885
|
+
publish({
|
|
12886
|
+
...base,
|
|
12887
|
+
busy: /* @__PURE__ */ new Set([...snapshot.busy, id])
|
|
12888
|
+
});
|
|
12889
|
+
try {
|
|
12890
|
+
await port.blockRevert(sessionId, id, block);
|
|
12891
|
+
} catch (error) {
|
|
12892
|
+
publish({
|
|
12893
|
+
...snapshot,
|
|
12894
|
+
error: error instanceof Error ? error.message : String(error),
|
|
12895
|
+
busy: new Set([...snapshot.busy].filter((busy) => busy !== id))
|
|
12896
|
+
});
|
|
12897
|
+
return;
|
|
12898
|
+
}
|
|
12899
|
+
await this.refresh(sessionId);
|
|
12900
|
+
},
|
|
12483
12901
|
async open(sessionId, id, action) {
|
|
12484
12902
|
try {
|
|
12485
12903
|
await port.open(sessionId, id, action);
|
|
@@ -12532,6 +12950,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12532
12950
|
"action.langAuto": "自动",
|
|
12533
12951
|
"action.langAutoDetected": "自动:{lang}",
|
|
12534
12952
|
"action.langSelect": "高亮语言",
|
|
12953
|
+
"action.expand": "展开全屏",
|
|
12954
|
+
"action.exitFullscreen": "退出全屏",
|
|
12535
12955
|
"action.close": "关闭",
|
|
12536
12956
|
"status.kept": "已保留",
|
|
12537
12957
|
"status.reverted": "已回退",
|
|
@@ -12566,6 +12986,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12566
12986
|
"action.langAuto": "Auto",
|
|
12567
12987
|
"action.langAutoDetected": "Auto: {lang}",
|
|
12568
12988
|
"action.langSelect": "Highlight language",
|
|
12989
|
+
"action.expand": "Expand fullscreen",
|
|
12990
|
+
"action.exitFullscreen": "Exit fullscreen",
|
|
12569
12991
|
"action.close": "Close",
|
|
12570
12992
|
"status.kept": "Kept",
|
|
12571
12993
|
"status.reverted": "Reverted",
|
|
@@ -12605,6 +13027,8 @@ XID_Start XIDS`.split(/\s/).map((p) => [w(p), p]));
|
|
|
12605
13027
|
},
|
|
12606
13028
|
onKeep: (sessionId, path) => store.keep(sessionId, path),
|
|
12607
13029
|
onRevert: (sessionId, path) => store.revert(sessionId, path),
|
|
13030
|
+
onBlockKeep: (sessionId, id, block) => store.blockKeep(sessionId, id, block),
|
|
13031
|
+
onBlockRevert: (sessionId, id, block) => store.blockRevert(sessionId, id, block),
|
|
12608
13032
|
onOpen: (sessionId, id, action) => store.open(sessionId, id, action)
|
|
12609
13033
|
})
|
|
12610
13034
|
}, PendingPanel));
|