Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Incorrect octicon name crashes live preview - #1377

Merged
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists
Oct 24, 2020
Merged

Incorrect octicon name crashes live preview#1377
ang-zeyu merged 5 commits into
MarkBind:masterfrom
KendrickAng:bugfix/check-octicon-exists

Conversation

@KendrickAng

@KendrickAngKendrickAng commented Oct 18, 2020

Copy link
Copy Markdown
Contributor

What is the purpose of this pull request? (put "X" next to an item, remove the rest)

• [X] Bug fix

What is the rationale for this request?
Resolves#1266

Currently, if a user tries to use an invalid octicon, the live server crashes. On the other hand, this does not happen with glyphicons since usage of empty glyphicons just results in an empty <span glyphicon glyphicon-invalid></span>.
image

What changes did you make? (Give an overview)
Added an existence check for the octicon the user wants to use, returning an empty <span> otherwise.

Provide some example code that this change will affect:

// ensure octicons existif(iconFontType==='octicon'||iconFontType==='octiconlight'){if(!octicons.hasOwnProperty(iconFontName)){return`<span aria-hidden="true"></span>`;}}

Is there anything you'd like reviewers to focus on?
https://primer.style/octicons/packages/javascript
It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need. This would be much less of a hassle that currently having to create a new class just to resize the icon. Perhaps we could consider adding in this functionality?
image

Testing instructions:
Try serving a webpage with invalid octicon.

Proposed commit message: (wrap lines at 72 characters)
add validity check for octicons

@ang-zeyuang-zeyu left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

Let's remove the unrelated style changes and keep that to a separate pr (there's quite a few files in the markdown-it folder that should really be linted) (some not, to preserve the style of the external source we extracted it from)

@KendrickAng

Copy link
Copy Markdown
ContributorAuthor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

@ang-zeyu

ang-zeyu commented Oct 19, 2020

Copy link
Copy Markdown
Contributor

Got it! In the meantime, what do you think about extending octicon functionality to allow configuration of height and width of octicons with markdown? I mentioned in the description that It is possible for us to use the octicons API to adjust the height/width of the glyphicons we need.

This might be beneficial for users who want to manually adjust octicon width/height with minimal hassle

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

if (!octicons.hasOwnProperty(iconFontName)) {
return `<span aria-hidden="true"></span>`;
}
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it possible to combine the below checks (iconFontType === 'octicon' and `iconFontType === 'octiconlight') and only adjust the style conditionally?
so we have less repeated code down there, and integrate this check only where its needed

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, that would be much better, I'll do that

@damithc

Copy link
Copy Markdown
Contributor

hmm definitely nice to have, although icons are already responsive to font-size

If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?

Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

@KendrickAng

KendrickAng commented Oct 20, 2020

Copy link
Copy Markdown
ContributorAuthor

hmm definitely nice to have, although icons are already responsive to font-size
If we support sizing for some icons but not others it may be slightly inconsistent feature wise though.
Is it possible to add it to fa, glyph and github icons as well?
Could get user opinions from @damithc too

As @ang-zeyu mentioned, if we were to add that feature, we should do that for all three types of icons. Perhaps no need as we can use the font size to adjust the icon size?

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

@damithc

Copy link
Copy Markdown
Contributor

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

? octicons[iconFontName].toSVG({"class": iconClass})
: octicons[iconFontName].toSVG();
// ensure octicons are valid
if (!octicons.hasOwnProperty(iconFontName)) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should this be above octicons[iconFontName]? 😮

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, it shouldn't ... so sorry about that 😓

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

corrected!

@ang-zeyuang-zeyu added this to the v2.17.0 milestone Oct 24, 2020
@ang-zeyu
ang-zeyu merged commit cb9886d into MarkBind:masterOct 24, 2020
@ang-zeyu

Copy link
Copy Markdown
Contributor

Lgtm 👍

My concern was that users not familiar with css would have trouble with the usage of classes to resize the icons (I was unaware that you could use font-size to resize icons..), but I suppose it wouldn't be needed right now

My view is that it may still be convenient to be able to easily adjust just the size of the icon octicon-xx-2x vs using a wrapper <span class="..."> :octicon-xx: </span>

Perhaps we could raise this as a low priority issue? But if such cases are few and far between then maybe not worth the maintenance costs

For my own learning: what is the difference using font-size versus using height/width to resize an image? I thought using font-size was meant for text elements only

From what I understand (I could be wrong), these icons are implemented as a text font. So, they can be manipulated as text.

and any element that uses em / rem sizing #1132 (octicons are svgs)

wxwxwxwx9 pushed a commit to wxwxwxwx9/markbind that referenced this pull request Nov 1, 2020
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incorrect octicon name crashes live preview

3 participants

@KendrickAng@ang-zeyu@damithc